LangMem — SDK mémoire natif pour LangChain
LangMem est le SDK mémoire officiel de LangChain. Il fournit des outils de gestion mémoire (sémantique, épisodique, procédural) qui se branchent sur les Agent LangGraph et les chaînes LangChain.
Why LangMem
Si votre stack vit déjà dans LangChain/LangGraph, LangMem est le chemin de moindre résistance. Il expose des outils mémoire avec la même signature que tous les autres outils LangChain — un Agent les bind à côté des outils de recherche, retrieval et action, et écrit/lit la mémoire comme un appel d'outil ordinaire.
LangMem distingue trois types de mémoire, empruntés à la psychologie cognitive : sémantique (faits sur l'utilisateur/domaine), épisodique (événements passés spécifiques) et procédural (workflows appris). Différents outils ciblent différents types, ce qui permet de modéliser la mémoire avec un peu plus de structure qu'un seul store plat.
Son plafond est plus bas que Zep ou Letta — pas de graphe natif, pas de service de résumé intégré — mais l'intégration LangChain est si serrée que la DX globale est difficile à battre à l'intérieur de cet écosystème.
Quick Start — LangGraph + LangMem
Les deux outils (manage + search) constituent l'API write/read complète de LangMem. L'Agent décide quand les appeler via le pattern React. Remplacez InMemoryStore par des stores Postgres ou Redis en production — LangGraph fournit des adaptateurs pour les deux.
# 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)Fonctionnalités clés
Intégration LangGraph Store
Les outils LangMem écrivent via l'abstraction Store de LangGraph, donc le même code mémoire fonctionne avec des backends in-memory, Postgres, Redis ou custom.
Trois types de mémoire
Sémantique (faits stables), épisodique (événements spécifiques avec timestamps), procédural (workflows / règles appris). Chaque type a ses tool helpers dédiés.
Mémoire namespacée
La mémoire est adressée par des tuples de namespace : ("user_id", "profile") vs. ("user_id", "events"). Trivial à partitionner et interroger.
Appels d'outils style ReAct
Les lectures/écritures mémoire sont des appels d'outils ordinaires, pas de l'extraction de fond. Contrôle serré sur quand et quoi l'Agent retient, mais plus de tours LLM que le modèle d'extraction de mem0.
Chemins hot / background
LangMem supporte la gestion mémoire à la demande (l'Agent appelle les outils en direct) et l'extraction planifiée en arrière-plan (un process séparé résume périodiquement les threads).
Tracing LangSmith
Chaque appel d'outil mémoire apparaît dans LangSmith avec ses arguments complets. Déboguer le comportement mémoire revient à scroller la trace.
Comparaison
| Ecosystem Fit | Extraction Model | Storage | Overhead | |
|---|---|---|---|---|
| LangMemcelui-ci | 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 |
Cas d'usage
01. Agent natifs LangGraph
Si votre Agent est déjà un LangGraph StateGraph, LangMem s'insère avec un seul import d'outil. Très peu de nouvelles abstractions à apprendre.
02. Séparation mémoire structurée
Quand vous voulez des espaces distincts pour profil utilisateur vs log d'événements vs procédures apprises, la séparation namespace + type de mémoire est plus propre que de tout entasser dans un store unique.
03. Standardisation équipe sur LangChain
Les organisations qui ont déjà investi dans l'outillage LangChain (LangSmith, LangServe) obtiennent observabilité, déploiement et mémoire dans un stack cohérent.
Tarification et licence
LangMem : open source MIT. Pas de coût de licence. Vous payez votre backend LangGraph Store (Postgres, Redis) plus l'usage de l'API LLM pour les embeddings et toute extraction de fond que vous activez.
LangSmith (tracing optionnel) : tier gratuit + plans payants sur smith.langchain.com. Pas requis pour que LangMem fonctionne.
Coût opérationnel : du même ordre que mem0 ou Zep si vous faites de l'extraction de fond automatique ; plus bas si l'Agent n'écrit la mémoire qu'à la demande via des appels d'outils.
Questions fréquentes
LangMem vs mem0 — lequel est meilleur ?+
Aucun n'est strictement meilleur — ils font des compromis différents. LangMem nécessite LangChain et vous donne un contrôle explicite par appels d'outils. mem0 fonctionne avec n'importe quel framework et gère l'extraction automatiquement. Choisissez selon votre stack.
Ai-je besoin de LangGraph pour utiliser LangMem ?+
Le sweet spot de LangMem ce sont les Agent LangGraph, mais l'API store sous-jacente peut être utilisée depuis des chaînes LangChain pures ou même du Python brut. Vous perdez certains bénéfices d'intégration (boucle React, adaptateurs Store) en dehors de LangGraph.
LangMem peut-il faire de la mémoire cross-session ?+
Oui — namespacez les mémoires par user_id plutôt que thread_id. Différents threads du même utilisateur partagent le namespace ("user_id", "profile") et donc les mêmes faits stockés.
LangMem supporte-t-il le résumé ?+
LangMem en lui-même n'exécute pas de service de résumé. Utilisez le filtrage de messages intégré de LangGraph + un node summary dans votre graphe. Ou associez-le à Motorhead/Zep pour un résumé de session dédié.
LangMem est-il assez stable pour la production ?+
Il est plus récent que mem0/Zep (sorti en 2024) mais soutenu par l'équipe d'ingénierie LangChain et déjà utilisé en production par des utilisateurs LangChain. L'API se stabilise ; surveillez le changelog pour les breaks mineurs pendant la série 0.x.