对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

迁移现有 LangGraph 代理

在本教程中,您可以学习;了解如何将现有的 LangGraph代理迁移到MongoDB Atlas助手引擎。本教程展示了如何将MongoDB Atlas Agent Engine SDK 添加到您的项目,使用 App 类包装您的代理代码,创建所需的配置文件,以及在Atlas Agent Engine 上注册您的项目。

在开始之前,请执行以下先决任务:

  • 安装 agentengine CLI并验证您的帐户。要学习;了解更多信息,请参阅安装和身份验证。

  • 打开现有 LangGraph代理项目中的 pyproject.toml文件。

  • 确认您的 pyproject.toml文件具有用于设置 requires 和 build-backend 密钥的 [build-system]区块。 agentengine init 命令需要此区块。您可以在项目根目录中运行uv init --package 以生成满足此要求的文件。

  • Install uv.

完成以下步骤以添加平台 SDK、更新代理代码并在Atlas Agent Engine 上注册项目。

1

导航到 pyproject.toml文件,然后从项目根目录运行以下命令以添加 SDK 依赖项:

uv add agent-engine-runner-shared agent-engine-sdk-langgraph
2

通过进行以下更改来更新代理的入口模块以使用平台 SDK:

  • 从 agent_engine_sdk_langgraph 导入 App 并在模块级别创建 App实例。

  • 使用 @app.tool() 装饰器注册每个工具。

  • 将 @app.entrypoint 装饰器添加到代理构建函数中。

  • 使用 app.llm() 方法封装 LLM,通过平台的审核执行路径路由 LLM 调用。

  • 将您的检查点替换为 app.checkpointer() 以使用平台的MongoDB支持的检查点。

  • 调用模块底部的 app.run() 方法。

以下示例显示了完整迁移的代理模块:

my_agent/main.py
from agent_engine_sdk_langgraph import App
from langgraph.graph import StateGraph, MessagesState
from langgraph.prebuilt import ToolNode
from langchain_openai import ChatOpenAI
app = App(app_name="my-agent")
@app.tool()
def lookup(query: str) -> str:
"""Search the knowledge base."""
return f"result for {query}"
@app.entrypoint
def build_agent():
llm = app.llm(ChatOpenAI(model="gpt-4o-mini"))
tools = app.get_tools()
def call_model(state: MessagesState):
return {"messages": [llm.invoke(state["messages"])]}
graph = StateGraph(MessagesState)
graph.add_node("agent", call_model)
graph.add_node("tools", ToolNode(tools))
graph.set_entry_point("agent")
graph.add_edge("tools", "agent")
return graph.compile(checkpointer=app.checkpointer())
app.run()
3

在项目根目录中,创建一个 agent.yaml文件,其中包含 entrypoint字段和代理沙箱的网络出口策略,如以下代码所示:

agent.yaml
entrypoint: my_agent.main:app
name: my-agent
framework: langgraph
sandboxes:
agent:
network:
egress_mode: deny_all

entrypoint字段必须点module.path:attribute 格式的 App实例。

sandboxes.agent.network.egress_mode字段声明代理沙箱的出站访问权限策略。前面的示例阻止了除平台基本策略之外的所有出站流量。要学习;了解如何启用对特定目标的出站访问权限,请参阅管理网络出口策略。

提示

要查看所有可用的 agent.yaml 字段,请参阅代理合同参考。

4

在项目根目录中,创建一个 .env文件,用于指定MongoDB连接字符串和 LLM提供商API密钥,如以下代码所示:

.env
MONGODB_URI=<your-mongodb-connection-string>
<PROVIDER>_API_KEY=<your-api-key>

重要

容器在运行时仅从 .env文件读取密钥。请勿将密钥提交给版本控制系统。

5

从项目根目录运行以下命令以注册项目并生成本地开发文件:

agentengine init

CLI将指导您选择或创建组织和项目,然后生成本地开发文件。

6

要确认迁移的代理正确运行,运行以下命令来启动本地开发环境:

agentengine dev up

当堆栈准备就绪后,在浏览器中打开 http://localhost:3000 以与代理交互。

注意

用户界面可能会在默认端口 3000 以外的端口上运行。要查看URL,请检查 agentengine dev up 命令输出中的 ui字段。

确认迁移的代理在本地运行后,您可以执行以下任务: