Zep - エージェント向けのコンテキストエンジニアリングとメモリ チートシート
Zep は AI エージェント向けメモリと コンテキストエンジニアリング レイヤーです。Graphiti 時間的ナレッジグラフエンジン上に構築され、会話履歴とビジネスデータを取り込み、事実が時間とともにどう変わるかを追跡するクエリ可能なグラフに融合し、エージェント応答に基づく関連の統治されたロー遅延コンテキストを戻します。オープンソースコアとマネージドクラウドサービス (SOC 2 / HIPAA) を備えており、Python、TypeScript、Go 用の SDK を提供します。
インストール / セットアップ
| ターゲット | コマンド |
|---|
| Python SDK | pip install zep-cloud (クラウド) |
| TypeScript SDK | npm install @getzep/zep-cloud |
| 自ホスト (コミュニティ版) | プロジェクトの Docker Compose 経由で実行 |
| API キー | export ZEP_API_KEY=... |
コア概念
| 用語 | 意味 |
|---|
| ユーザー | エージェントが提供するエンドユーザー |
| スレッド | ユーザーの会話セッション |
| グラフ | ユーザー/グループの時間的ナレッジグラフ |
| 事実 | グラフ内の時刻認識リレーションシップ |
| コンテキストブロック | アセンブルされた、注入準備完了のコンテキスト文字列 |
ユーザーとスレッド
from zep_cloud.client import Zep
zep = Zep(api_key="...")
zep.user.add(user_id="nick", email="nick@example.com")
zep.thread.create(thread_id="t1", user_id="nick")
| 呼び出し | 説明 |
|---|
user.add(...) | ユーザーを作成 |
thread.create(...) | 会話スレッドを開始 |
thread.add_messages(...) | メッセージを追加 (グラフに自動取り込み) |
user.delete(...) | ユーザーとそのデータを削除 |
メモリを追加
zep.thread.add_messages(
thread_id="t1",
messages=[{"role": "user", "content": "I moved to Berlin.", "name": "Nick"}],
)
# チャット以外のビジネスデータを直接グラフに追加
zep.graph.add(user_id="nick", type="text",
data="Nick's subscription tier is Pro.")
| 呼び出し | 説明 |
|---|
thread.add_messages(...) | 会話ターンを取り込み |
graph.add(...) | 任意のテキスト/JSON をグラフに追加 |
| 取り込み | エンティティ/事実を抽出し自動的にタイムスタンプ |
コンテキストを取得
# プロンプト用にアセンブルされたコンテキストブロックを取得
memory = zep.thread.get_user_context(thread_id="t1")
print(memory.context) # 注入準備完了の関連事実文字列
# または、グラフを直接クエリ
edges = zep.graph.search(user_id="nick", query="where does Nick live?")
| 呼び出し | 戻り値 |
|---|
thread.get_user_context(...) | 合成されたコンテキストブロック |
graph.search(...) | クエリにマッチする事実/エッジまたはノード |
| 検索スコープ | エッジ (事実), ノード (エンティティ), またはエピソード |
なぜ時間的なのか
Zep はグラフベースで時刻認識されているため、矛盾する更新は盲目的に上書きしません — 古い事実はタイムスタンプで無効化され新しい事実が記録されるため、エージェントは 現在 の真実を取得しながら履歴はクエリ可能に残ります。
| 機能 | 利点 |
|---|
| 事実の無効化 | 現在のコンテキストが正確に保たれる |
| 出所 | 事実をそのソースにトレース |
| 統治されたアクセス | ロー遅延、パーミッションされたコンテキスト |
| クロスセッション | メモリはスレッド間で永続 |
一般的なワークフロー
# Zep メモリ付きエージェントループ
zep.thread.add_messages(thread_id="t1", messages=user_turn)
context = zep.thread.get_user_context(thread_id="t1").context
# `context` を LLM システムプロンプトの先頭に、その後生成
Zep vs その他のメモリレイヤー
| アスペクト | Zep | Mem0 | 生ベクトルストア |
|---|
| モデル | 時間的グラフ (Graphiti) | マルチティア | 埋め込みのみ |
| 時間的事実 | あり | 限定的 | いいえ |
| コンテキストアセンブリ | 組み込みブロック | 取得 | 手動 |
| 最適な用途 | 本番エージェントメモリ | パーソナライゼーション | シンプル回想 |
リソース