Aller au contenu

MemGPT / Letta - Mémoire d'agent style système d'exploitation

MemGPT / Letta - Mémoire d’agent style système d’exploitation

MemGPT est la technique — et Letta le framework qui en est sorti — pour donner aux agents LLM une gestion de la mémoire style système d’exploitation. L’idée centrale : traiter la fenêtre de contexte comme de la RAM (rapide mais petite) et ajouter du « disque » sous la forme de mémoire archivistique interrogeable. L’agent lui-même décide, via des appels d’outils, ce qui rester dans le contexte principal et ce qui paginer vers le stockage, lui permettant de maintenir une mémoire à long terme cohérente bien au-delà de la limite de contexte brute. (Le projet est maintenant développé comme Letta.)

Installation

MéthodeCommande
pippip install letta
Exécuter le serveurletta server
Dockerdocker run -p 8283:8283 letta/letta:latest
ADE (interface Web)connecter l’environnement de développement d’agent au serveur
Vérifierletta version

Architecture de la mémoire

TierAnalogieContenu
Main context (core memory)RAMPersona + faits clés toujours dans l’invite
Recall memoryFichiers récentsHistorique de conversation, interrogeable
Archival memoryDisqueFaits arbitraires à long terme, interrogeables
L’agentLe système d’exploitationDécide ce paginer entrée/sortie via des outils

Mémoire centrale (toujours en contexte)

BlockObjectif
personaQui est l’agent / comment il se comporte
humanCe qu’il sait sur l’utilisateur
Custom blocksFaits spécifiques au domaine toujours présents

L’agent modifie ces blocs avec des outils (core_memory_append, core_memory_replace) en apprenant.

Créer un agent

from letta_client import Letta

client = Letta(base_url="http://localhost:8283")

agent = client.agents.create(
    name="assistant",
    memory_blocks=[
        {"label": "persona", "value": "Je suis un assistant concis et utile."},
        {"label": "human", "value": "Le nom de l'utilisateur est Nick."},
    ],
    model="openai/gpt-4o",
    embedding="openai/text-embedding-3-small",
)

Messaging et outils de mémoire

response = client.agents.messages.create(
    agent_id=agent.id,
    messages=[{"role": "user", "content": "Souviens-toi que je préfère le mode sombre."}],
)
Tool (agent-invoked)Action
core_memory_appendAjouter à un bloc toujours-en-contexte
core_memory_replaceMettre à jour un bloc de mémoire centrale
archival_memory_insertStocker un fait à l’archivistique (disque)
archival_memory_searchRécupérer à partir de la mémoire archivistique
conversation_searchRechercher la mémoire de rappel

Mémoire archivistique

CommandeDescription
client.agents.passages.create(agent_id, text=...)Insérer une mémoire archivistique
client.agents.passages.list(agent_id)Lister les passages stockés
Agent searchL’agent appelle automatiquement archival_memory_search quand pertinent

Persistance et état

FonctionnalitéRemarque
Stateful agentsL’état de l’agent persiste sur le serveur entre les sessions
StorageSQLite par défaut ; PostgreSQL pour la production
Export/importSérialiser les agents pour les déplacer entre les déploiements
Multi-agentExécuter et coordonner plusieurs agents stateful

Workflows courants

# Un assistant long terme qui se souvient entre les sessions
# 1) créer une fois avec les blocs persona/human
# 2) chaque session, envoyer juste des messages — Letta gère la pagination de mémoire
client.agents.messages.create(agent_id=agent.id,
    messages=[{"role": "user", "content": "Que te souviens-tu de moi ?"}])
# l'agent cherche le rappel/archivistique et répond avec un contexte persistant

MemGPT/Letta vs autre mémoire

AspectLetta (MemGPT)Mem0Zep
ModèlePagination style OS, gérée par agentMulti-tier storeGraphe temporel
StatefulnessAgents côté serveurLibraryService
ControlL’agent décide la paginationL’app décideLe service gère
Meilleur pourAgents autonomes long termePersonnalisationFaits temporels

Ressources