对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

开始集成MongoDB Vercel AI SDK

您可以将MongoDB与 Vercel AI SDK 集成,为跨会话持续存在的代理配置内存。本教程创建一个MongoDB内存提供商,构建一个保存和调用内存的代理,并运行该代理两次以显示它从上次运行中检索信息。

在本教程中,您将执行以下任务:

  1. 设置您的环境。

  2. 构建具有持久内存的代理。

  3. 运行代理并查看输出。

Vercel AI SDK 是一个用于构建AI应用程序和代理的 TypeScript框架。 @mongodb-developer/vercel-ai-memory包为使用 SDK 构建的代理提供MongoDB支持的持久内存。该包将内存存储在五层中。要学习;了解有关内存层的更多信息,请参阅将MongoDB与 Vercel AI SDK 集成。

本教程使用该包向代理公开的内存工具命令。该模型会调用 session_recent 命令来恢复每次运行开始时的对话历史记录,并调用 session_append 和 semantic_save 命令来存储新信息。

要完成本教程,您必须具备以下资源:

  • 以下MongoDB 集群类型之一:

    • 运行 MongoDB 6.0.11 版本的 Atlas 集群,7.0.2或以上版本。确保您的 IP 地址 包含在 Atlas 项目的 访问列表 中。

    • 使用 Python 和 Docker 创建的本地 Atlas 部署。安装 atlas-local-lib-py (pip install atlas-local-lib-py),以编程方式创建和管理本地部署。要了解更多信息,请参阅 atlas-local-lib-py 存储库。

    • 安装了Search 和向量搜索的 MongoDB Community 集群。

  • OpenAI API密钥。您必须拥有一个具有可用于API请求的积分的 OpenAI 帐户。要学习;了解有关注册 OpenAI 帐户的更多信息,请参阅 OpenAI API网站。

  • Voyage AI API 密钥。要创建 API 密钥,请参阅 管理 Voyage AI 模型 API 密钥。

    本教程将配置一个基本URL ,用于将嵌入请求路由到 MongoDB 的 Voyage AI端点。如果您直接从 Voyage AI生成API密钥,删除内存提供商步骤中指定的 baseURL 选项。

  • Node.js 和npm。

在本部分中,您将通过安装所需的依赖项、设置环境变量和创建项目文件来准备环境。

1

在终端中运行以下命令,创建名为 vercel-ai-mongodb-project 的新目录并安装所需的依赖项:

mkdir vercel-ai-mongodb-projectcd vercel-ai-mongodb-projectnpm init -ynpm install @mongodb-developer/vercel-ai-memory ai mongodb zod @ai-sdk/openai voyage-ai-provider dotenvnpm install --save-dev tsx @types/node
2

在您的 vercel-ai-mongodb-project 目录中,创建一个 .env 文件并添加以下代码:

OPENAI_API_KEY="<openai-api-key>"VOYAGE_API_KEY="<voyage-api-key>"MONGODB_URI="<connection-string>"

将 <connection-string> 替换为您的 Atlas 集群或本地部署的连接字符串。

连接字符串应使用以下格式:

mongodb+srv://<db_username>:<db_password>@<clusterName>.<hostname>.mongodb.net

重要: 确保连接字符串包含数据库用户的凭证。要学习有关查找连接字符串的更多信息,请参阅通过客户端库连接到集群。

3

在 vercel-ai-mongodb-project目录中,创建名为 main.ts 的文件。将以下代码添加到此文件以加载环境变量并导入所需的模块:

import 'dotenv/config'import { createMongoDBMemory } from '@mongodb-developer/vercel-ai-memory'import { createVoyage } from 'voyage-ai-provider'import { openai } from '@ai-sdk/openai'import { ToolLoopAgent } from 'ai'

在后续步骤中,您将向此文件添加代码,以创建内存提供商并构建代理。

在本部分中,您将创建MongoDB内存提供商程序,构建使用该提供商存储和检索内存的代理,并添加运行该代理的代码。

1

将以下代码添加到 main.ts文件中,以创建 Voyage AI客户端和使用 Voyage AI嵌入模型的内存提供商:

const voyage = createVoyage({ apiKey: process.env.VOYAGE_API_KEY, baseURL: 'https://ai.mongodb.com/v1',}) const mongodbMemory = createMongoDBMemory({ uri: process.env.MONGODB_URI!, embedder: voyage.embeddingModel('voyage-4'),})

重要

您在Atlas中创建的 Voyage AI API密钥需要 baseURL 选项指定的MongoDB Voyage AI端点。如果您直接从 Voyage AI生成API密钥,删除baseURL 选项。

提供商在首次使用时连接到MongoDB并创建 agent_memory数据库。然后,它将每个内存层级的一个集合添加到数据库。提供商还会创建语义召回所需的MongoDB Vector Search 索引。要学习;了解有关提供商创建的集合和索引的更多信息,请参阅 Vercel AI SDK 参考中的集合和索引。

2

将以下代码添加到 main.ts文件以创建一个代理,该代理的内存工具仅限于一个用户和会话:

const agent = new ToolLoopAgent({ model: openai('gpt-4.1'), tools: mongodbMemory({ userId: 'alice', sessionId: 'sess-001' }), instructions: `You are an assistant with persistent memory. At the start of every conversation, call session_recent to restore context and semantic_search to recall facts about the user. Save each conversation turn with session_append. Save important facts about the user with semantic_save.`,})

这些指令告诉模型要调用哪些内存命令。 userId 和 sessionId 值的范围限定了代理存储和检索的内存。

3

将以下代码添加到 main.ts文件,以命令行向代理传递提示,打印响应,然后关闭MongoDB连接:

async function main() { const prompt = process.argv[2] if (!prompt) { console.error('Usage: npx tsx main.ts "<your message>"') process.exit(1) } const result = await agent.generate({ prompt }) console.log('[agent]:', result.text) await mongodbMemory.close()} main().catch((error) => { console.error(error) process.exit(1)})

在本部分中,您运行main.ts文件并向代理提供信息。然后,再次运行代理并提示其调用此信息。

1

从 vercel-ai-mongodb-project目录运行以下命令:

npx tsx main.ts "I'm a marine biologist who studies emperor penguins in Antarctica. Remember that."

如果命令成功运行,输出如下所示。

[agent]: I've noted that you are a marine biologist studying emperorpenguins in Antarctica.
2

再次运行代理并传递以下提示,要求代理调用以前的信息:

npx tsx main.ts "What do I study, and where?"

输出类似于以下内容:

[agent]: You are a marine biologist who studies emperor penguins inAntarctica.

代理使用内存来回答提示。两次运行都会传递相同的 userId 和 sessionId 值,因此模型会在第二次运行开始时调用 session_recent 和 semantic_search 命令。这些命令恢复对话以及首次运行时存储在MongoDB中的内存。

注意

MongoDB Vector Search 索引在首次运行后异步构建。如果代理忘记了这些信息,请等待几秒钟,然后再次运行命令。

要学习;了解有关内存提供商的更多信息,包括完整参数参考、保留和拓扑结构选项以及所有内存工具命令,请参阅将MongoDB与 Vercel AI SDK 集成。

如需学习;了解有关 Vercel AI SDK 的更多信息,请参阅 Vercel AI SDK 文档。