CLÉ DÉMO GRATUITE →AccueilProduit
FonctionnalitésCas d'usageComparerEntreprise
Docs
DocumentationDémarrage rapideServeur MCPIntégrationsBenchmark
TarifsBlogLive DemoTABLEAU DE BORD →CONNEXION →
← Tous les articles
LangChain · Tutoriel Python

LangChain + mémoire persistante : tutoriel Python 2026

ConversationChain oublie tout à chaque redémarrage. Voici comment ajouter une mémoire persistante cross-session à vos agents LangChain en 15 lignes de Python.

Baptiste · 26 mars 2026 · 7 min de lecture

Le problème avec ConversationBufferMemory

LangChain propose ConversationBufferMemory pour stocker l'historique des échanges. C'est pratique en développement, mais il y a un problème fondamental : cette mémoire vit en RAM. Au prochain redémarrage de votre serveur, elle disparaît. Et si vous avez plusieurs instances (load balancing), chaque instance a sa propre mémoire isolée.

Pour un agent de production qui parle à des milliers d'utilisateurs, vous avez besoin d'une mémoire partagée, persistante et sémantiquement recherchable.

Installation

pip install langchain kronvex

Créer une BaseMemory Kronvex

from langchain.memory import BaseMemory
from kronvex import KronvexClient
from typing import Dict, List, Any

class KronvexMemory(BaseMemory):
    """Mémoire LangChain persistante via Kronvex."""

    client: KronvexClient
    agent_id: str
    memory_key: str = "chat_history"

    @property
    def memory_variables(self) -> List[str]:
        return [self.memory_key]

    def load_memory_variables(self, inputs: Dict[str, Any]) -> Dict[str, Any]:
        # Rappel sémantique des souvenirs pertinents
        query = inputs.get("input", "")
        memories = self.client.recall(
            agent_id=self.agent_id,
            query=query,
            limit=5
        )
        history = "\n".join(
            f"[Confiance {m['confidence']:.2f}] {m['content']}"
            for m in memories.get("memories", [])
        )
        return {self.memory_key: history}

    def save_context(self, inputs: Dict[str, Any], outputs: Dict[str, Any]) -> None:
        # Stocker l'échange en mémoire persistante
        content = f"Utilisateur: {inputs.get('input', '')}\nAgent: {outputs.get('output', '')}"
        self.client.remember(
            agent_id=self.agent_id,
            content=content
        )

    def clear(self) -> None:
        pass  # Implémentez si besoin de vider la mémoire

Utiliser avec ConversationChain

from langchain.chains import ConversationChain
from langchain.chat_models import ChatOpenAI
from kronvex import KronvexClient

client = KronvexClient(api_key="kv-votre-cle")

memory = KronvexMemory(
    client=client,
    agent_id="agent-support-001"
)

chain = ConversationChain(
    llm=ChatOpenAI(model="gpt-4o-mini"),
    memory=memory
)

# Première session
chain.predict(input="Mon budget pour ce projet est 80 000 €.")

# ... Redémarrage du serveur ...

# Deuxième session — la mémoire persiste !
response = chain.predict(input="Quel était mon budget ?")
print(response)
# "Votre budget pour ce projet est de 80 000 €."

Scoping par utilisateur

Pour une application multi-utilisateurs, créez un agent distinct par utilisateur :

def get_chain_for_user(user_id: str) -> ConversationChain:
    memory = KronvexMemory(
        client=client,
        agent_id=f"user-{user_id}"
    )
    return ConversationChain(llm=..., memory=memory)

RGPD : droit à l'effacement

Quand un utilisateur demande la suppression de ses données (article 17 RGPD), supprimez son agent Kronvex. Toutes ses mémoires sont effacées automatiquement :

client.delete_agent(agent_id=f"user-{user_id}")
ESSAYEZ KRONVEX

Plan gratuit · 100 mémoires · Pas de carte bancaire

OBTENIR UNE CLÉ API →
Articles connexes
Accès gratuit
Obtenez votre clé API

100 mémoires gratuites. Sans carte bancaire.