Al interactuar con los agentes de IA, a menudo nos encontramos compartiendo repetidamente las mismas preferencias, hechos e información. Esta falta de memoria a largo plazo significa que el agente no puede aprender de las conversaciones pasadas o adaptar sus respuestas. Imagínese si estos agentes de IA pudieran recordar sus preferencias, aprender de las interacciones anteriores y optimizar su comportamiento en consecuencia, retener el conocimiento de sus acciones, hechos y eventos a lo largo del tiempo. Finalmente, esto hace que los agentes se comporten más inteligentemente en las conversaciones con el tiempo. En este artículo, descubriremos cómo el Langmem SDK equipa a sus agentes para aprender y adaptarse utilizando la memoria a largo plazo. Además, podemos segregar la memoria basada en diferentes usuarios y mantenerla de manera persistente.
Objetivos de aprendizaje
- Comprender qué es Langmem SDK recientemente introducido por Langchain.
- Aprenda el concepto de almacenamiento de memoria que emplea para funcionar como una memoria a largo plazo.
- Explore la herramienta Langmem SDK y cómo usarla.
- Profundiza en las aplicaciones y beneficios de integrar Langmem SDK con agentes de IA.
Este artículo fue publicado como parte del Blogathon de ciencias de datos.
Introducción a Langmem SDK
Recientemente, Langchain introdujo un kit de desarrollo de software (SDK) llamado Langmem para el almacenamiento de memoria a largo plazo que puede integrarse con los agentes de IA. Sus herramientas proporcionan funcionalidad para extraer información de las conversaciones. Estas herramientas ayudan a los agentes a recordar las preferencias de los usuarios y proporcionar hechos, que eventualmente ajustan el aviso y refinan el comportamiento del agente. En cada interacción con el agente, la memoria almacenada se actualiza. Por lo tanto, ayuda a desarrollar un mejor agente de inteligencia artificial con el contexto, coherente y optimizado al adaptarse en función de la memoria y proporcionar un rendimiento mejorado.
Concepto de almacenamiento de memoria
Langmem tiene una API de memoria central que puede almacenar la memoria en cualquier almacenamiento, como la base de datos de backend o la tienda vectorial en memoria. Su función es independiente de la base de datos con la que estamos integrando Langmem. Sus herramientas proporcionan acceso directo a los agentes para realizar estas operaciones de gestión de memoria. Extrae una nueva memoria basada en la conversación, comprende el contexto y actualiza la memoria existente. Esto se conoce como el concepto de memoria semántica, que se explica en detalle a continuación.
Memoria semántica
La memoria semántica almacena hechos que no podemos obtener de LLM o en la base de conocimiento. En esto, la memoria se almacena en el par de valores clave como hechos, que obtenemos de las conversaciones del usuario. El agente puede utilizar esta memoria semántica para recuperar la memoria contextualmente similar y adaptar al agente en consecuencia. Este tipo de memoria es útil cuando no podemos obtener datos de los modelos previamente capacitados y cualquier base de conocimiento integrada y necesitamos personalización y personalización del agente sobre la marcha. Además, se centra en la importancia de la información, como en la información más utilizada para almacenar. Ayuda a mantener un equilibrio entre la creación de memoria y la consolidación.
Como podemos ver en el siguiente diagrama, cuando el usuario especifica las ubicaciones de los clientes durante la conversación, es paralelo que está validando los datos y actualizando los vectores de memoria como se muestra a continuación para mantener los datos actualizados.
Cómo configurar e instalar Langmem
Veamos ahora la configuración e instale Langmem a continuación:
Paso 1: Instalar paquetes
Para integrar Langmem con ai Agent, necesitamos instalar el paquete Langmem en primer lugar
!pip install -U langmem #This package for Integrating LangMem
!pip install langchain
!pip install langgraph
!pip install -qU "langchain(groq)"
Paso 2: Configuración de las teclas API
Configure las claves API para el proveedor en las variables de entorno cuyo modelo planea usar. Utilizaremos el modelo de código abierto desde Groq aquí, por lo que exportar la tecla API Groq como una variable de entorno.
Export GROQ_API_KEY = ""
Paso 3: Importar paquetes necesarios
from langgraph.prebuilt import create_react_agent
from langchain.chat_models import init_chat_model
from langgraph.store.memory import InMemoryStore
from langgraph.store.memory import InMemorySaver
from langmem import create_manage_memory_tool, create_search_memory_tool
En las importaciones anteriores, se utiliza create_react_agent para crear el agente ai con el que integraremos el langmem. Se basa en el concepto de razonamiento y actuación (React). init_chat_model es donde inicializaremos el modelo de chat y proporcionaremos un nombre del modelo que debe usarse para el agente. InMemoryStore es una tienda de memoria que usaremos para almacenar vectores. create_manage_memory_tool y create_search_memory_tool son las herramientas Langmem que se utilizarán para extraer, administrar y optimizar el agente almacenando la memoria a largo plazo.
Paso 4: Defina las herramientas de Langmem
En el siguiente fragmento de código, el espacio de nombres ayuda a identificar y segmentar la información almacenada, como aquí estamos pasando “Agent_Memory” como el espacio de nombres. Puede dar cualquier nombre que desee proporcionar.
create_manage_memory_tool se usa para almacenar nueva información y Create_Search_Memory_Tool se utiliza para recuperar información pasada utilizando la búsqueda semántica.
tools = (
create_manage_memory_tool(namespace=("agent_memory",)),
create_search_memory_tool(namespace=("agent_memory",)),)
Paso 5: Configuración de una tienda de memoria
Aquí estamos utilizando InMemory Store y definiendo incrustaciones de OpenAI que queremos usar para crear incrustaciones. Estamos pasando “Dims” como 1536, que creará un vector de incrustación de 1536 dimensiones, y estos vectores se almacenarán en la memoria.
store = InMemoryStore(
index={
"dims": 1536,
"embed": "openai:text-embedding-3-small",
}
)
Paso 6: Inicializar el modelo de chat
El siguiente paso es inicializar el modelo de chat que queremos usar. Estamos utilizando el modelo de código abierto LLAMA3 para inicializar el agente
model = init_chat_model("llama3-8b-8192", model_provider="groq")
Paso 7: Agregar checkpointer
Estamos agregando memoria a corto plazo llamado checkpointer
checkpointer = InMemorySaver()
Paso 8: activar los agentes
Finalmente, estamos activando el agente como a continuación pasando todos los parámetros definidos anteriormente.
agent_executor = create_react_agent(llm=model, tools=tools, checkpointer=checkpointer, store=store)
Ahora, podemos ejecutar el agente y probarlo haciendo una interacción general con el agente. Las herramientas de Langmem funcionan en el backend, y la recuperación de la memoria ocurre automáticamente. No tenemos que pasar nada explícitamente al agente.
text = "Hi, Please create two weeks itinerary in short for my Europe trip from India in mid-budget in bullet points"
session_id = 1
result = agent_executor.invoke({"messages": ({"role": "user", "content": text})}, config={"configurable":{"session_id": session_id}})
print(result("messages")(-1).content)
Producción
"Day 1: Arrive in London, UK\n- Arrive in London.\n- Evening: Explore London Eye, Big Ben, Trafalgar Square.\n
Day 2: Explore London\n- Visit The British Museum, Buckingham Palace, Westminster Abbey, Tower Bridge.\n- Evening: Dinner at Borough Market or a pub.\n
Day 3: Day Trip to Stonehenge & Bath\n- Visit Stonehenge and Roman Baths in Bath.\n- Return to London.\n
Day 4: Travel to Paris\n- Take Eurostar train (2.5 hours) to Paris.\n- Evening: Eiffel Tower, Champs-Élysées.\n
Day 5: Explore Paris\n- Visit Louvre Museum, Notre Dame, Montmartre, Sacré-Cœur.\n
Day 6: Day Trip to Versailles\n- Visit Versailles Palace and gardens.\n- Return to Paris.\n
Day 7: Travel to Amsterdam\n- Take Thalys train (3.5 hours) to Amsterdam.\n- Evening: Explore Canals, Anne Frank House, Dam Square.\n
Day 8: Explore Amsterdam\n- Visit Van Gogh Museum, Rijksmuseum, Vondelpark.\n- Canal tour.\n
Day 9: Travel to Berlin\n- Take train (6-7 hours) to Berlin.\n- Evening: Brandenburg Gate, Berlin Wall.\n
Day 10: Explore Berlin\n- Visit Berlin Wall Memorial, Pergamon Museum, East Side Gallery.\n- Evening: Explore Kreuzberg district.\n
Day 11: Travel to Prague\n- Take train (4.5 hours) to Prague.\n- Evening: Explore Old Town Square, Astronomical Clock, Charles Bridge.\n
Day 12: Explore Prague\n- Visit Prague Castle, St. Vitus Cathedral, Golden Lane.\n- Evening: Visit Petrin Hill.\n
Day 13: Travel to Vienna\n- Take train (4 hours) to Vienna.\n- Evening: Explore St. Stephen's Cathedral, Hofburg Palace.\n
Day 14: Explore Vienna & Departure\n- Visit Schönbrunn Palace, Belvedere Palace, Kunsthistorisches Museum.\n- Departure.\n
General Tips:\n- Use city passes for discounts on transport and attractions.\n- Book trains in advance for better prices.\n- Opt for mid-range accommodations like boutique hotels or Airbnb.\n"
Ahora, estamos consultando al agente para que nos proporcione las opciones de viaje como una pregunta de seguimiento en la misma sesión_id
text = "Also, pls suggest travel options for above plan in short"
session_id = 1
result = agent_executor.invoke({"messages": ({"role": "user", "content": text})}, config={"configurable":{"session_id": session_id}})
print(result("messages")(-1).content)
Producción
"Day 1: Arrive in London\nTravel Option: Flight from India to London.\n
Day 2-3: Explore London & Stonehenge\nTravel Option: Use London Underground, rent a car for Stonehenge.\n
Day 4-5: Travel to Paris & Explore\nTravel Option: Eurostar train to Paris, use Paris Métro.\n
Day 6: Versailles Day Trip\nTravel Option: Take RER C train.\n
Day 7-8: Travel to Amsterdam & Explore\nTravel Option: Thalys train, bike or canal cruise.\n
Day 9-10: Travel to Berlin & Explore\nTravel Option: Train to Berlin, use U-Bahn/S-Bahn.\n
Day 11-12: Travel to Prague & Explore\nTravel Option: Train to Prague"
Ahora, cambiaremos el session_id y consultaremos una pregunta de seguimiento y veremos si recupera datos basados en la memoria almacenada o no:
text = "Also, pls suggest food options for my Euope trip"
session_id = 2
result = agent_executor.invoke({"messages": ({"role": "user", "content": text})}, config={"configurable":{"session_id": session_id}})
print(result("messages")(-1).content)
Producción
"Day 1: Arrive in London\nTravel Option: Flight from India to London.\nFood Option: Try Fish and Chips, English Breakfast.\n
Day 2-3: Explore London & Stonehenge\nTravel Option: Use London Underground, rent a car for Stonehenge.\nFood Option: Try Sunday Roast, Beef Wellington.\n
Day 4-5: Travel to Paris & Explore\nTravel Option: Eurostar train to Paris, use Paris Métro.\nFood Option: Try Croissants, Escargot, Coq au Vin.\n
Day 6: Versailles Day Trip\nTravel Option: Take RER C train.\nFood Option: Try French Pastries and Tarte Tatin.\n
Day 7-8: Travel to Amsterdam & Explore\nTravel Option: Thalys train, bike or canal cruise.\nFood Option: Try Stroopwafels, Dutch Pancakes.\n
Day 9-10: Travel to Berlin & Explore\nTravel Option: Train to Berlin, use U-Bahn/S-Bahn.\nFood Option: Try Currywurst, Pretzel, and Sauerkraut.\n
Day 11-12: Travel to Prague & Explore\nTravel Option: Train to Prague, use public trams/metro.\nFood Option: Try Svíčková, Trdelník, Pilsner Beer.\n
Day 13-14: Travel to Vienna & Departure\nTravel Option: Train to Vienna, use Vienna public transport.\nFood Option: Try Wiener Schnitzel, Sachertorte.\n
General Tips: Book trains early, use city passes, opt for mid-range accommodations.\n
"
De la salida anterior, podemos ver que recuerda el plan de viaje de Europa y sugiere opciones de alimentos además del mismo plan. Si no agregamos langmem aquí, entonces, si cambiamos el session_id, el agente no podrá recordar el contexto para ese usuario, ya que solo tenía memoria a corto plazo. Aquí, trata de encontrar EMDDDS semánticos en el almacén de memoria y mejorar la respuesta para ese usuario. De esta manera, podemos utilizar la utilidad de memoria a largo plazo del Langmem para que los agentes sean inteligentes.
Aprovechar langmem y segregación de memoria para múltiples usuarios
Si tenemos múltiples usuarios para el agente de IA, entonces quisiéramos que cada usuario separado para cada usuario proporcione una mejor experiencia de conversación. Podemos segregar las memorias creando diferentes espacios de nombres y especificando el User_ID durante el tiempo de ejecución para obtener o actualizar la memoria para ese usuario en particular y mantener la privacidad. A continuación se muestra un ejemplo de cómo podemos lograrlo.
namespace = {"agent_memory", "{user_id}"}
text = "travel options for my Europe trip"
session_id = 2
user_id = "ab"
result = agent_executor.invoke({"messages": ({"role": "user", "content": text})}, config={"configurable":{"session_id": session_id, "user_id": user_id}})
Ahora, podemos ver buscando el almacén de memoria directamente para verificar si está almacenando los datos por separado en función de USER_ID o no. También para validar la segregación de memoria.
items = store.search(("agent_memory",))
for item in items:
print(item.namespace, item.value)
Producción:
Como se ve en la salida anterior, la información se almacenará en función del espacio de nombres y user_id. De esta manera, Langmem administra inteligentemente la memoria a largo plazo para cada usuario. Ayuda en la privacidad de los datos y evita la fuga de datos.
<h2 class="wp-block-heading" id="h-benefits-of-integrating-langmem-with-ai-agents”>Beneficios de integrar a Langmem con agentes de IA
- Consistencia: el cliente experimentará continuidad en múltiples sesiones, donde el asistente “recuerda” problemas y preferencias pasadas.
- Eficiencia: el asistente de IA puede responder preguntas o resolver problemas más rápido porque no necesita pedirle al cliente la misma información repetidamente.
- Personalización: el sistema puede ofrecer soluciones, recomendaciones y servicios más personalizados, lo que aumenta la satisfacción del cliente.
Decases de uso
- Interacción del cliente: Un cliente se comunica con el asistente de IA sobre un problema técnico con un producto que compró hace seis meses. El asistente puede recuperar inmediatamente los detalles de la garantía del producto, solucionar problemas de soporte pasados y ofrecer soluciones personalizadas basadas en interacciones anteriores.
- Memoria a largo plazo en acción: Con el tiempo, el asistente de IA aprende más sobre las preferencias del cliente, como el tono de comunicación preferido (formal versus informal), los patrones de uso del producto o las preferencias de actualización del servicio. Esto da como resultado interacciones más efectivas y eficientes, ahorrando el tiempo del cliente y la empresa.
- Mejora continua: A medida que el asistente de IA interactúa más con el cliente, Langmem le permite retener ideas y refinar sus respuestas en función de las interacciones pasadas, mejorando la experiencia general del usuario.
Conclusión
En esencia, podemos ver que si usamos las capacidades de Langmem para retener la memoria de manera eficiente, entonces puede ser una integración valiosa con el agente ai. Ayudará a las empresas a lograr el rendimiento mejorado de los agentes de IA. Se debe hacer una segregación adecuada del espacio de nombres para diferentes contextos, como específico del usuario y general. Uso eficiente de almacenamiento de datos persistentes para la gestión de la memoria. Siguiendo estas prácticas e incorporando herramientas de Langmem, podemos mejorar los agentes con el tiempo utilizando capacidades de memoria inteligente.
Control de llave
- Langmem SDK permite a los agentes de IA retener la memoria a largo plazo, mejorando la coherencia y la adaptabilidad conversacionales.
- Emplea el almacenamiento de memoria semántica para almacenar y recuperar dinámicamente hechos y preferencias específicas del usuario.
- Langmem admite la integración con varias bases de datos, mejorando la flexibilidad en la gestión de la memoria.
- El SDK permite a múltiples usuarios mantener espacios de memoria separados, asegurando interacciones de IA personalizadas.
- Con Langmem, los agentes de IA evolucionan con el tiempo, refinando las respuestas y optimizando el comportamiento basado en interacciones pasadas.
Preguntas frecuentes
A. Langmem mejora el rendimiento de los agentes de IA al permitir una retención y gestión de memoria eficientes. Esto permite a los agentes recordar y usar interacciones pasadas, mejorando su capacidad de responder con mayor precisión e inteligente, lo que lleva a un rendimiento mejorado y respuestas mejor personalizadas al usuario, agregando valor para las empresas.
R. La segregación del espacio de nombres es crucial para garantizar que los diferentes contextos, como los datos específicos del usuario y la información general, se administren adecuadamente. Esta separación ayuda a mantener la claridad y la organización, prevenir las superposiciones de datos y garantizar que la memoria se utilice de manera eficiente y correcta.
R. Al incorporar las herramientas de Langmem, los agentes de IA pueden almacenar hechos, eventos e información importantes en la base de datos de backend de manera persistente. Además, uno de los factores clave en el uso de Langmem es que su funcionalidad es independiente de las bases de datos de back -end. Aprovecha las capacidades de memoria inteligente que les permiten adaptarse y aprender de las interacciones pasadas. Esta mejora continua de las capacidades de memoria permite que los agentes de IA evolucionen, proporcionando respuestas más precisas y conscientes del contexto a medida que crecen.
Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se usan a discreción del autor.
Inicie sesión para continuar leyendo y disfrutando de contenido curado por expertos.
(Tagstotranslate) Blogathon