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 记忆检索与存储,面向构建 AI 应用的开发者。它可包装模型自动处理记忆,也提供独立工具以便自行控制流程。

主要功能

  1. 01模型调用时自动检索和存储记忆
  2. 02将检索到的记忆注入提示
  3. 03支持文本生成与流式生成
  4. 04提供独立记忆操作工具
  5. 05支持多种模型提供方

适用场景

  1. 01为 AI 对话加入持久记忆
  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 Provider

适用于 Vercel AI SDK 的记忆增强型 AI 提供方。在大模型调用期间自动检索和存储记忆。

步骤 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 会返回一个提供方,用于封装任何受支持的大模型,并自动检索和存储记忆。

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/),并在大模型调用前等待完成(写入失败时会记录日志并忽略)
  2. 将提示词发送到 Mem0 搜索接口(POST /v3/memories/search/),以检索相关记忆
  3. 如果找到记忆,则将其作为系统消息注入提示词开头
  4. 底层大模型(例如 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。仅当检索到至少一条记忆时才会包含该来源。

模式 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 个函数都将可选的 Mem0ConfigSettings 作为第二个参数。

常见边缘情况和提示

  • 始终提供 user_id(或 agent_id/app_id/run_id),以确保一致地检索记忆。搜索端点要求在 filters 中至少包含一个实体 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 会先等待 addMemories 完成,然后再搜索并调用大模型,因此每次封装后的调用都包含一次记忆写入和一次记忆搜索。如果其中任一请求失败,系统会记录错误,并在不使用记忆的情况下继续调用大模型。
  • "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 是服务端截断阈值,并非返回分数的下限)。
  • 自定义主机:在配置中设置 host,以指向其他 Mem0 API 端点(默认值:https://api.mem0.ai)。

参考资料

主题文件
提供方 API(createMem0、Mem0Provider、类型)本地 / GitHub
记忆工具(addMemories、retrieveMemories 等)本地 / GitHub
用法模式和示例本地 / GitHub

相关 Mem0 技能

技能适用场景链接
mem0Python/TypeScript SDK、REST API、框架集成本地 / GitHub
mem0-cli终端命令、脚本、CI/CD、Agent 工具循环本地 / GitHub

评论

支持 Markdown