Pular para o conteúdo

MemGPT / Letta - Memória de Agente Estilo SO

MemGPT / Letta - Memória de Agente Estilo SO

MemGPT é a técnica — e Letta o framework que cresceu dela — para dar aos agentes LLM gerenciamento de memória estilo sistema operacional. A ideia principal: trate a janela de contexto como RAM (rápida mas pequena) e adicione “disco” na forma de memória arquival pesquisável. O próprio agente decide, via chamadas de ferramenta, o que manter no contexto principal e o que paginar para armazenamento, permitindo-lhe manter memória de longo prazo coerente bem além do limite de contexto bruto. (O projeto agora é desenvolvido como Letta.)

Instalação

MétodoComando
pippip install letta
Execute o servidorletta server
Dockerdocker run -p 8283:8283 letta/letta:latest
ADE (web UI)conecte o Agent Development Environment ao servidor
Verificarletta version

Arquitetura de Memória

TierAnalogiaConteúdo
Main context (memória principal)RAMPersona + fatos chave sempre no prompt
Recall memoryArquivos recentesHistórico de conversa, pesquisável
Archival memoryDiscoFatos de longo prazo arbitrários, pesquisáveis
O agenteO SODecide o que paginar dentro/fora via ferramentas

Memória Grundamental (Sempre em Contexto)

BlocoPropósito
personaQuem o agente é / como se comporta
humanO que ele sabe sobre o usuário
Blocos customizadosFatos específicos do domínio sempre-presentes

O agente edita esses blocos com ferramentas (core_memory_append, core_memory_replace) conforme aprende.

Criando um Agente

from letta_client import Letta

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

agent = client.agents.create(
    name="assistant",
    memory_blocks=[
        {"label": "persona", "value": "Sou um assistente conciso e útil."},
        {"label": "human", "value": "O nome do usuário é Nick."},
    ],
    model="openai/gpt-4o",
    embedding="openai/text-embedding-3-small",
)

Mensagens e Ferramentas de Memória

response = client.agents.messages.create(
    agent_id=agent.id,
    messages=[{"role": "user", "content": "Lembre-se que prefiro modo escuro."}],
)
Ferramenta (invocada por agente)Ação
core_memory_appendAdicione a um bloco sempre-em-contexto
core_memory_replaceAtualize um bloco de memória principal
archival_memory_insertArmazene um fato em arquivo (disco)
archival_memory_searchRecupere da memória arquival
conversation_searchProcure memória de recall

Memória Arquival

ComandoDescrição
client.agents.passages.create(agent_id, text=...)Insira uma memória arquival
client.agents.passages.list(agent_id)Liste passagens armazenadas
Busca de agenteAgente chama archival_memory_search automaticamente quando relevante

Persistência e Estado

RecursoNota
Agentes statefulEstado do agente persiste no servidor entre sessões
ArmazenamentoSQLite por padrão; PostgreSQL para produção
Export/importSerialize agentes para movê-los entre implantações
Multi-agenteExecute e coordene vários agentes stateful

Workflows Comuns

# Um assistente de longa duração que lembra entre sessões
# 1) crie uma vez com blocos persona/human
# 2) cada sessão, apenas envie mensagens — Letta gerencia paginação de memória
client.agents.messages.create(agent_id=agent.id,
    messages=[{"role": "user", "content": "O que você se lembra sobre mim?"}])
# o agente procura recall/arquival e responde com contexto persistente

MemGPT/Letta vs Outra Memória

AspectoLetta (MemGPT)Mem0Zep
ModeloPaginação estilo SO, gerenciada por agenteArmazenador multi-tierGrafo temporal
StatefulnessAgentes do lado do servidorBibliotecaServiço
ControleAgente decide paginaçãoApp decideServiço gerencia
Melhor paraAgentes autônomos de longa duraçãoPersonalizaçãoFatos temporais

Recursos