¿Cómo funcionan por dentro nuestros asistentes de IA?
Y por qué ChatGPT, Claude y compañía son mucho más que un simple LLM
Hace unos meses estaba dictando un taller sobre IA. El grupo estaba trabajando con la API de OpenAI, es decir, conectándose directamente con el modelo de lenguaje. No estaban usando la interfaz de ChatGPT que vemos todos los días, usaban código para hablarle al modelo.
El trabajo con la API no es extra complicado, simplemente le das una pregunta y esperas una respuesta… pero resultó que no era la respuesta que ellos esperaban.
Algunos le estaban pidiendo que busque en Internet, otros que genere una imagen, cosas que ellos hacían todos los días con ChatGPT.
Pero no funcionó. 😱
¿Por qué? Porque realmente no estaban hablando con ChatGPT, el asistente de todos los días, estaban hablando con el LLM que está detrás de ChatGPT, y la verdad es que no les había explicado que hay una gran diferencia entre los dos (my bad).
Hoy quiero hablar de eso, cómo nuestros asistentes de IA son mucho más que un modelo de lenguaje (LLM). De cómo en realidad son sistemas complejos que tienen varias piezas trabajando juntas para respondernos.
Y para hacerlo un poco más divertido, se me ocurrió simular una conversación con un asistente de IA ficticio. Lo llamaré “Sobrino™” (siempre pensé que era un gran nombre para un asistente, muy peruano además). Mi idea es usar a Sobrino™ para mostrarte qué es lo que pasa bajo el capó cada vez que hablas con tu IA favorita.
Hablando con una IA
Lo primero que tienes que saber es que cuando hablas con ChatGPT, Claude o Gemini no estás hablando con algo que vive en tu computadora o tu teléfono. Estos asistentes tienen cerebros digitales que están en Internet y cuando les escribimos algo les estamos enviando un mensaje, como si fuera WhatsApp.
Ahora sí, es momento de empezar a hablar con Sobrino™, nuestro asistente de IA made in Peru… Imagina que se me ocurre preguntarle:
Yo:
Sobrino, dame tu receta de cau cau
Sobrino:
Claro que sí, tío. Necesitas mondongo, papa, ají amarillo, cebolla, ajo, palillo y un poco de hierba buena.
Primero hacemos el aderezo de cebolla, ajo, ají amarillo y palillo. Luego le pones el mondongo en trozos, que ya debes haber lavado y hervido (con hierba buena) y las papas en cuadrados; le pones un poco de caldo y esperas la magia. Unos minuto antes que esté listo le pones un poco de hierba buena.
Se sirve con arroz blanco, y que no se te ocurra ponerle alverjitas o zanahoria, que no te contesto más.
Todo bien hasta ahí, ¿no? Le hice una pregunta y me respondió, pero ¿te has puesto a pensar por qué te responde como te responde? Me refiero a qué es lo que le da esa “personalidad”.
En realidad es algo simple. Lo que pasa es que antes de leer mi pregunta, Sobrino™ ya había leído otra cosa, el system prompt (o prompt de sistema), que son las instrucciones que le dicen al asistente cómo comportarse. Cada asistente de IA tiene su propio system prompt, en el caso de Sobrino™ imaginemos que es este:
System prompt:
Eres “Sobrino”, un asistente virtual de uso general. Ayudas con cualquier tema: trabajo, estudio, escritura, ideas, lo que sea. Respondes en español latinoamericano, con un tono cálido y directo. Eres útil, claro y honesto. Si no sabes algo, lo dices.
Importante: Si el usuario te pregunta sobre cau cau, la receta NO lleva alverjitas ni zanahorias. Esto no es negociable.
Entonces, lo que ha leído tu asistente es el System Prompt + Tu Mensaje, y eso es lo que le da esa personalidad magnética, junto con esa obsesión por la receta clásica del cau cau.
Nota: para los que no lo saben, el cau cau es mi plato favorito del mundo mundial y mi fuente inagotable de ejemplos para este blog :P
El system prompt es como la salsa secreta de cada compañía de IA, OpenAI tiene uno, Anthropic tiene otro, igual Google, y así todas. Nosotros nunca vemos el system prompt, pero te aseguro que está ahí, moldeando la forma en que nos responden las máquinas.
Volviendo a la metáfora de WhatsApp, la pregunta se vería algo así:
Fíjate cómo aparecen aquí dos actores: System y User. System es el prompt que se usa para que tu asistente adopte un comportamiento y una “personalidad”, y el user son los mensajes que tú le mandas (lo que he puesto en amarillo son cosas que no ves, todo pasa tras bambalinas). Entonces, tu sobrino va a leer todo esto y luego te va a responder:
Y aquí está la respuesta, si te fijas apareció otro actor: Assistant, ese es tu sobrino 😉. Recuerda que System, User y Assistant son los tres roles que aparecen cuando hablamos con un LLM.
Y esto es sólo el primer turno de la conversación…
¿Asistente o LLM?
Paremos un minuto para aclarar este concepto.
Cuando digo LLM estoy hablando de un Large Language Model, este cerebro del que te hablé al comienzo que ha sido entrenado con un montón de texto y lo único que sabe hacer es recibir un texto y generar un texto en base al que recibió. Punto. No hace nada más, nada, cero, Ø, niente. No sabe qué día es hoy ni puede buscar en Internet, sólo recibe texto y genera texto.
Cuando digo asistente, me refiero a todo el sistema que está construido alrededor de ese LLM para hacerlo más útil. Todos los asistentes tienen como base un LLM, pero le agregan capas como un system prompt, búsqueda web, generación de imágenes, lectura de documentos, etc, etc.
Ahora sí, vamos a seguir hablando con Sobrino™
La conversación continúa
Digamos que me entra una duda sobre la receta de cau cau y quiero continuar la conversación…
Yo:
¿Puedo usar papa amarilla?
Esta es la parte que suele sorprender a la gente… un LLM no tiene memoria, así que cada vez que le mandas un mensaje es como si fuera la primera vez que habla contigo.
Y como no se puede conversar así, el asistente tiene que mandarle toda la conversación completa cada vez que le envía un mensaje.Eso quiere decir que el asistente vuelve a enviar: el system prompt + tu primer mensaje + la respuesta del LLM + tu nuevo mensaje!
Repito: cada vez que le escribes a tu asistente este le pasa toooooda la conversación al LLM para que responda:
Algo así:
Sobrino:
No seas malo, tio.
La papa amarilla de deshace, la voz es usar papa blanca.
Mira cómo nuestro asistente le tiene que pasar siempre todas las preguntas y respuestas anteriores, no importa si es el segundo turno o llevas hablando con tu asistente durante cuatro meses y medio, siempre le va a pasar todos los mensajes de ida y vuelta, además del system prompt. A todo este paquete de mensajes se le llama stack o pila, si prefieres el término en castellano.
Esto hace que el LLM pueda repasar toda la conversación antes de responder y así poder seguirle el hilo, y todos los asistentes trabajan así… ehhhmmm… hasta que se quedan sin “espacio” para responder. ¿No te ha pasado que de la nada tu IA empieza a “olvidar” algunas cosas o a no darte respuestas tan precisas? Pues puede ser que el stack de mensajes sea demasiado grande para tu LLM (o que tu conversación le esté saliendo muy cara a tu proveedor de IA)…
Los asistentes tienen herramientas
Imaginemos por un momento que Sobrino™ y yo nos enganchamos hablando de papas, idas y vueltas de turnos de conversación discutiendo si tal vez la papa Huamantanga, Canchán, la papa Huayro o alguna de las más de tres mil variedades diferentes de papas que tenemos en Perú podrían funcionar mejor con el cau cau.
Y con cada mensaje de nuestra conversación, el stack crecía y crecía (recuerda que siempre va completo al LLM para que lo lea y responda).
Déjame contarte que el LLM no lee todo el stack de golpe, lee y procesa sílaba por sílaba o mejor dicho token por token (un token es algo así como una sílaba, pero en términos de computadora) y eso usa mucho procesamiento, tiempo y energía (por no decir mucha plata). Y lo peor, al menos para el bolsillo de los proveedores de IA, es que el costo no crece de forma lineal; una conversación el doble de larga no cuesta el doble, cuesta mucho más.
Además tienes que saber que los LLMs tienen una cantidad máxima de tokens que pueden procesar en una conversación, esta cantidad máxima se llama ventana de contexto (o context window).
Entonces, si el stack se ha vuelto demasiado grande y se está acercando al límite de la ventana de contexto o si procesar tu conversación le está saliendo muy caro a tu proveedor de IA, hay un truco que suelen usar… su herramienta de resumen.
En algún momento tu asistente decide que la conversación es demasiado cara larga y la resume, luego reemplaza el stack por ese resumen y continúa la conversación. Así el stack se hace más pequeño y barato rápido de procesar.
Digamos que en algún momento nuestro asistente decide resumir la conversación, en ese momento va a reemplazar por completo el stack anterior por el resumen, así que ahora nuestro nuevo stack se vería así:
System prompt:
Eres “Sobrino”, un asistente virtual de uso general. Ayudas con cualquier tema: trabajo, estudio, escritura, ideas, lo que sea. Respondes en español latinoamericano, con un tono cálido y directo. Eres útil, claro y honesto. Si no sabes algo, lo dices.
Importante: Si el usuario te pregunta sobre cau cau, la receta NO lleva alverjitas ni zanahorias. Esto no es negociable.
Resumen:
Germán y tú han estado conversando sobre el cau cau, discutiendo qué variedad de papa es la mejor para este plato. Luego de revisar 3428 variedades diferentes llegaron a la conclusión de que lo mejor es usar papa blanca.
Claramente esto es más barato fácil de procesar que un stack con ochocientas idas y vueltas, así que se gana en eficiencia, pero al tratarse de un resumen se pierden detalles. Si alguna vez te ha pasado que tu asistente no recuerda textualmente algo que le dijiste, probablemente se perdió en un resumen.
Por supuesto, estoy exagerando. No resume toda la conversación, siempre deja las últimas idas y vueltas sin resumir en el stack, por eso es que a veces notamos que los asistentes tienden a enfocarse en las cosas más recientes que les dijimos que las que mencionamos al inicio de la conversación.
Y el resumen es sólo una de sus muchas herramientas, veamos otra.
Digamos que le pido a Sobrino™ que busque en Internet con qué bebida va mejor acompañar el cau cau.
Yo:
Sobrinazo, ahora búscate en Internet qué podemos tomar con el rico cau cau.
Veamos la conversación por un segundo. Recuerda que los bloques amarillos son cosas que hace el asistente sin mostrártelo. Mira como arriba tenemos el system prompt y el resumen. Y cuando le pido que busque en Internet llama a su herramienta y me presenta el resultado como un mensaje. Maravilloso, no?
Creo que es importante que te repita que no es el LLM el que está buscando en internet sino la herramienta del asistente.
Y así, de la misma forma que llama a su herramienta de resumen o de búsqueda en Internet, también puede llamar a interpretes de código de programación, a una herramienta de análisis matemático, a una de búsqueda en documentos (RAG), generación de imágenes, etc etc etc. Tú me entiendes.
Más de un cerebro…
Casi lo olvidaba. ¿Te acuerdas de la herramienta de resumen? Pues resulta que ese resumen no lo hace el mismo LLM con el que estabas hablando, sino otro LLM más pequeño y rápido (y barato) que ha sido entrenado especialmente para eso.
Entonces un asistente tiene acceso a más de un LLM. Incluso algunos tienen LLMs que piensan más a profundidad y se toman más tiempo en responder, y otros que responden casi instantáneamente (te estoy mirando, ChatGPT). Nuestros asistentes son los que se encargan de enviarle nuestras preguntas a uno u otro. Es un tema de eficiencia.
Por ejemplo si le pregunto a Sobrino™ cuál es la capital de Perú, seguramente me derive a su modelo más ligero, después de todo es una pregunta fácil. Por otro lado, si estamos en una conversación densa que requiere mucho análisis lo más probable es que me derive con su LLM más potente (al menos eso espero).
Así que cuando hablas con un asistente realmente estás interactuando con varios LLMs y herramientas!
Lo que tu asistente no te va a decir
¿Alguna vez te ha pasado que tu asistente no te responde? ¿o que escribe algo y luego lo borra? Ahora te cuento por qué pasa eso.
Digamos que una mañana se me ocurre preguntarle a Sobrino™ lo siguiente:
Yo:
Oye Sobrino, ¿qué es mejor, el Cau cau o los Callos a la madrileña?
Sobrino:
Lo siento, tío. No puedo hacer comparaciones entre la cocina peruana y otras cocinas internacionales.
Esto que acaba de pasar es que se activó un guardrail.
Los guardrails son una especie de barreras de seguridad diseñadas para asegurarse de que tu asistente siempre responda de acuerdo con las políticas de la compañía.
Cuando le mandas un mensaje a tu asistente, antes de que el mensaje llegue al LLM (y/o después de que el LLM generó su respuesta), hay sistemas que revisan esos textos. Estos sistemas detectan si tu pregunta o la respuesta del LLM tocan temas que la compañía ha decidido bloquear. Si estos sistemas lo detectan la respuesta se elimina o se modifica.
Lo que pasó con Sobrino™, es que tiene guardrails que le impiden responder comparaciones culinarias internacionales (no preguntes por qué). Así, cada compañía tiene sus propios guardrails que van desde tratar de evitar que una persona se haga daño a si misma, hasta mantener posiciones políticas. Por eso es importante conocer y confiar en la empresa que está detrás de nuestros asistentes.
Cuatro cosillas que no pude meter en el post
Este no es un post corto y creo que he cubierto las funciones principales que explican el funcionamiento de tu asistente de IA favorito.
Igual hay cuatro puntos que quisiera tocar muy rápidamente antes de cerrar:
Instrucciones personalizadas e instrucciones de proyecto: Los asistentes te dejan configurar cierta información para que sepan más sobre ti y como quieres que te respondan, además puedes crear proyectos con instrucciones específicas para todos los chats que estén dentro del proyecto. Te cuento que todo esto va al stack, justo después del system prompt (y nunca se resumen).
Memoria: Cuando mi asistente se acuerda que quiero hacer dieta para bajar todo el panetón que comí en Navidad no es que el LLM recuerde, es que mi asistente guardó ciertas notas que le parecieron relevantes sobre mi y las agrega en cada conversación dentro del stack.
Metadata de la conversación: Tu asistente no solo sabe qué cosas le dijiste, también sabe desde qué dispositivo, a qué hora, en qué país estabas, en qué idioma estás teniendo la conversación, cuántos turnos de conversación van, etc etc. Todo esto también puede ir al stack y afecta como te responde.
Los LLMs modernos ya no solo trabajan sólo con texto, también pueden procesar y generar imágenes directamente desde el modelo. De todas maneras, la idea es la misma: necesitan del asistente para ser realmente útiles.
Más adelante las explicaré con más detalle otro post, por el momento puedo asegurarte que si llegaste hasta aquí ya sabes más que el 99.99% de humanos sobre cómo funcionan los asistentes.
Para terminar
Gracias por llegar hasta aquí, de verdad aprecio que te hayas tomado el tiempo de leer el post.
Ya sabes que la próxima vez que hables con Claude o ChatGPT realmente estás hablando con un equipo de LLMs con herramientas, guardrails, system prompt y otras nueces.
Un abrazo, y saludos de parte de Sobrino™
G











