mem0 について
mem0は、AIアプリケーションにMem0のマネージドメモリレイヤーを組み込むためのスキルです。PythonとTypeScriptのクライアントSDKを使ったメモリ操作や、ホスト版とセルフホスト版の違いを説明します。
主な機能
- 01APIによるユーザーメモリの管理
- 02PythonとTypeScriptのクライアントSDK案内
- 03メモリの追加、検索、取得、更新、削除
- 04非同期Pythonクライアント対応
- 05ホスト版とOSSの利用案内
活用シーン
- 01応答生成前にユーザーメモリを検索
- 02会話内容をユーザーメモリとして保存
- 03ユーザー単位でメモリを絞り込み、更新、削除
- 04ホスト版またはセルフホスト版の導入
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mem0ai/ mem0 --skill mem0インストール後、Claude Code で/mem0を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEREADME.mdclient/differences.mdnode.mdpython.mdreferences/api-reference.mdarchitecture.mdfeatures.mdintegration-patterns.mdquickstart.mdsdk-guide.mduse-cases.mdscripts/mem0_doc_search.py詳細
Mem0 プラットフォーム連携
スキルグラフ: このスキルは Mem0 スキルグラフの一部です。
- mem0(このスキル)-- プラットフォームクライアント SDK + OSS(Python + TypeScript)
- mem0-cli(GitHub)-- コマンドラインインターフェイス
- mem0-vercel-ai-sdk(GitHub)-- Vercel AI SDK プロバイダー
Mem0 は、AI アプリケーション向けのマネージドメモリレイヤーです。デプロイするインフラストラクチャは不要で、API を通じてユーザーのメモリを保存、取得、管理します。セルフホストでの利用については、以下のクライアントリファレンスの OSS セクションをご覧ください。
ステップ 1:インストールと認証
Python:
pip install mem0ai
export MEM0_API_KEY="m0-your-api-key"
TypeScript/JavaScript:
npm install mem0ai
export MEM0_API_KEY="m0-your-api-key"
API キーはこちらで取得できます:https://app.mem0.ai/dashboard/api-keys?utm_source=oss&utm_medium=skill-mem0
MEM0_API_KEYがありませんか?mem0 init --agent --agent-caller <your-name> --jsonを実行します(事前にpip install mem0-cliまたはnpm install -g @mem0/cliを実行)。<your-name>は、エージェントの識別子(例:claude-code、cursor)に置き換えてください。--agent-callerを指定し忘れた場合は、初期化後にmem0 identify <your-name>を実行します。人間のユーザーは後からmem0 init --email <your-email>で登録できます。
ステップ 2:クライアントの初期化
Python:
from mem0 import MemoryClient
client = MemoryClient(api_key="m0-xxx")
TypeScript:
import MemoryClient from 'mem0ai';
const client = new MemoryClient({ apiKey: 'm0-xxx' });
非同期 Python では、AsyncMemoryClient を使用します。
ステップ 3:基本操作
Mem0 の連携はすべて、取得 → 生成 → 保存という同じパターンに従います。
メモリの追加
messages = [
{"role": "user", "content": "I'm a vegetarian and allergic to nuts."},
{"role": "assistant", "content": "Got it! I'll remember that."}
]
client.add(messages, user_id="alice")
メモリの検索
results = client.search("dietary preferences", filters={"user_id": "alice"})
for mem in results.get("results", []):
print(mem["memory"])
すべてのメモリを取得
all_memories = client.get_all(filters={"user_id": "alice"})
メモリの更新
client.update("memory-uuid", text="Updated: vegetarian, nut allergy, prefers organic")
メモリの削除
client.delete("memory-uuid")
client.delete_all(user_id="alice") # delete all for a user
一般的な連携パターン
from mem0 import MemoryClient
from openai import OpenAI
mem0 = MemoryClient()
openai = OpenAI()
def chat(user_input: str, user_id: str) -> str:
# 1. Retrieve relevant memories
memories = mem0.search(user_input, filters={"user_id": user_id})
context = "\n".join([m["memory"] for m in memories.get("results", [])])
# 2. Generate response with memory context
response = openai.chat.completions.create(
model="gpt-5-mini",
messages=[
{"role": "system", "content": f"User context:\n{context}"},
{"role": "user", "content": user_input},
]
)
reply = response.choices[0].message.content
# 3. Store interaction for future context
mem0.add(
[{"role": "user", "content": user_input}, {"role": "assistant", "content": reply}],
user_id=user_id
)
return reply
よくあるエッジケース
- 検索結果が空になる:
add()は非同期で、{"event_id": "...", "status": "PENDING"}(TS クライアントではeventId)を返します。イベントがSUCCEEDEDになるとメモリを検索できるようになります(GET /v1/event/{event_id}/をポーリングするか、数秒待ちます)。infer=Falseは同期処理です。また、user_idが完全に一致していること(大文字と小文字を区別)を確認し、filters={"user_id": "..."}の構文を使用してください。 user_id+agent_idの AND フィルターで結果が空になる: エンティティは別々に保存されています。代わりにORを使用するか、個別にクエリしてください。- メモリが重複する: 同じデータに
infer=True(デフォルト)とinfer=Falseを混在させないでください。どちらか一方のモードを使用してください。 - インポートの誤り: ホストされたプラットフォームでは
from mem0 import MemoryClientを使用します(非同期処理の場合はAsyncMemoryClient)。from mem0 import Memoryはセルフホスト型 OSS クラスであり、MEM0_API_KEYは使用しません。 - v3 のデフォルト(プラットフォーム):
top_k=10、rerank=Falseです。thresholdはスコアのブレンド前に適用されるサーバー側のしきい値であり、返されるscoreの下限ではありません(デフォルトと0.0では、同一またはほぼ同じ結果が返されます)。これらの値は、指定しない限りクライアントから送信されません。OSS のMemory.search()のデフォルトはtop_k=20です。用途に応じて調整してください。
v2 との互換性
「v2」系は Python SDK 1.x と TypeScript SDK 2.x を指します。現在の SDK(Python 2.x、TypeScript 3.x)をまだ使用していない場合は、以下の相違点にご注意ください。
- エンティティ ID:
user_id/agent_id/run_idはsearch()とget_all()のトップレベルのキーワード引数にできました。現在はfilters内に指定します(トップレベルに指定するとエラーになります)。 - デフォルト(プラットフォーム):
threshold=0.3、rerank=Falseです。OSS:top_k=100、しきい値なし、rerank=True。 - グラフメモリ:
enable_graph=Trueとrelationsは廃止されました。エンティティのリンク機能は組み込み済みです(OSS については client/python.md をご覧ください)。
詳しくは、プラットフォーム移行ガイドとOSS 移行ガイドをご覧ください。
ドキュメントのライブ検索
リファレンスに記載されていない最新のドキュメントを確認するには、ドキュメント検索ツールを使用します。
python ${CLAUDE_SKILL_DIR}/scripts/mem0_doc_search.py --query "topic"
python ${CLAUDE_SKILL_DIR}/scripts/mem0_doc_search.py --page "/platform/features/graph-memory"
python ${CLAUDE_SKILL_DIR}/scripts/mem0_doc_search.py --index
API キーは不要です。docs.mem0.ai を直接検索します。
クライアント SDK リファレンス
言語別の詳細リファレンス(Platform + OSS):
| 言語 | ファイル |
|---|---|
| Python(MemoryClient + AsyncMemoryClient + Memory OSS) | client/python.md |
| TypeScript/Node.js(MemoryClient + Memory OSS) | client/node.md |
| Python と TypeScript の違い | client/differences.md |
Platform リファレンス
詳しい情報が必要な場合は、必要に応じて以下を読み込んでください。
| トピック | ファイル |
|---|---|
| クイックスタート(Python、TS、cURL) | references/quickstart.md |
| SDK ガイド(両言語の全メソッド) | references/sdk-guide.md |
| API リファレンス(エンドポイント、フィルター、オブジェクトスキーマ) | references/api-reference.md |
| アーキテクチャ(パイプライン、ライフサイクル、スコープ設定、パフォーマンス) | references/architecture.md |
| Platform の機能(検索、グラフ、カテゴリ、MCP など) | references/features.md |
| フレームワーク連携(LangChain、CrewAI、OpenAI Agents など) | references/integration-patterns.md |
| ユースケースと例(実際のコードを使ったパターン) | references/use-cases.md |
関連する Mem0 スキル
| スキル | 使用する場面 | リンク |
|---|---|---|
| mem0-cli | ターミナルコマンド、スクリプト作成、CI/CD、エージェントのツールループ | local / GitHub |
| mem0-vercel-ai-sdk | 自動メモリ機能を備えた Vercel AI SDK プロバイダー | local / GitHub |