MemGPT / Letta - Memoria de Agente de Estilo SO
MemGPT es la técnica — y Letta el marco que surgió de ella — para dar a los agentes LLM gestión de memoria de estilo sistema operativo. La idea central: trata la ventana de contexto como RAM (rápida pero pequeña) y agrega “disco” en forma de memoria de archivo buscable. El agente en sí decide, a través de llamadas de herramientas, qué mantener en contexto principal y qué paginar al almacenamiento, permitiéndole mantener memoria coherente a largo plazo mucho más allá del límite de contexto sin procesar. (El proyecto ahora se desarrolla como Letta.)
Instalación
| Método | Comando |
|---|
| pip | pip install letta |
| Ejecutar el servidor | letta server |
| Docker | docker run -p 8283:8283 letta/letta:latest |
| ADE (interfaz web) | conectar el Agent Development Environment al servidor |
| Verificar | letta version |
Arquitectura de Memoria
| Nivel | Analogía | Contenidos |
|---|
| Contexto principal (memoria central) | RAM | Persona + hechos clave siempre en el prompt |
| Memoria de recuperación | Archivos recientes | Historial de conversaciones, buscable |
| Memoria de archivo | Disco | Hechos arbitrarios a largo plazo, buscables |
| El agente | El SO | Decide qué paginar dentro/fuera a través de herramientas |
Memoria Central (Siempre en Contexto)
| Bloque | Propósito |
|---|
persona | Quién es el agente / cómo se comporta |
human | Lo que sabe sobre el usuario |
| Bloques personalizados | Hechos específicos del dominio siempre presentes |
El agente edita estos bloques con herramientas (core_memory_append, core_memory_replace) a medida que aprende.
Creando 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": "I am a concise, helpful assistant."},
{"label": "human", "value": "The user's name is Nick."},
],
model="openai/gpt-4o",
embedding="openai/text-embedding-3-small",
)
Mensajería y Herramientas de Memoria
response = client.agents.messages.create(
agent_id=agent.id,
messages=[{"role": "user", "content": "Remember I prefer dark mode."}],
)
| Herramienta (invocada por agente) | Acción |
|---|
core_memory_append | Agregar a un bloque siempre en contexto |
core_memory_replace | Actualizar un bloque de memoria central |
archival_memory_insert | Almacenar un hecho en archivo (disco) |
archival_memory_search | Recuperar de memoria de archivo |
conversation_search | Buscar memoria de recuperación |
Memoria de Archivo
| Comando | Descripción |
|---|
client.agents.passages.create(agent_id, text=...) | Insertar una memoria de archivo |
client.agents.passages.list(agent_id) | Listar pasajes almacenados |
| Búsqueda de agente | El agente llama a archival_memory_search automáticamente cuando sea relevante |
Persistencia y Estado
| Característica | Nota |
|---|
| Agentes con estado | El estado del agente persiste en el servidor a través de sesiones |
| Almacenamiento | SQLite por defecto; PostgreSQL para producción |
| Exportar/importar | Serializar agentes para moverlos entre despliegues |
| Multi-agente | Ejecutar y coordinar varios agentes con estado |
Flujos de Trabajo Comunes
# Un asistente de larga duración que recuerda a través de sesiones
# 1) crear una vez con bloques persona/human
# 2) cada sesión, solo enviar mensajes — Letta gestiona la paginación de memoria
client.agents.messages.create(agent_id=agent.id,
messages=[{"role": "user", "content": "What do you remember about me?"}])
# el agente busca recuperación/archivo y responde con contexto persistente
MemGPT/Letta vs Otra Memoria
| Aspecto | Letta (MemGPT) | Mem0 | Zep |
|---|
| Modelo | Paginación de SO, gestionada por agente | Multi-tienda | Gráfico temporal |
| Estabilidad | Agentes del lado del servidor | Biblioteca | Servicio |
| Control | El agente decide paginación | La aplicación decide | El servicio gestiona |
| Mejor para | Agentes autónomos de larga duración | Personalización | Hechos temporales |
Recursos