agentic_huge_data_base / wiki
页面 Mem0 · 8.3 Vercel AI SDK 提供方·DeepWiki 中文全文译文

8.3 · Vercel AI SDK 提供方(Vercel AI SDK Provider)

长期记忆与上下文管理 · 聚焦本章的模块关系、源码依据与实现要点。

项目Mem0 章节8.3 状态全文译文 模块模型调用与提供方适配、系统架构、检索、召回与索引、配置治理
源码线索
  • docs/integrations/vercel-ai-sdk.mdx
  • skills/mem0-cli/LICENSE
  • skills/mem0-cli/README.md
  • skills/mem0-cli/references/workflows.md
  • skills/mem0-vercel-ai-sdk/LICENSE
  • skills/mem0-vercel-ai-sdk/README.md
  • vercel-ai-sdk/README.md
  • vercel-ai-sdk/package.json
  • vercel-ai-sdk/pnpm-lock.yaml
  • vercel-ai-sdk/src/index.ts
模块标签
  • 模型调用与提供方适配
  • 系统架构
  • 检索、召回与索引
  • 配置治理
  • 界面与交互

章节正文

Vercel AI SDK 提供方

Vercel AI SDK 提供方

相关源文件

本章引用的主要源码文件:

  • docs/integrations/vercel-ai-sdk.mdx
  • skills/mem0-cli/LICENSE
  • skills/mem0-cli/README.md
  • skills/mem0-cli/references/workflows.md
  • skills/mem0-vercel-ai-sdk/LICENSE
  • skills/mem0-vercel-ai-sdk/README.md
  • vercel-ai-sdk/README.md
  • vercel-ai-sdk/package.json
  • vercel-ai-sdk/pnpm-lock.yaml
  • vercel-ai-sdk/src/index.ts
  • vercel-ai-sdk/src/mem0-facade.ts
  • vercel-ai-sdk/src/mem0-generic-language-model.ts
  • vercel-ai-sdk/src/mem0-types.ts
  • vercel-ai-sdk/src/mem0-utils.ts
  • vercel-ai-sdk/src/provider-response-provider.ts
  • vercel-ai-sdk/tests/generate-output.test.ts

目的与范围

本文档介绍 @mem0/vercel-ai-provider TypeScript/JavaScript 包,该包将 Mem0 的持久化记忆能力与 Vercel AI SDK v5 集成。该 Provider 使大语言模型能够通过 Mem0 的记忆平台访问和存储对话上下文,从而使 AI 应用能够维护个性化、上下文相关的对话。

如需了解 Mem0 的 Python SDK 与 Vercel AI 的集成,请参阅 Python SDK 文档 8.1。如需了解不依赖 Vercel AI 的通用 TypeScript SDK 用法,请参阅 8.2。其他框架集成请参阅 9

包概述

Vercel AI SDK Provider 以 @mem0/vercel-ai-provider 发布在 npm 上,提供了 Vercel AI SDK 与 Mem0 记忆平台之间的无缝集成。它实现了 @ai-sdk/provider 中的 LanguageModelV2 接口,支持直接替换或包装现有的大语言模型,为其添加记忆能力。

主要功能:

  • 通过系统消息自动将记忆注入提示词。
  • 支持流式和非流式响应。
  • 多模态内容处理(图片、PDF、Markdown)。
  • 图记忆集成,提供实体-关系上下文。
  • 独立的记忆工具函数,用于自定义集成。

来源:vercel-ai-sdk/package.json:1-82docs/integrations/vercel-ai-sdk.mdx:1-327

安装

通过 npm 安装 Provider:

npm install @mem0/vercel-ai-provider

该包需要 Node.js >= 18,并且对 zod 有对等依赖,用于模式校验。

核心依赖:

  • ai (5.0.2) - Vercel AI SDK 核心。
  • @ai-sdk/provider (2.0.0) - Provider 接口。
  • @ai-sdk/openai@ai-sdk/anthropic@ai-sdk/google@ai-sdk/groq@ai-sdk/cohere - 大语言模型 Provider SDK。

来源:vercel-ai-sdk/package.json:33-45vercel-ai-sdk/package.json:65-67

架构总览

Provider 架构:代码实体关系

Mem0 · 架构总览 · 图 1
Mem0 · 架构总览 · 图 1

来源:vercel-ai-sdk/src/index.ts:1-5vercel-ai-sdk/src/mem0-generic-language-model.ts:20-228vercel-ai-sdk/src/mem0-utils.ts:1-418vercel-ai-sdk/src/provider-response-provider.ts:10-91

核心组件

Mem0GenericLanguageModel

这是实现 LanguageModelV2 接口的主要类,负责编排记忆操作和模型执行。

类定义vercel-ai-sdk/src/mem0-generic-language-model.ts:20-37

export class Mem0GenericLanguageModel implements LanguageModelV2 {
  readonly specificationVersion = "v2";
  readonly defaultObjectGenerationMode = "json";
  readonly supportsImageUrls = false;
  readonly supportedUrls: Record<string, RegExp[]> = {
    '*': [/.*/]
  };

  constructor(
    public readonly modelId: Mem0ChatModelId,
    public readonly settings: Mem0ChatSettings,
    public readonly config: Mem0ChatConfig,
    public readonly provider_config?: Mem0ProviderSettings
  ) {
    this.provider = config.provider ?? "openai";
  }
}

关键方法:

方法用途行号描述
processMemories()记忆编排41-106检索现有记忆,异步添加新记忆,并构建系统提示词。
doGenerate()文本生成108-176非流式生成,带记忆注入。
doStream()流式生成178-226流式响应,带记忆注入。

记忆注入逻辑vercel-ai-sdk/src/mem0-generic-language-model.ts:41-106

processMemories() 方法编排记忆检索和注入的流程:

  1. 异步添加:以"即发即忘"的 Promise 方式调用 addMemories() 第 44 行
  2. 检索:等待 getMemories() 获取相关上下文 第 52 行
  3. 格式化:遍历结果,构建 memoriesText 字符串 第 60-77 行
  4. 图支持:如果 enable_graph 为 true,则提取关系并追加到提示词中 第 79-82 行
  5. 系统消息:在消息数组前插入一条包含格式化记忆的系统消息 第 87-95 行

来源:vercel-ai-sdk/src/mem0-generic-language-model.ts:41-106

Mem0AITextGenerator

该组件充当 Mem0 逻辑与特定大语言模型 Provider SDK(OpenAI、Anthropic 等)之间的桥梁。

Provider 实例化流程

Mem0 · Mem0AITextGenerator · 图 2
Mem0 · Mem0AITextGenerator · 图 2

来源:vercel-ai-sdk/src/provider-response-provider.ts:10-91

记忆工具函数

Provider 导出了独立的记忆函数,用于手动管理上下文。

addMemories()

从对话消息中添加新记忆到 Mem0 平台。

  • 实现:将 LanguageModelV2Prompt 转换为 Mem0 内部格式 第 312-316 行,并向 /v1/memories/ 发送 POST 请求 第 344 行
retrieveMemories()

检索记忆并将其格式化为系统提示词字符串,用于注入大语言模型。

  • 实现:将提示词展平为搜索查询 第 358 行,在 Mem0 平台中搜索 第 361 行,并构建包含可选图关系的格式化字符串 第 366-385 行
searchInternalMemories()

这是其他工具函数使用的核心记忆检索实现。

  • 过滤:基于 user_idapp_idagent_idrun_id 构建 OR 过滤块 第 244-266 行
  • 请求:向 /v2/memories/search/ 发送 POST 请求,包含查询和过滤条件 第 297-298 行

来源:vercel-ai-sdk/src/mem0-utils.ts:242-418

多模态内容支持

Provider 通过将 Vercel AI SDK 消息格式转换为 Mem0 兼容结构来处理多模态内容。

内容类型MIME 类型转换结果
PDFapplication/pdfpdf_url 对象 第 89-98 行
Markdowntext/markdownmdx_url 对象 第 99-108 行
图片image/*image_url 对象 第 109-118 行

对于搜索查询,flattenPrompt() 会将多模态附件替换为描述性占位符(例如 [PDF document]),以在记忆检索期间保持上下文流畅 第 44-55 行

来源:vercel-ai-sdk/src/mem0-utils.ts:29-67vercel-ai-sdk/src/mem0-utils.ts:69-240

配置系统

Mem0ConfigSettings

该接口定义了记忆作用域和搜索参数。

属性类型描述
user_idstring用户的唯一标识符。
agent_idstring代理的唯一标识符。
enable_graphboolean是否包含图记忆关系。
top_knumber要检索的记忆数量。
thresholdnumber搜索的相似度阈值。

来源:vercel-ai-sdk/src/mem0-types.ts:10-33

集成示例

基本文本生成
import { generateText } from "ai";
import { createMem0 } from "@mem0/vercel-ai-provider";

const mem0 = createMem0();

const { text } = await generateText({
  model: mem0("gpt-4-turbo", { user_id: "alice" }),
  prompt: "What is my favorite car?",
});
独立检索
import { retrieveMemories } from "@mem0/vercel-ai-provider";

const systemPrompt = await retrieveMemories("Tell me about cars", {
  user_id: "alice",
  mem0ApiKey: "m0-xxx"
});

来源:docs/integrations/vercel-ai-sdk.mdx:83-112