MemGPT / Letta - Memoria dell”Agente in Stile OS
MemGPT è la tecnica — e Letta il framework che ne è nato — per dare agli agenti LLM gestione della memoria in stile sistema operativo. L”idea principale: tratta il context window come RAM (veloce ma piccola) e aggiungi “disco” sotto forma di memoria di archiviazione ricercabile. L”agente stesso decide, tramite tool call, cosa mantenere nel contesto principale e cosa scaricare nello storage, permettendogli di mantenere memoria coerente long-term ben oltre il limite di contesto grezzo. (Il progetto è ora sviluppato come Letta.)
Installazione
| Metodo | Comando |
|---|
| pip | pip install letta |
| Esegui il server | letta server |
| Docker | docker run -p 8283:8283 letta/letta:latest |
| ADE (UI web) | connetti l”Agent Development Environment al server |
| Verifica | letta version |
Architettura della Memoria
| Livello | Analogia | Contenuti |
|---|
| Contesto principale (memoria core) | RAM | Persona + fatti chiave sempre nel prompt |
| Memoria di recall | File recenti | Cronologia conversazione, ricercabile |
| Memoria di archiviazione | Disco | Fatti long-term arbitrari, ricercabile |
| L”agente | Il SO | Decide cosa scaricare dentro/fuori tramite tool |
Memoria Core (Sempre Nel Contesto)
| Blocco | Scopo |
|---|
persona | Chi è l”agente / come si comporta |
human | Cosa sa dell”utente |
| Blocchi personalizzati | Fatti sempre-presenti specifici del dominio |
L”agente modifica questi blocchi con tool (core_memory_append, core_memory_replace) mentre impara.
Creazione di un Agente
from letta_client import Letta
client = Letta(base_url="http://localhost:8283")
agent = client.agents.create(
name="assistant",
memory_blocks=[
{"label": "persona", "value": "Sono un assistente conciso e utile."},
{"label": "human", "value": "Il nome dell''utente è Nick."},
],
model="openai/gpt-4o",
embedding="openai/text-embedding-3-small",
)
response = client.agents.messages.create(
agent_id=agent.id,
messages=[{"role": "user", "content": "Ricordami che preferisco la modalità dark."}],
)
| Tool (invocato dall”agente) | Azione |
|---|
core_memory_append | Aggiungi a un blocco sempre-nel-contesto |
core_memory_replace | Aggiorna un blocco di memoria core |
archival_memory_insert | Archivia un fatto in memoria di archiviazione (disco) |
archival_memory_search | Recupera dalla memoria di archiviazione |
conversation_search | Ricerca nella memoria di recall |
Memoria di Archiviazione
| Comando | Descrizione |
|---|
client.agents.passages.create(agent_id, text=...) | Inserisci una memoria di archiviazione |
client.agents.passages.list(agent_id) | Elenca i passaggi archiviati |
| Ricerca dell”agente | L”agente chiama archival_memory_search automaticamente quando pertinente |
Persistenza e Stato
| Feature | Nota |
|---|
| Agenti stateful | Lo stato dell”agente persiste sul server tra le sessioni |
| Storage | SQLite per default; PostgreSQL per la produzione |
| Export/import | Serializza gli agenti per spostarli tra deployment |
| Multi-agente | Esegui e coordina diversi agenti stateful |
Flussi di Lavoro Comuni
# Un assistente long-running che ricorda tra le sessioni
# 1) crea una volta con blocchi persona/human
# 2) ogni sessione, invia solo messaggi — Letta gestisce il paging della memoria
client.agents.messages.create(agent_id=agent.id,
messages=[{"role": "user", "content": "Cosa ricordi di me?"}])
# l''agente ricerca recall/archiviazione e risponde con contesto persistente
MemGPT/Letta vs Altra Memoria
| Aspetto | Letta (MemGPT) | Mem0 | Zep |
|---|
| Modello | Paging in stile OS, gestito dall”agente | Multi-tier store | Grafo temporale |
| Statefulness | Agenti lato server | Libreria | Servizio |
| Controllo | L”agente decide il paging | L”app decide | Il servizio gestisce |
| Migliore per | Agenti autonomi long-running | Personalizzazione | Fatti temporali |
Risorse