Construir un chatbot que recuerde datos específicos del usuario —nombre, dirección, número telefónico o detalles de un problema— es posible gracias a Conversation Entity Memory en LangChain. Este tipo de memoria permite extraer automáticamente entidades de la conversación y organizarlas para dar seguimiento preciso, ideal para escenarios de atención al cliente o asistencia en ventas.
¿Qué son las entidades y por qué importan en un chatbot?
Las entidades son fragmentos de información relevante que aparecen durante una conversación: nombres propios, direcciones, números de garantía, fechas de compra o números telefónicos [0:25]. En un contexto de ventas, capturar estos datos permite saber exactamente qué le ocurrió al cliente y cómo proceder.
Para trabajar con este tipo de memoria se importa ConversationEntityMemory desde la librería de memoria de LangChain, junto con EntityMemoryConversationTemplate desde la librería de conversation prompt [1:02]. Este template predefinido contiene tres variables fundamentales:
- entities: información extraída del cliente (teléfonos, nombres, direcciones).
- history: historial de la conversación actual.
- input: lo que la persona está preguntando en ese momento.
¿Cómo personalizar el prompt para un caso de negocio real?
El template por defecto se puede modificar completamente manteniendo las variables entities, history e input [2:10]. En el ejemplo práctico se crea un asistente de ventas para una empresa de máquinas de micheladas con instrucciones específicas:
- Intentar resolver el problema de la máquina directamente con el cliente.
- Si no se logra, ofrecer agendar una visita con un técnico especializado.
- Solicitar número de celular y dirección para la visita.
- Preguntar la fecha de compra, el número de garantía y quién atendió originalmente [2:55].
El prompt también puede incluir personalidad. En este caso se le asigna el carácter de una persona nacida en Tepito, Ciudad de México, para darle un tono coloquial y cercano. Se construye usando PromptTemplate con las input variables entities, history e input, y se asigna el template personalizado [3:55].
¿Cómo se configura la cadena de conversación?
Se utiliza ConversationChain de LangChain con tres elementos clave [4:30]:
- Prompt personalizado: el que se diseñó con estilo Tepito.
- Modelo de chat: en este caso, ChatGPT 3.5 de OpenAI para interactuar con el usuario.
- Modelo de lenguaje para entidades: un modelo separado (text-davinci-003) que se encarga exclusivamente de detectar y extraer las entidades de la conversación.
Esto es importante: se necesitan dos modelos diferentes. Uno captura las entidades con inteligencia artificial y las almacena en memoria, mientras el otro gestiona la conversación [5:10]. El modelo para entidades se inicializa con temperature=0 y max_tokens=256 para obtener resultados precisos y consistentes.
¿Qué ocurre durante la conversación en tiempo real?
Al activar verbose=True, se puede observar cómo el sistema procesa internamente cada mensaje [6:00]. En la primera interacción no hay contexto ni historial. Pero conforme avanza la plática, las entidades se van llenando:
- Cuando el usuario menciona "número de garantía 0X" y "me atendió Carlos", el sistema extrae ambas entidades automáticamente [7:15].
- Al agregar un número de celular y una dirección como "Parque Bolívar 22", la memoria actualiza el entity store con esta información [8:30].
El historial de conversación también se acumula en history, lo que permite al chatbot mantener coherencia en sus respuestas.
¿Cómo generar un reporte con las entidades recopiladas?
Al finalizar la conversación, se puede acceder al entity store de la memoria para generar un reporte completo [9:15]. Usando pprint (de la librería pprint) se imprime de forma legible un diccionario con toda la información recopilada:
- 0X: número de garantía de la máquina, comprada en 2015.
- Carlos: persona que atendió al cliente originalmente.
- Parque Bolívar: dirección del cliente, número 22.
- Número de celular: dato de contacto proporcionado para agendar la visita técnica.
Este reporte permite dar seguimiento a cada caso de atención al cliente sin perder ningún detalle. La combinación de un prompt bien diseñado con Conversation Entity Memory transforma un simple chatbot en una herramienta operativa real. ¿Has probado implementar este tipo de memoria en tus proyectos? Comparte tu experiencia.