mcpField
M
mem0-vercel-ai-sdk

mem0-vercel-ai-sdk

github.com/mem0ai開発68.0k517 回インストール2 日前に更新
リポジトリ

mem0-vercel-ai-sdk について

Mem0 Vercel AI SDK Provider は、Vercel AI SDK の呼び出しに Mem0 のメモリ検索と保存を加えるライブラリです。モデルラッパーによる自動処理と、手動制御向けのユーティリティを備えています。

主な機能

  1. 01モデル呼び出し時のメモリ検索と保存
  2. 02検索したメモリのプロンプトへの挿入
  3. 03テキスト生成とストリーミング生成
  4. 04単体で使えるメモリユーティリティ
  5. 05複数のモデルプロバイダーに対応

活用シーン

  1. 01AI 会話に永続メモリを追加
  2. 02生成前にメモリを手動で取得・挿入
  3. 03ユーティリティでメモリの読み書きを制御

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mem0ai/mem0 --skill mem0-vercel-ai-sdk

インストール後、Claude Code で/mem0-vercel-ai-sdkを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
README.md
references/
memory-utilities.md
provider-api.md
usage-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",
});

内部では次の処理が行われます:

  1. プロンプトが Mem0 に保存されます(POST /v3/memories/add/)。LLM の呼び出し前に完了を待機します(書き込みに失敗した場合はログに記録して無視します)
  2. プロンプトが Mem0 検索(POST /v3/memories/search/)に送信され、関連するメモリが取得されます
  3. メモリが見つかった場合、プロンプトの先頭にシステムメッセージとして挿入されます
  4. 基盤となる 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"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 の戻り値)スコアとすべてのメタデータが必要な場合
addMemoriesAPI レスポンス新しいメッセージを 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-provider 3.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 スキル

スキル使用する場面リンク
mem0Python/TypeScript SDK、REST API、フレームワーク連携ローカル / GitHub
mem0-cliターミナルコマンド、スクリプト作成、CI/CD、エージェントのツールループローカル / GitHub

コメント