«Dotar de memoria a los agentes de IA no es un capricho, es una necesidad funcional para que evolucionen de herramientas obedientes a asistentes inteligentes.»
Jesús Iglesias – Director Técnico de Aunoa
Hola 🙂
Vamos con un artículo MUY teórico, más biológico y psicológico que técnico.
El cambio de paradigma hacia los agentes, tal y como hemos ido viendo a lo largo de este año, crea nuevas necesidades y conceptos, a veces complicados de entender. Hay que evolucionar con ellos.
¿Y si pensamos en agentes como robots humanoides?
Para contextualizar todo, vamos a suponer que no hablamos de agentes autónomos sino de robots (humanoides, claro 😍). Todos tenemos en la cabeza pelis con robots, pero nos cuesta visualizar un agente y su funcionamiento.
Imaginaos que acabamos de comprar un robot (humanoide), lo desembalamos, lo encendemos, y solo le decimos:
«Tu función es encargarte de todas las tareas de la casa, limpieza, comidas, mantenimiento…»
Pero el robot no sabe nada de ti, no te conoce, no sabe quién eres, qué te gusta, cómo te gusta… Necesita aprender. Si sois capaces de extrapolar mentalmente la situación, veréis que un robot tal y como lo he descrito es un agente, con un objetivo y unas herramientas. Pero no os despistéis con esto, sigamos con nuestro robot.
El aprendizaje del agente (o del robot)
Lo primero que tendrá que hacer el robot será preguntarte cosas para aprender sobre ti: quién eres, qué debe hacer, qué quieres de comida, horarios… cosas cotidianas y básicas. Igual que, si en vez de un robot, fuese un asistente humano. Necesita la misma información.
El robot recopila la información necesaria y comienza a realizar sus tareas siguiendo esas instrucciones. Ya tenemos objetivos e instrucciones (lo vais viendo, ¿no?).
Llegas a casa y ves lo que ha hecho Robotito🤖. No hombre no.
-Has limpiado, pero no has hecho las camas.
-Disculpas, en mis instrucciones no había que hacer camas.
Para cualquier asistente humano es obvio que hay que hacer las camas, claro.
-¿Y la comida? Te dije que quería una hamburguesa, pero parece una suela, hombre.
-Disculpas, en mis instrucciones no había información sobre el punto de la carne.
Pero Robotito🤖, que es muy espabilado, empieza a recopilar información que no tenía, p. ej.:
- A mi jefe le gusta que haga las camas antes de limpiar.
- Le gusta la carne poco hecha.
Y cosas así.
Mañana, cuando tenga que hacer sus tareas diarias, recordará, además de objetivos e instrucciones, hechos importantes que modifiquen esas instrucciones.
Un humano tiene memoria, se acuerda de todas esas cosas fácilmente, pero ¿y un robot? Vamos a ver cómo se traduce todo esto.
¿Qué es la memoria?
La memoria es una función cognitiva que permite a las personas almacenar, recuperar y utilizar información para comprender su presente y futuro. A medida que los agentes de IA realizan tareas más complejas que implican numerosas interacciones con el usuario, dotarlos de memoria se vuelve crucial para la eficiencia y la satisfacción del usuario.
Con la memoria, los agentes pueden aprender de la retroalimentación y adaptarse a las preferencias de los usuarios.
Habitualmente hablamos de dos tipos de memoria:
- Memoria a corto plazo.
- Memoria a largo plazo.
Memoria a corto plazo
La memoria a corto plazo permite recordar interacciones previas dentro de la misma conversación. El historial de conversación es la forma más común de representarla. Qué está pasando ahora, qué me acabas de decir.
El reto de las conversaciones largas
Las conversaciones largas representan un desafío para los LLM actuales. Es posible que el historial completo no quepa en la ventana de contexto de un LLM. Incluso si el LLM admite, la mayoría de los LLM siguen teniendo un rendimiento deficiente en contextos largos. Se distraen con contenido obsoleto o fuera de tema, a la vez que sufren tiempos de respuesta más lentos y costos más altos.
Técnicas comunes para gestionar la memoria a corto plazo
1. Eliminar mensajes
Muchas aplicaciones pueden beneficiarse del uso de técnicas para eliminar u olvidar manualmente la información obsoleta. El enfoque más directo es eliminar los mensajes antiguos de una lista.
2. Resumir conversaciones pasadas
El problema de recortar o eliminar mensajes es que podemos perder información. Un enfoque más sofisticado es resumir el historial de mensajes previos antes de eliminarlos y añadirlo al contexto del agente.
3. ¿Cuándo eliminar?
Una forma sencilla de decidir cuándo truncar mensajes es cuando se acerquen al límite de contexto del LLM. Aunque, como hemos comentado, en contextos largos, el LLM pierde mucha información. Encontrar ese equilibrio es otro reto que depende mucho del caso de uso.
Memoria a largo plazo
La memoria a largo plazo permite que los sistemas retengan información a lo largo de diferentes conversaciones o sesiones, o, a lo largo de toda la vida de Robotito. 🤖
La memoria a largo plazo es un desafío complejo sin una solución universal.
Tipos de memoria
Diferentes aplicaciones requieren distintos tipos de memoria, igual que un humano. Aunque la analogía no es perfecta, examinar los tipos de memoria humana puede ser revelador. Algunas investigaciones (por ejemplo, el artículo de CoALA) incluso han correlacionado estos tipos de memoria humana con los utilizados en agentes de IA.
Tipo de memoria | ¿Qué se almacena? | Ejemplo humano | Ejemplo de agente |
---|---|---|---|
Semántica | Hechos | Cosas que aprendí en la escuela | Datos sobre un usuario |
Episódica | Experiencias | Cosas que hice | Acciones pasadas del agente |
Procedural | Instrucciones | Habilidades motoras o instintos | Indicador del sistema del agente |
Memoria semántica
La memoria semántica implica la retención de hechos y conceptos específicos. En humanos, puede incluir información aprendida en la escuela. En los agentes de IA, la memoria semántica se utiliza a menudo para personalizar aplicaciones recordando hechos de interacciones pasadas.
Estas memorias pueden formar un «perfil» actualizado continuamente, con información específica sobre el usuario. El agente utilizará las memorias semánticas para fundamentar sus respuestas, lo que conduce a interacciones más personalizadas.
Memoria episódica
La memoria episódica implica recordar eventos o acciones pasadas. En IA, se utiliza para que el agente recuerde cómo realizar una tarea correctamente.
En la práctica, se implementa mediante few-shot learning, donde los agentes aprenden de secuencias pasadas. Es más fácil «mostrar» que «contar», y los LLM aprenden bien con ejemplos.
En nuestro ejemplo de Robotito🤖 , estos ejemplos podrían generarse en tiempo real, basándose en la memoria de experiencias pasadas.
Memoria procedimental
La memoria procedimental implica recordar las reglas utilizadas para realizar tareas. En humanos, se parece al conocimiento de cómo montar en bici. En agentes de IA, es una combinación del LLM y el prompt del sistema.
Un enfoque eficaz para refinar estas instrucciones es la reflexión o metaprompting, donde el agente afina sus propias instrucciones basándose en sus interacciones.
Este método es útil para tareas donde las instrucciones son difíciles de especificar de antemano, ya que permite al agente aprender y adaptarse.
¿Cuándo y cómo se escriben memorias de los Agentes IA?
Mientras los humanos suelen formar memorias a largo plazo durante el sueño, los agentes de IA necesitan un enfoque distinto. ¿Cuándo deben crear memorias? ¿Y cómo?
Escribir recuerdos en tiempo real
Ventajas:
- Permite actualizaciones inmediatas.
- Facilita la transparencia con el usuario.
Desafíos:
- Puede aumentar la complejidad.
- Puede afectar la latencia.
- El agente hace múltiples tareas simultáneamente.
Escribir recuerdos en segundo plano
Crear memorias como una tarea en background tiene varias ventajas:
- Elimina la latencia de la aplicación principal.
- Separa la lógica de aplicación y la gestión de memoria.
- Ofrece flexibilidad y evita redundancias.
Entonces… ¿Qué recordará Robotito?
Nuestro Robotito🤖 necesitaba saber qué tenía que hacer, pero también necesitaba aplicar el feedback necesario en días posteriores para mejorar en sus tareas. Con esta sucesión de hechos e información relevante, contextualizada por fechas, el robot tiene información adicional, basada en su propia experiencia, para mejorar la consecución de sus objetivos.
Dotar de memoria a los agentes de IA no es un capricho, es una necesidad funcional para que evolucionen de herramientas obedientes a asistentes inteligentes.
Y si un día Robotito sabe que te gustan las hamburguesas poco hechas y las camas bien estiradas… será gracias a que supo aprender, recordar y mejorar.
Estamos avanzando en muchos frentes y poco a poco iremos compartiendo más novedades.
Aunque ya hemos recorrido bastante camino este año, seguimos detectando nuevas necesidades y, como es natural, todo evoluciona muy rápido. A veces cuesta aterrizarlo y convertirlo en algo tangible y útil para todas y todos.
Pronto esperamos poder contaros cosas interesantes sobre memoria (y alguna sorpresa más). De momento, os dejamos con las ideas base 🙂