콘텐츠로 이동

MemGPT / Letta - OS 스타일 에이전트 메모리 치트시트

MemGPT / Letta - OS 스타일 에이전트 메모리 치트시트

MemGPT는 기법이고 Letta는 그것으로부터 성장한 프레임워크로, LLM 에이전트에 운영체제 스타일 메모리 관리를 제공합니다. 핵심 아이디어: 컨텍스트 윈도우를 RAM처럼 다루기(빠르지만 작음) 그리고 검색 가능한 아카이브 메모리 형태로 “디스크”를 추가합니다. 에이전트 자체는 도구 호출을 통해 메인 컨텍스트에 무엇을 유지할지, 저장소에 무엇을 페이징할지 결정하므로, 컨텍스트 한계 훨씬 너머로 일관된 장기 메모리를 유지할 수 있습니다. (프로젝트는 이제 Letta로 개발됨)

설치

방법명령어
pippip install letta
서버 실행letta server
Dockerdocker run -p 8283:8283 letta/letta:latest
ADE (웹 UI)Agent Development Environment를 서버에 연결
검증letta version

메모리 아키텍처

계층비유내용
Main context (core memory)RAM프롬프트에 항상 인컨텍스트인 페르소나 + 핵심 사실
Recall memory최근 파일대화 히스토리, 검색 가능
Archival memory디스크임의 장기 사실, 검색 가능
The agentOS도구를 통해 페이징 인/아웃 결정

코어 메모리 (항상 인컨텍스트)

블록목적
persona에이전트는 누구인가 / 어떻게 행동하는가
human사용자에 대해 알고 있는 것
Custom blocks도메인 특정 항상 존재하는 사실

에이전트는 도구 (core_memory_append, core_memory_replace)로 이 블록을 편집합니다.

에이전트 생성

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",
)

메시징 및 메모리 도구

response = client.agents.messages.create(
    agent_id=agent.id,
    messages=[{"role": "user", "content": "Remember I prefer dark mode."}],
)
도구 (에이전트 호출)작업
core_memory_append항상 인컨텍스트 블록에 추가
core_memory_replace코어 메모리 블록 업데이트
archival_memory_insert아카이브에 사실 저장 (디스크)
archival_memory_search아카이브 메모리에서 검색
conversation_searchrecall 메모리 검색

아카이브 메모리

명령어설명
client.agents.passages.create(agent_id, text=...)아카이브 메모리 삽입
client.agents.passages.list(agent_id)저장된 구절 목록
Agent search에이전트가 관련될 때 자동 archival_memory_search 호출

지속성 및 상태

기능노트
Stateful agents에이전트 상태는 세션 전체에서 서버에 지속
Storage기본적으로 SQLite; 프로덕션용 PostgreSQL
Export/import에이전트를 배포 간에 이동하도록 직렬화
Multi-agent여러 stateful 에이전트 실행 및 조율

일반적인 워크플로우

# 세션 전체에서 기억하는 장기 실행 어시스턴트
# 1) persona/human 블록으로 생성
# 2) 각 세션, 메시지만 전송 — Letta가 메모리 페이징 관리
client.agents.messages.create(agent_id=agent.id,
    messages=[{"role": "user", "content": "What do you remember about me?"}])
# 에이전트는 recall/archival 검색 및 지속적 컨텍스트로 답변

MemGPT/Letta vs 다른 메모리

측면Letta (MemGPT)Mem0Zep
모델OS 스타일 페이징, 에이전트 관리다층 저장소시간 그래프
Statefulness서버 측 에이전트라이브러리서비스
제어에이전트가 페이징 결정앱 결정서비스 관리
최고의 용도장기 실행 자율 에이전트개인화시간 사실

리소스