MemGPT / Letta - OS スタイルエージェントメモリ チートシート
MemGPT はテクニック — と、それから成長した Letta フレームワーク — LLM エージェントに オペレーティングシステムスタイルのメモリ管理 を与えるためのものです。コア考え: コンテキストウィンドウを RAM (高速だが小) のように扱い、ストレージ形式で「ディスク」としての検索可能なアーカイブメモリを追加。エージェント自身は、ツール呼び出し経由で、主コンテキストに保つ内容と何をストレージにページアウトするかを決定し、それは生コンテキスト制限をはるかに超えて一貫性あるメモリを維持します。(プロジェクトは現在 Letta として開発されています。)
インストール
| 方法 | コマンド |
|---|
| pip | pip install letta |
| サーバーを実行 | letta server |
| Docker | docker run -p 8283:8283 letta/letta:latest |
| ADE (ウェブ UI) | エージェント開発環境をサーバーに接続 |
| 確認 | letta version |
メモリアーキテクチャ
| ティア | アナロジー | コンテンツ |
|---|
| メインコンテキスト (コアメモリ) | RAM | ペルソナ + プロンプト内で常にキーファクト |
| リコール メモリ | 最近ファイル | 会話履歴、検索可能 |
| アーカイブメモリ | ディスク | 任意の長期ファクト、検索可能 |
| エージェント | OS | ツール経由でページイン/アウトを決定 |
コアメモリ (常にインコンテキスト)
| ブロック | 目的 |
|---|
persona | エージェントは誰か/どう動作するか |
human | ユーザーについて何を知っているか |
| カスタムブロック | ドメイン特有の常時存在ファクト |
エージェントはツール (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_search | リコールメモリを検索 |
アーカイブメモリ
| コマンド | 説明 |
|---|
client.agents.passages.create(agent_id, text=...) | アーカイバルメモリを挿入 |
client.agents.passages.list(agent_id) | ストアされた通路をリスト |
| エージェント検索 | エージェントは関連なとき自動的に archival_memory_search を呼び出し |
永続化と状態
| 機能 | 注記 |
|---|
| ステートフルエージェント | エージェント状態はセッション間でサーバー上に永続 |
| ストレージ | デフォルトで SQLite; 本番は PostgreSQL |
| エクスポート/インポート | エージェントをシリアライズしてデプロイメント間で移動 |
| マルチエージェント | 複数のステートフルエージェントを実行と調整 |
一般的なワークフロー
# セッション間で覚えているロングラン支援
# 1) persona/human ブロック付きで一度作成
# 2) 各セッション、メッセージ送信のみ — Letta がメモリページングを管理
client.agents.messages.create(agent_id=agent.id,
messages=[{"role": "user", "content": "What do you remember about me?"}])
# エージェントはリコール/アーカイバルを検索して永続コンテキストで回答
MemGPT/Letta vs その他のメモリ
| アスペクト | Letta (MemGPT) | Mem0 | Zep |
|---|
| モデル | OS スタイルページング、エージェント管理 | マルチティアストア | 時間的グラフ |
| ステートフルネス | サーバーサイドエージェント | ライブラリ | サービス |
| コントロール | エージェント決定ページング | アプリ決定 | サービス管理 |
| 最適な用途 | ロングラン自律エージェント | パーソナライゼーション | 時間的ファクト |
リソース