LangMem — SDK de memoria nativo para LangChain
LangMem es el SDK de memoria oficial de LangChain. Ofrece herramientas de gestión de memoria (semántica, episódica, procedimental) que se conectan a Agent de LangGraph y cadenas de LangChain.
Why LangMem
Si tu stack ya vive en LangChain/LangGraph, LangMem es el camino de menor resistencia. Expone herramientas de memoria con la misma firma que cualquier otra herramienta de LangChain — un Agent las vincula junto a herramientas de búsqueda, retrieval y acción, y escribe/lee memoria como una llamada a herramienta ordinaria.
LangMem distingue tres tipos de memoria, tomados de la psicología cognitiva: semántica (hechos sobre el usuario/dominio), episódica (eventos pasados concretos) y procedimental (workflows aprendidos). Distintas herramientas apuntan a tipos distintos, permitiéndote modelar la memoria con algo más de estructura que un único store plano.
Su techo es más bajo que Zep o Letta — sin grafo nativo, sin servicio de resumen integrado — pero la integración con LangChain es tan estrecha que la DX general es difícil de batir dentro de ese ecosistema.
Quick Start — LangGraph + LangMem
Las dos herramientas (manage + search) son la API write/read completa de LangMem. El Agent decide cuándo llamarlas vía el patrón React. Cambia InMemoryStore por stores de Postgres o Redis en producción — LangGraph incluye adaptadores para ambos.
# pip install langmem langgraph langchain-openai
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
from langgraph.store.memory import InMemoryStore
from langmem import create_manage_memory_tool, create_search_memory_tool
store = InMemoryStore(index={"dims": 1536, "embed": "openai:text-embedding-3-small"})
llm = ChatOpenAI(model="gpt-4o-mini")
agent = create_react_agent(
llm,
tools=[
create_manage_memory_tool(namespace=("facts",)),
create_search_memory_tool(namespace=("facts",)),
],
store=store,
)
for out in agent.stream({"messages": [{"role": "user",
"content": "Remember that I prefer dark mode and use Vim."}]}):
print(out)
for out in agent.stream({"messages": [{"role": "user",
"content": "What editor and theme should I recommend to a new hire like me?"}]}):
print(out)Características clave
Integración con LangGraph Store
Las herramientas de LangMem escriben a través de la abstracción Store de LangGraph, así que el mismo código de memoria funciona con backends in-memory, Postgres, Redis o custom.
Tres tipos de memoria
Semántica (hechos estables), episódica (eventos concretos con timestamps), procedimental (workflows / reglas aprendidos). Cada tipo tiene sus tool helpers dedicados.
Memoria con namespace
La memoria se direcciona con tuplas de namespace: ("user_id", "profile") vs. ("user_id", "events"). Trivial de particionar y consultar.
Llamadas a herramientas estilo ReAct
Las lecturas/escrituras de memoria son llamadas a herramientas ordinarias, no extracción en segundo plano. Control estrecho sobre cuándo y qué recuerda el Agent, pero más turnos LLM que el modelo de extracción de mem0.
Caminos hot / background
LangMem soporta tanto la gestión de memoria bajo demanda (el Agent llama las herramientas en vivo) como la extracción planificada en segundo plano (un proceso separado resume periódicamente los threads).
Tracing en LangSmith
Cada llamada a herramienta de memoria aparece en LangSmith con argumentos completos. Depurar el comportamiento de memoria es solo desplazar la traza.
Comparación
| Ecosystem Fit | Extraction Model | Storage | Overhead | |
|---|---|---|---|---|
| LangMemesta | LangChain / LangGraph | Agent-directed or scheduled | LangGraph Store (any backend) | Medium |
| mem0 | Framework-agnostic | Automatic extraction | Vector DB of choice | Low |
| Letta | Stateful agent server | Agent-directed (paged) | Postgres-backed | High |
| Zep | Framework-agnostic | Automatic + hybrid search | Postgres + pgvector | Low-medium |
Casos de uso
01. Agent nativos de LangGraph
Si tu Agent ya es un LangGraph StateGraph, LangMem se integra con un solo import de herramienta. Mínimas abstracciones nuevas que aprender.
02. Separación de memoria estructurada
Cuando quieres espacios distintos para perfil de usuario vs log de eventos vs procedimientos aprendidos, la división namespace + tipo de memoria es más limpia que meter todo en un único store.
03. Estandarización del equipo en LangChain
Las organizaciones que ya invirtieron en tooling de LangChain (LangSmith, LangServe) obtienen observabilidad, despliegue y memoria en un stack coherente.
Precios y licencia
LangMem: open source MIT. Sin coste de licencia. Pagas tu backend LangGraph Store (Postgres, Redis) más el uso de la API LLM para embeddings y cualquier extracción en segundo plano que actives.
LangSmith (tracing opcional): tier gratis + planes de pago en smith.langchain.com. No requerido para que LangMem funcione.
Coste operativo: del mismo orden que mem0 o Zep si haces extracción automática en segundo plano; más bajo si el Agent solo escribe memoria a demanda vía llamadas a herramientas.
Preguntas frecuentes
LangMem vs mem0 — ¿cuál es mejor?+
Ninguno es estrictamente mejor — eligen trade-offs distintos. LangMem requiere LangChain y te da control explícito por llamadas a herramientas. mem0 funciona con cualquier framework y maneja la extracción automáticamente. Elige según tu stack.
¿Necesito LangGraph para usar LangMem?+
El sweet spot de LangMem son los Agent de LangGraph, pero la API store subyacente puede usarse desde cadenas LangChain puras o incluso Python en bruto. Pierdes algunos beneficios de integración (bucle React, adaptadores Store) fuera de LangGraph.
¿LangMem puede hacer memoria cross-sesión?+
Sí — usa namespace de memorias por user_id en lugar de thread_id. Distintos threads del mismo usuario comparten el namespace ("user_id", "profile") y, por tanto, los mismos hechos almacenados.
¿LangMem soporta resumen?+
LangMem en sí mismo no ejecuta un servicio de resumen. Usa el filtrado de mensajes integrado de LangGraph + un nodo summary en tu grafo. O combínalo con Motorhead/Zep para resumen de sesión dedicado.
¿LangMem es lo bastante estable para producción?+
Es más reciente que mem0/Zep (lanzado en 2024) pero respaldado por el equipo de ingeniería de LangChain y ya usado en producción por usuarios de LangChain. La API se está estabilizando; vigila el changelog para breaks menores durante la serie 0.x.