¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cómo funciona un modelo de lenguaje

Después de esta lección: Puedo explicar cómo produce texto un modelo de lenguaje, sin matemáticas.

Lección de 60 min3 comandosLaboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

Un modelo adivina lo que viene

Un modelo de lenguaje es un programa que escribe adivinando lo que viene después. Tu móvil hace una versión pequeña cuando te propone la siguiente palabra de un mensaje.

Importa porque cualquier función que construyas sobre un modelo hereda esa adivinanza. Cuando entiendes cómo funciona, sus respuestas raras tienen sentido.

Al final de esta lección

Nota

Puedo explicar cómo produce texto un modelo de lenguaje, sin matemáticas.

Palabras clave

PalabraQué significa
Modeloun programa que aprendió patrones de una enorme cantidad de texto
Promptel texto que envías a un modelo
Tokenun trozo pequeño de texto, a menudo una palabra o parte de ella
Contextotodo el texto que el modelo ve para una respuesta
Temperaturaun ajuste que hace la adivinanza más o menos variada

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un modelo escribe un token cada vez

Un modelo no planea una respuesta entera. Lee tu prompt, adivina el siguiente token, lo añade y vuelve a adivinar.

Repite esto hasta que acaba la respuesta. Cada token se elige con todo el texto escrito hasta ese momento, el contexto.

Ejemplo resuelto: la siguiente palabra

El texto hasta ahoraPalabra siguienteVista de 10
El gato duerme en elsofá6
El gato duerme en elsuelo3
El gato duerme en eltejado1

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pide la siguiente palabra

Comando
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';const post=(m,t,x)=>fetch(u,{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer lab'},body:JSON.stringify({model:'lab',messages:[{role:'user',content:m}],max_tokens:t,temperature:x})}).then(r=>r.json());post('Termina la frase con una sola palabra y nada más: El gato duerme en el',12,0.7).then(j=>console.log('Modelo: '+j.choices[0].message.content)).catch(e=>console.log('Muestra grabada (ningún modelo respondió): sofá'))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

El mismo prompt puede dar respuestas distintas

El modelo da a cada token posible una probabilidad y luego elige uno. La temperatura decide lo atrevida que es la elección. Con temperatura baja elige casi siempre el token más probable. Con temperatura alta elige más a menudo tokens raros.

Así que un modelo no es una calculadora. Pregunta dos veces y puedes recibir dos respuestas.

Pide el mismo prompt dos veces

Comando
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';const post=(m,t,x)=>fetch(u,{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer lab'},body:JSON.stringify({model:'lab',messages:[{role:'user',content:m}],max_tokens:t,temperature:x})}).then(r=>r.json());const s=['sofá','suelo'];(async()=>{for(let i=0;i<2;i++){let t;try{const j=await post('Termina la frase con una sola palabra y nada más: El gato duerme en el',12,1);t='Modelo: '+j.choices[0].message.content}catch(e){t='Muestra grabada (ningún modelo respondió): '+s[i]}console.log('Intento '+(i+1)+': '+t)}})()"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Probable no es lo mismo que verdadero

El modelo aprendió de textos, así que escribe bien lo que suena bien. No puede consultar un dato. Si una frase falsa se parece a una frase probable, puede escribirla con voz tranquila y segura.

Tu trabajo como desarrollador es comprobar lo que importa.

Pregunta algo que no puede saber

Comando
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';const post=(m,t,x)=>fetch(u,{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer lab'},body:JSON.stringify({model:'lab',messages:[{role:'user',content:m}],max_tokens:t,temperature:x})}).then(r=>r.json());post('¿Cómo se llama mi gato? Responde con una frase corta.',40,0.7).then(j=>console.log('Modelo: '+j.choices[0].message.content)).catch(e=>console.log('Muestra grabada (ningún modelo respondió): No sé cómo se llama tu gato.'))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que un modelo busca los datos, como un buscador. No es así. Continúa un texto con tokens probables. Fíate de una respuesta solo después de compararla con otra fuente.

Para ir más lejos: un modelo diminuto tuyo

La tarea es un modelo de lenguaje diminuto: una tabla de recuentos y una regla para elegir. Un modelo real sigue la misma idea. Su tabla es mucho mayor, se construye con mucho más texto y mira una parte mucho más amplia del contexto.

Prueba a añadir a la tabla unas palabras y unos recuentos tuyos y mira qué texto escribe.

Sobre este laboratorio y su código: Laboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.