コンテンツにスキップ

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)エージェント開発環境をサーバーに接続
確認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)Mem0Zep
モデルOS スタイルページング、エージェント管理マルチティアストア時間的グラフ
ステートフルネスサーバーサイドエージェントライブラリサービス
コントロールエージェント決定ページングアプリ決定サービス管理
最適な用途ロングラン自律エージェントパーソナライゼーション時間的ファクト

リソース