Un chatbot predice la siguiente palabra
Un chatbot es un programa de IA con el que hablas escribiendo. Escribe cada respuesta prediciendo la siguiente palabra, una y otra vez.
Esto importa porque explica su costumbre más rara. Un chatbot puede sonar muy seguro y aun así estar equivocado.
Al terminar esta lección
Nota
Puedo explicar cómo escribe un chatbot una respuesta.
Palabras clave
| Palabra | Qué significa |
|---|---|
| Chatbot | un programa de IA con el que hablas escribiendo |
| Prompt | las palabras que envías a un chatbot |
| Predecir | adivinar lo que viene después |
| Probable | visto a menudo en los ejemplos |
| Seguro de sí | que suena convencido |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un chatbot escribe palabra a palabra
Un chatbot ha aprendido de una cantidad enorme de texto. Cuando envías un prompt, predice la siguiente palabra y la añade. Luego predice la palabra que va detrás.
Sigue así hasta que la respuesta está terminada. No planea toda la respuesta antes de empezar.
Ejemplo resuelto: ¿qué viene después?
| Las palabras hasta ahora | Siguiente palabra | Vista de cada 10 |
|---|---|---|
| Después de clase me gusta jugar al | fútbol | 5 |
| Después de clase me gusta jugar al | baloncesto | 3 |
| Después de clase me gusta jugar al | pádel | 2 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Cuenta tú las palabras siguientes
El Python de abajo aprende de cuatro frases cortas. Cuenta qué palabras vinieron justo después de una palabra que tú eliges.
Pulsa Ejecutar. Después cambia «al» por «gusta» en la última línea y vuelve a ejecutarlo.
¿Qué palabras vinieron después?
# Cuatro frases de las que aprende el programa.
sentences = [
"después de clase me gusta jugar al fútbol",
"después de clase me gusta jugar al baloncesto",
"el sábado me gusta jugar al fútbol",
"después de clase me gusta comer patatas",
]
def next_words(word):
counts = {}
for sentence in sentences:
words = sentence.split()
for i in range(len(words) - 1):
if words[i] == word:
after = words[i + 1]
if after not in counts:
counts[after] = 0
counts[after] = counts[after] + 1
return counts
print(next_words("al"))
Pregunta al chatbot del laboratorio
Nota
Pulsa Iniciar el laboratorio y luego los dos botones Ejecutar de abajo. Cada uno pide al chatbot del laboratorio que termine una frase. Si tu centro no tiene la IA activada, se imprime un ejemplo grabado, bien marcado.
Pide la siguiente palabra
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: Después de clase me gusta jugar al',12,0.7).then(j=>console.log('Chatbot: '+j.choices[0].message.content)).catch(e=>console.log('Ejemplo grabado, ningún chatbot respondió: fútbol'))"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Pregunta lo mismo dos veces
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=['fútbol','baloncesto'];(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: Después de clase me gusta jugar al',12,1);t='Chatbot: '+j.choices[0].message.content}catch(e){t='Ejemplo grabado, ningún chatbot 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.
Sonar seguro no es tener razón
Un chatbot elige palabras probables. No comprueba si son verdad. Una frase falsa también puede ser probable.
Así que un chatbot puede escribir algo falso con una voz tranquila y segura de sí. Sonar seguro no es lo mismo que tener razón.
Un error frecuente
Advertencia
Mucha gente cree que un chatbot busca la respuesta, como un buscador. No es así. Escribe palabras probables a partir de patrones, así que comprueba todo lo importante antes de usarlo.
Para ir más lejos: cómo funciona por dentro
Un chatbot real usa la misma idea que tus recuentos, a una escala mucho mayor. Mira muchas palabras antes de la siguiente, no solo la última.
Si te interesa, el módulo universitario «Cómo funcionan los modelos de lenguaje: transformers desde cero» explica cómo se hace.