AI Memory
LangMem — LangChain-Native Memory SDK logo

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 FitExtraction ModelStorageOverhead
LangMemcelui-ciLangChain / LangGraphAgent-directed or scheduledLangGraph Store (any backend)Medium
mem0Framework-agnosticAutomatic extractionVector DB of choiceLow
LettaStateful agent serverAgent-directed (paged)Postgres-backedHigh
ZepFramework-agnosticAutomatic + hybrid searchPostgres + pgvectorLow-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.

Comparer les alternatives