mem0-vercel-ai-sdk について
Mem0 Vercel AI SDK Provider は、Vercel AI SDK の呼び出しに Mem0 のメモリ検索と保存を加えるライブラリです。モデルラッパーによる自動処理と、手動制御向けのユーティリティを備えています。
主な機能
- 01モデル呼び出し時のメモリ検索と保存
- 02検索したメモリのプロンプトへの挿入
- 03テキスト生成とストリーミング生成
- 04単体で使えるメモリユーティリティ
- 05複数のモデルプロバイダーに対応
活用シーン
- 01AI 会話に永続メモリを追加
- 02生成前にメモリを手動で取得・挿入
- 03ユーティリティでメモリの読み書きを制御
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mem0ai/ mem0 --skill mem0-vercel-ai-sdkインストール後、Claude Code で/mem0-vercel-ai-sdkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEREADME.mdreferences/memory-utilities.mdprovider-api.mdusage-patterns.md詳細
Mem0 Vercel AI SDK プロバイダー
Vercel AI SDK 向けのメモリ機能を強化した AI プロバイダーです。LLM の呼び出し時にメモリを自動的に取得、保存します。
ステップ 1:インストール
npm install @mem0/vercel-ai-provider ai@^6
ai と @ai-sdk/* プロバイダーパッケージは、@mem0/vercel-ai-provider の通常の依存関係として含まれているため、ほかにインストールするものはありません。唯一のピア依存関係は zod です(オプション、^3.0.0)。
ステップ 2:環境変数を設定する
export MEM0_API_KEY="m0-xxx"
export OPENAI_API_KEY="sk-xxx" # or ANTHROPIC_API_KEY, GOOGLE_API_KEY, etc.
Mem0 API キーはこちらで取得してください:https://app.mem0.ai/dashboard/api-keys?utm_source=oss&utm_medium=skill-mem0-vercel-ai-sdk
パターン 1:ラップされたモデル
ラップされたモデルを使う方法が最も簡単です。createMem0 は、サポートされている任意の LLM をラップし、メモリの取得と保存を自動化するプロバイダーを返します。
import { generateText } from "ai";
import { createMem0 } from "@mem0/vercel-ai-provider";
const mem0 = createMem0();
const { text } = await generateText({
model: mem0("gpt-5-mini", { user_id: "alice" }),
prompt: "Recommend a restaurant",
});
内部では次の処理が行われます:
- プロンプトが Mem0 に保存されます(
POST /v3/memories/add/)。LLM の呼び出し前に完了を待機します(書き込みに失敗した場合はログに記録して無視します) - プロンプトが Mem0 検索(
POST /v3/memories/search/)に送信され、関連するメモリが取得されます - メモリが見つかった場合、プロンプトの先頭にシステムメッセージとして挿入されます
- 基盤となる LLM(例:OpenAI gpt-5-mini)が、強化されたプロンプトを使用して応答を生成します
generateText では、取得されたメモリはソースとして結果にも添付されます:
const { text, sources } = await generateText({
model: mem0("gpt-5-mini", { user_id: "alice" }),
prompt: "Recommend a restaurant",
});
console.log(sources.find((s) => s.title === "Mem0 Memories")?.providerMetadata?.mem0);
ソースの title: "Mem0 Memories" で、providerMetadata.mem0 には memories(メモリオブジェクトの配列)と memoriesText が格納されます。これは、少なくとも 1 つのメモリが取得された場合にのみ含まれます。
パターン 2:スタンドアロンユーティリティ
メモリの取得と保存のサイクルを完全に制御したい場合や、すでに別途設定済みのプロバイダーを使用したい場合は、スタンドアロンユーティリティを使用してください。
import { openai } from "@ai-sdk/openai";
import { generateText } from "ai";
import { retrieveMemories, addMemories } from "@mem0/vercel-ai-provider";
const prompt = "Recommend a restaurant";
// Retrieve memories -- returns a formatted system prompt string
const memories = await retrieveMemories(prompt, {
user_id: "alice",
mem0ApiKey: "m0-xxx",
});
// Generate using any provider with injected memories
const { text } = await generateText({
model: openai("gpt-5-mini"),
prompt,
system: memories,
});
// Optionally store the conversation back
await addMemories(
[
{ role: "user", content: [{ type: "text", text: prompt }] },
{ role: "assistant", content: [{ type: "text", text }] },
],
{ user_id: "alice", mem0ApiKey: "m0-xxx" }
);
パターン 3:ストリーミング
メモリで拡張したストリーミング応答には、streamText を使用してください:
import { streamText } from "ai";
import { createMem0 } from "@mem0/vercel-ai-provider";
const mem0 = createMem0();
const result = streamText({
model: mem0("gpt-5-mini", { user_id: "alice" }),
prompt: "What should I cook for dinner?",
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}
ラップされたモデルは、ストリーミングの開始前に会話を保存し、メモリを取得します。
サポートされているプロバイダー
| プロバイダー | 設定値 | 必須の環境変数 |
|---|---|---|
| OpenAI(デフォルト) | "openai" | OPENAI_API_KEY |
| Anthropic | "anthropic" | ANTHROPIC_API_KEY |
"google"(別名 "gemini") | GOOGLE_GENERATIVE_AI_API_KEY | |
| Groq | "groq" | GROQ_API_KEY |
| Cohere | "cohere" | COHERE_API_KEY |
Mem0 インスタンスの作成時にプロバイダーを選択します:
const mem0 = createMem0({ provider: "anthropic" });
const { text } = await generateText({
model: mem0("claude-sonnet-4-20250514", { user_id: "alice" }),
prompt: "Hello!",
});
内部での仕組み
ラップされたモデルのフロー
User prompt
--> processMemories: addMemories (POST /v3/memories/add/, awaited)
--> processMemories: getMemories (POST /v3/memories/search/)
--> memories (if any) injected as system message at start of prompt
--> underlying LLM generates response (doGenerate or doStream)
--> response returned to caller (doGenerate also attaches a "Mem0 Memories" source)
スタンドアロンのフロー
User controls each step:
1. retrieveMemories / getMemories / searchMemories -> fetch memories
2. inject into system prompt manually
3. call generateText / streamText with any provider
4. addMemories -> store new conversation to Mem0
4 つのユーティリティ関数の主な違い
| 関数 | 戻り値 | 使用する場面 |
|---|---|---|
retrieveMemories | 書式設定済みのシステムプロンプト 文字列 | system パラメーターに直接挿入する場合 |
getMemories | 生のメモリ 配列 | メモリをプログラムから処理する場合 |
searchMemories | 生の検索 レスポンス(API の戻り値) | スコアとすべてのメタデータが必要な場合 |
addMemories | API レスポンス | 新しいメッセージを Mem0 に保存する場合 |
retrieveMemories、getMemories、searchMemories は、最初の引数として LanguageModelV3Prompt | string を受け取ります。addMemories の型は LanguageModelV3Prompt ですが、実行時には文字列も使用できます。4 つすべてで、2 番目の引数として省略可能な Mem0ConfigSettings を指定できます。
よくあるエッジケースとヒント
- 常に
user_id(またはagent_id/app_id/run_id)を指定してください。一貫したメモリ検索に必要です。検索エンドポイントでは、filtersに少なくとも1つのエンティティ ID が必要です。プロバイダーがこれらの ID を代わりに設定します。 - 単体で使用するユーティリティには、明示的な API キーが必要です。設定オブジェクトに
mem0ApiKeyを渡すか、環境変数MEM0_API_KEYを設定してください。 - これは Vercel AI SDK v6(LanguageModelV3/ProviderV3 インターフェイス、
@mem0/vercel-ai-provider3.x)を使用します。Provider 2.x は AI SDK v5 を対象としていました。AI SDK v4 以前とは互換性がありません。 processMemoriesは検索と LLM の呼び出しの前にaddMemoriesを待機するため、ラップされた各呼び出しではメモリの書き込みと検索が1回ずつ行われます。いずれかのリクエストが失敗した場合、エラーがログに記録され、メモリを使わずに LLM の呼び出しが続行されます。"google"と"gemini"はどちらも受け付けられ、@ai-sdk/googleにマッピングされます。- 3.0.0 で削除:
org_id、project_id、org_name、project_name、output_format、filter_memories、async_mode、enable_graph、version、api_version。グラフメモリはプロバイダーのオプションではなく、Mem0 Platform のプロジェクト設定になりました。 - デフォルトの
top_kは10です。thresholdとrerankは設定された場合にのみ送信されます(API のrerankのデフォルトはfalseです。thresholdはサーバー側のしきい値であり、返されるスコアの下限ではありません)。 - カスタムホスト:別の Mem0 API エンドポイントを指定するには、設定で
hostを設定します(デフォルト:https://api.mem0.ai)。
参考資料
| トピック | ファイル |
|---|---|
プロバイダー API(createMem0、Mem0Provider、型) | ローカル / GitHub |
メモリユーティリティ(addMemories、retrieveMemories など) | ローカル / GitHub |
| 使用パターンと例 | ローカル / GitHub |
関連する Mem0 スキル
| スキル | 使用する場面 | リンク |
|---|---|---|
| mem0 | Python/TypeScript SDK、REST API、フレームワーク連携 | ローカル / GitHub |
| mem0-cli | ターミナルコマンド、スクリプト作成、CI/CD、エージェントのツールループ | ローカル / GitHub |