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

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

长期记忆与上下文管理 · 本章是 Mem0 DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目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 提供方(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/mem0ai/mem0/8.3-vercel-ai-sdk-provider
翻译时间:2026-05-27T08:45:14.991Z
翻译模型:deepseek-chat
原文字符数:15514
项目:Mem0 (mem0)

---

Vercel AI SDK 提供方

相关源文件

以下文件作为生成此 Wiki 页面的上下文:

  • 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 架构:代码实体关系

graph TB
    subgraph "应用代码"
        App["用户应用"]
        VercelSDK["Vercel AI SDK<br/>generateText(), streamText()"]
    end

    subgraph "公共 API (src/index.ts:1-5)"
        createMem0Export["export createMem0"]
        mem0Export["export mem0"]
        addMemoriesExport["export addMemories"]
        retrieveMemoriesExport["export retrieveMemories"]
        getMemoriesExport["export getMemories"]
        searchMemoriesExport["export searchMemories"]
    end

    subgraph "Provider 实现 (src/mem0-provider.ts)"
        createMem0Fn["createMem0(config)<br/>创建 Mem0 实例"]
        mem0Fn["mem0(modelId, settings)<br/>创建模型包装器"]
        Mem0Provider["Mem0Provider 类"]
    end

    subgraph "外观模式 (src/mem0-facade.ts:7-42)"
        Mem0Class["class Mem0<br/>baseURL, headers"]
        chatMethod["chat(modelId, settings)"]
        completionMethod["completion(modelId, settings)"]
    end

    subgraph "语言模型 (src/mem0-generic-language-model.ts:20-228)"
        GenericLM["class Mem0GenericLanguageModel<br/>implements LanguageModelV2"]
        processMemoriesFn["processMemories(messages, config)<br/>第 41-106 行"]
        doGenerateFn["doGenerate(options)<br/>第 108-176 行"]
        doStreamFn["doStream(options)<br/>第 178-226 行"]
    end

    subgraph "记忆工具函数 (src/mem0-utils.ts)"
        addMemoriesFn["addMemories(messages, config)<br/>第 310-324 行"]
        updateMemoriesFn["updateMemories(messages, config)<br/>第 326-354 行"]
        retrieveMemoriesFn["retrieveMemories(prompt, config)<br/>第 356-390 行"]
        getMemoriesFn["getMemories(prompt, config)<br/>第 392-405 行"]
        searchMemoriesFn["searchMemories(prompt, config)<br/>第 407-416 行"]
        searchInternalFn["searchInternalMemories(query, config, top_k)<br/>第 242-308 行"]
        flattenPromptFn["flattenPrompt(prompt)<br/>第 29-67 行"]
        convertFormatFn["convertToMem0Format(messages)<br/>第 69-240 行"]
    end

    subgraph "Provider 选择器 (src/mem0-provider-selector.ts)"
        Mem0ClassSelector["class Mem0ClassSelector"]
        createProviderFn["createProvider()"]
    end

    subgraph "Provider 包装器 (src/provider-response-provider.ts:10-91)"
        Mem0AITextGenerator["class Mem0AITextGenerator<br/>implements LanguageModelV2"]
        languageModelField["private languageModel: any"]
        textGenDoGenerate["doGenerate(options)<br/>第 78-81 行"]
        textGenDoStream["doStream(options)<br/>第 83-86 行"]
    end

    subgraph "AI SDK Providers"
        openaiSDK["@ai-sdk/openai<br/>createOpenAI()"]
        anthropicSDK["@ai-sdk/anthropic<br/>createAnthropic()"]
        googleSDK["@ai-sdk/google<br/>createGoogleGenerativeAI()"]
        groqSDK["@ai-sdk/groq<br/>createGroq()"]
        cohereSDK["@ai-sdk/cohere<br/>createCohere()"]
    end

    App --> VercelSDK
    VercelSDK --> createMem0Export
    VercelSDK --> addMemoriesExport
    VercelSDK --> retrieveMemoriesExport

    createMem0Export --> createMem0Fn
    mem0Export --> mem0Fn
    addMemoriesExport --> addMemoriesFn
    retrieveMemoriesExport --> retrieveMemoriesFn
    getMemoriesExport --> getMemoriesFn
    searchMemoriesExport --> searchMemoriesFn

    createMem0Fn --> Mem0Provider
    mem0Fn --> Mem0Class
    Mem0Class --> chatMethod
    Mem0Class --> completionMethod
    chatMethod --> GenericLM
    completionMethod --> GenericLM

    GenericLM --> processMemoriesFn
    GenericLM --> doGenerateFn
    GenericLM --> doStreamFn

    processMemoriesFn --> addMemoriesFn
    processMemoriesFn --> getMemoriesFn

    doGenerateFn --> Mem0ClassSelector
    doStreamFn --> Mem0ClassSelector

    Mem0ClassSelector --> createProviderFn
    createProviderFn --> Mem0AITextGenerator

    Mem0AITextGenerator --> languageModelField
    languageModelField --> openaiSDK
    languageModelField --> anthropicSDK
    languageModelField --> googleSDK
    languageModelField --> groqSDK
    languageModelField --> cohereSDK

    addMemoriesFn --> convertFormatFn
    addMemoriesFn --> updateMemoriesFn
    updateMemoriesFn --> addAPI

    retrieveMemoriesFn --> flattenPromptFn
    retrieveMemoriesFn --> searchInternalFn
    getMemoriesFn --> flattenPromptFn
    getMemoriesFn --> searchInternalFn
    searchMemoriesFn --> searchInternalFn

来源: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 实例化流程

graph TB
    Input["Mem0ProviderSettings config<br/>{provider, apiKey, modelType}"]

    Constructor["constructor(modelId, config, provider_config)<br/>第 21 行"]

    Switch["switch (config.provider)<br/>第 24 行"]

    subgraph "Provider 分支处理"
        OpenAICase["case 'openai' - 第 25-42 行"]
        CohereCase["case 'cohere' - 第 43-47 行"]
        AnthropicCase["case 'anthropic' - 第 49-53 行"]
        GroqCase["case 'groq' - 第 55-59 行"]
        GoogleCase["case 'google' 或 'gemini' - 第 61-72 行"]
        DefaultCase["default - 抛出 Error - 第 73-74 行"]
    end

    subgraph "OpenAI 路径决策"
        CheckModelType{"if (config?.modelType)"}
        CompletionPath["createOpenAI({apiKey, ...provider_config})<br/>.completion(modelId)<br/>第 27-30 行"]
        ChatPath["createOpenAI({apiKey, ...provider_config})<br/>.chat(modelId)<br/>第 31-35 行"]
        LanguageModelPath["createOpenAI({apiKey, ...provider_config})<br/>.languageModel(modelId)<br/>第 37-40 行"]
    end

    subgraph "其他 Provider 实例化"
        CohereCreate["createCohere({apiKey, ...provider_config})<br/>(modelId)<br/>第 44-47 行"]
        AnthropicCreate["createAnthropic({apiKey, ...provider_config})<br/>.languageModel(modelId)<br/>第 50-53 行"]
        GroqCreate["createGroq({apiKey, ...provider_config})<br/>(modelId)<br/>第 56-59 行"]
        GoogleCreate["createGoogleGenerativeAI({apiKey, ...provider_config})<br/>(modelId)<br/>第 62-65 行, 第 68-71 行"]
    end

    Assignment["this.languageModel = 创建的实例<br/>第 19 行 private 字段"]

    Input --> Constructor
    Constructor --> Switch

    Switch --> OpenAICase
    Switch --> CohereCase
    Switch --> AnthropicCase
    Switch --> GroqCase
    Switch --> GoogleCase
    Switch --> DefaultCase

    OpenAICase --> CheckModelType
    CheckModelType -->|"'completion'"| CompletionPath
    CheckModelType -->|"'chat'"| ChatPath
    CheckModelType -->|undefined| LanguageModelPath

    CohereCase --> CohereCreate
    AnthropicCase --> AnthropicCreate
    GroqCase --> GroqCreate
    GoogleCase --> GoogleCreate

    CompletionPath --> Assignment
    ChatPath --> Assignment
    LanguageModelPath --> Assignment
    CohereCreate --> Assignment
    AnthropicCreate --> Assignment
    GroqCreate --> Assignment
    GoogleCreate --> Assignment

来源: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