对于 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 菜单

创建项目

在本指南中,您可以学习;了解如何使用以下命令创建和注册新的代理项目:

  1. agentengine create:获取入门模板,重写项目身份字段,并写入使用您的配置值的个性化环境文件。

  2. Agentengine init:在Atlas Agent Engine 上注册您的代理并生成本地开发文件。

如果您更愿意手动创建项目文件而不是使用入门模板,请参阅“手动设置代理”部分。

本部分介绍如何使用 agentengine create 命令搭建新项目的脚手架。

agentengine create 命令不需要 agentengine auth login,也不会在Atlas Agent Engine 上注册您的项目。在本地运行和测试代理之前,您可以手动自定义脚手架文件。

使用以下命令搭建新项目:

agentengine create [--template <template-id>] [--name <display-name>] [--dir <path>] [--llm <provider>] [--llm-base-url <url>] [--llm-model <model>] [--llm-auth-header <header>] [--memory] [--yes]

根据您指定的标志, CLI会提示您配置项目。

此命令创建一个包含 project-config.yaml文件的项目目录,并在 <project-directory>/agents/<slug> 子目录中构建助手的工作区目录。 <slug> 值是 --name 值的小写带连字符版本。工作区目录包含 agent.yaml、.env 以及其他特定于代理的文件(将在后续章节中介绍)。

标记
说明

--template

可选。入门模板ID。支持的值:hello-world-agent、hello-world-agent-adk、hello-world-agent-ts、insurance-agent、insurance-agent-adk、insurance-agent-ts 或 chatbot-client。有关模板说明,请参阅支持的模板部分。默认为insurance-agent。

--name

应用程序显示名称。设立--yes 时为必填项。有关可以使用的字符,请参阅显示名称限制部分。

--dir

可选。目标项目目录。助手的工作区文件构建在此路径的 agents/<slug> 子目录中。默认为 ./<slug>。

--llm

有条件(如果设立了--yes,则为必需)。入门模板的 LLM 连接。支持的值:openai、anthropic、gemini、openrouter、openai-compatible、anthropic-compatible 或 custom(在代码中配置)。

--llm-auth-header

有条件(如果设立了--yes 并且CLI无法推断标头,则为必需)。携带API密钥的标头,例如 authorization、api-key 或 x-api-key。仅在使用 openai-compatible 和 anthropic-compatible 连接时有效。否则CLI会出错。使用 authorization 时, CLI将密钥作为 Bearer <key> 发送。

--llm-base-url

有条件(对于 openai-compatible 或 anthropic-compatible 连接是必需的)。 openai-compatible 或 anthropic-compatible 连接的基本URL 。其托管已添加到 network.egress。

--llm-model

有条件(OpenRouter 和兼容连接必需)。模型或部署名称。

--memory

可选。为代理入门模板启用内存并提示输入 VOYAGE_API_KEY。当您选择受支持的 LLM提供商时, CLI会配置内存提取以重复使用代理的 LLM 连接和档案。

--memory-only

可选。 Scaffold 一个仅生成内存的项目,仅生成 project-config.yaml 并且不创建代理。不能与 --template、--llm、--llm-base-url、--llm-model、--llm-auth-header、--memory 或 --open-egress 标志组合使用。

--open-egress

可选。允许对代理和工具进行开放式出站访问权限,而不是列出所选的 LLM 主机。将 network.egress_mode: allow_all 写入 project-config.yaml文件并打印警告。此模式不是默认模式。不能与 --memory-only 或 --template chatbot-client 一起使用。

--yes

可选。接受所有可选提示的默认值,包括检测到的本地环境变量值。

-h, --help

可选。标准CLI帮助标志,显示命令的用法信息。

CLI将显示名称复制到生成的源文件中。名称不能包含以下字符:

  • 双引号 (")

  • 反斜杠 (\)

  • 反引号

  • 控制字符、换行符或文本方向字符

如果在使用交互式CLI时输入了无效名称, CLI将显示错误并再次提示。如果向 --name 标志传递无效名称,则该命令将失败并显示错误,指出指定不允许的字符或字符类别。

下表描述了可以传递给 agentengine create 命令的入门模板:

模板
类型
用例(Use Case)

hello-world-agent

代理启动器

具有可选内存的最小Atlas Agent Engine代理。

hello-world-agent-adk

代理启动器

使用 Google 助手开发套件 (ADK) 构建的最小代理。

hello-world-agent-ts

代理启动器

一个最小化的 TypeScript LangGraph代理,支持人工参与功能和 IANA 时区。

insurance-agent

代理启动器

具有工具、策略、声明、可选内存和人工查看的现实代理。

insurance-agent-adk

代理启动器

使用 Google ADK 构建的保险域代理。

insurance-agent-ts

代理启动器

一个功能齐全的 TypeScript代理,结合了深度代理协调器、子代理和内存支持工具。

chatbot-client

客户端应用

现有已部署代理的 Next.js 和 Vercel AI SDK 聊天用户界面。

当您从提供商目录中选择 LLM 连接时,agentengine create 会提示您输入所需的连接详细信息,例如API密钥。如果在Shell环境中设立了 LLM_API_KEY,该命令会将其作为默认。确认该值后,该命令会将其作为 LLM_API_KEY 写入生成的 .env文件。您无需手动配置此值。

提示

要通过网关路由代理的 LLM 调用,请参阅“LLM 网关配置”部分。

启用内存后,agentengine create 会检测本地环境中的 VOYAGE_API_KEY,并将其作为默认。确认该值会将其写入生成的 .env。

当您使用 --yes 标志运行agentengine create 时,该命令不会提示输入检测到的环境值。对于除 custom 之外的每个提供商目录选项,您必须在运行命令之前在环境中设立LLM_API_KEY。当您同时传递 --memory --yes 时,必须在运行命令之前在环境中设立VOYAGE_API_KEY,否则命令会失败。

注意

当您选择支持的 LLM提供商时, CLI会将您的 LLM 档案写入共享 LLM_API_KEY 变量名称下生成的 .env文件,并使用与 project-config.yaml 中的内存提取的 api_key_secret 相同的 LLM_API_KEY 值。这样,代理和内存提取就可以股票一个已上传的密钥。要学习;了解更多信息,请参阅为代理添加内存。

chatbot-client 模板生成 .env.local文件而不是 .env文件。在运行应用之前,您必须使用以下值手动填充 .env.local文件:

agentengine create 完成后,导航到代理位于 <project-directory>/agents/<slug> 的工作区目录并查看生成的文件。

所有生成的代理都包含 .agents/skills/atlas-agent-engine(对于 Codex、Copilot 和其他代理)或 .claude/skills/atlas-agent-engine(对于 Claude Code)的 atlas-agent-engine技能。

使用代理入门模板时,查看生成的代理源和 .env文件,确认 LLM 连接满足您的要求。 LLM客户端、模型、端点和身份验证行为在生成的代理源代码中配置。

对于配置 LLM 连接的目录选项,生成的 .env文件包含共享档案 LLM_API_KEY。如果您选择 Manual setup,请在代理代码中配置 LLM 连接,并将代码所需的任何密钥添加到 .env文件中。要学习;了解更多信息,请参阅在代码中设置 LLM 网关。

使用 chatbot-client 模板时,查看.env.local文件并确认您正确设立了已部署代理的API URL、项目ID、工作区ID和服务帐户访问权限令牌。聊天机器人客户端应用中没有 agent.yaml文件。

注意

使用本地 Git凭证获取模板。生成的项目目录会自动初始化为 Git存储库。

您可以自己创建所需的文件,而不是使用 agentengine create 命令来搭建代理。每个代理都需要将以下文件放在一个目录中:

  • agent.yaml:代理配置,描述平台如何运行代理

  • .env:运行时密钥和环境变量

  • pyproject.toml:定义Python项目元数据,包括 [project].name字段

此目录是您的工作区目录,您可以在其中运行agentengine 命令。当您稍后运行agentengine init 命令时, Atlas助手引擎会将此目录注册为工作区。

以下步骤描述了如何手动设立代理。

1

如果从空目录开始,请安装 uv 工具并初始化一个新项目:

mkdir my-agent && cd my-agent
uv init
2

Atlas Agent Engine 需要两个软件包:agent-engine-runner-shared 和 agent-engine-sdk-langgraph。运行以下命令将它们添加到您的项目中:

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

在工作区目录中创建 agent.yaml文件。 entrypoint 和 sandboxes 字段为必填字段。

下表描述了可用的 agent.yaml 字段:

字段
必需
说明

entrypoint

是

应用实例的Python导入路径,采用 module.path:attribute 格式。

sandboxes

是

配置运行代理及其工具的 agent 和 tool 沙箱。每个沙箱都声明它可以访问权限哪些密钥和工具。声明 sandboxes 时,sandboxes.agent 是必需的,sandboxes.tool 是可选的。要学习;了解有关此字段的更多信息,请参阅代理合同参考。

name

No

用作Docker Compose 服务和网络名称前缀的代理名称。使用带连字符的小写字母数字值,但不要包含前导或尾随连字符。

description

No

人工可读的代理描述。最多使用 500 个字符。

framework

No

框架标识符,例如 langgraph 或 custom。

language

No

代理语言。支持的值为 python 和 typescript。省略时默认为 python。

version

No

代理版本。接受严格的 semver 值,可以将 auto 委托给语言清单(pyproject.toml 或 package.json),也可以接受空值以实现无版本控制的代理。

mcp

No

远程 MCP服务器配置。要学习;了解更多信息,请参阅使用远程 MCP 服务器。

agent_card

No

平台用户界面中显示的代理功能。该字段接受一个 summary 字符串和一个 capabilities 字符串列表。

services

No

已弃用。将本地服务端口覆盖移动到与 agent.yaml文件位于同一目录中的 dev.yaml文件。要学习;了解更多信息,请参阅配置本地开发设置。

features

No

功能标志。该区块接受 guardrails 和 memory 作为布尔值。

artifact_repositories

No

为托管构建声明私有包注册表。要学习;了解更多信息,请参阅代理 YAML 模式。

以下示例显示了最小的 agent.yaml 配置:

entrypoint: my_agent.graph:app
name: my-agent
framework: langgraph
sandboxes:
agent:
secrets: ["*"]
tools: []
tool:
secrets:
- ANTHROPIC_API_KEY
tools:
- invoke_llm
4

在工作区目录中创建 .env文件,提供代理代码所需的密钥。将 LLM客户端所需的密钥变量添加到此文件中。

在代理代码中配置 LLM提供商、模型、端点和身份验证行为,而不是在 agent.yaml 中。 .env文件仅用于存储密钥,例如API密钥。要学习;了解有关 agent.yaml文件的更多信息,请参阅“代理合同参考”指南。

下表列出了 .env文件的必需变量和可选变量:

变量
必需
说明

MONGODB_URI

是

MongoDB连接字符串

<PROVIDER>_API_KEY

No

LLM提供商密钥。该平台不要求特定的提供商或验证 LLM凭证,但如果没有提供程序,您的代理会在运行时失败。常用键包括 OPENAI_API_KEY、ANTHROPIC_API_KEY、GEMINI_API_KEY 和 CEREBRAS_API_KEY。

重要

.env文件是运行时验证的密钥的唯一来源。容器故意忽略主机环境变量。容器仅在运行时挂载 .env,因此文件中缺少的任何密钥在容器中也会丢失。不要向版本控制系统提交任何真正的秘密。

代理如何进行和验证 LLM 调用完全由您的代码决定。有关设立环境变量或在 agentengine create 中选择 LLM 选项的说明仅应用于示例入门模板。 Atlas Agent Engine 不会托管或管理您的 LLM 连接。

设立LLM 网关有两种方法:

  • 使用入门模板将有效的 LLM 连接构建到生成的代理中。

  • 在代码中设置网关,适用于任何代理,包括不是从入门模板构建的代理。

运行agentengine create 命令时,该命令会提示您选择 LLM 连接,类似于以下示例:

Which LLM connection do you want to use?
1) OpenAI
2) Anthropic
3) Google Gemini
4) OpenRouter
5) OpenAI-compatible - AWS Bedrock, Azure Foundry
6) Anthropic-compatible - AWS Bedrock, Azure Foundry
7) Manual setup - implement the LLM client in code

如果您从此目录中选择一个提供商,agentengine create 命令会提示输入连接所需的详细信息,其中可能包括以下内容:

  • 基本 URL

  • 模型或部署名称

  • API 密钥

  • 无法识别托管时的连接身份验证标头

该命令将选定的 LLM客户端写入生成的代理源,并将共享档案作为 LLM_API_KEY 存储在生成的 .env文件中。

该命令还会提示您选择助手和工具访问权限外部主机的方式:

  • 应用推荐的 network.egress 配置。如果没有可用的网关托管,例如当您选择 Manual setup (custom) 时,此选项将指示您稍后配置 LLM 出口。

  • 允许所有出站访问权限。

重要

您选择的提供商仅配置由此 agentengine create 命令创建的入门项目。它不会自动配置您以后创建的其他代理。

如果您的 LLM 连接不是列出的选项之一,请选择 Manual setup 并在代码中设立网关。此选项会创建模型构建器存根,以便您可以在代理代码中配置连接。

要将 LLM 连接到代理,请创建一个特定于框架的模型,并将生成的模型实例从代理的入口点传递给 app.llm(...) 方法。您可以将模型构建代码放在代理代码中的任何文件中,但入门模板会将存根放在特定于语言的文件中。如果您不使用入门模板,则可以在其他地方定义模型,只要 app.llm(...) 接收到受支持的模型对象。

下表描述了在不同运行时的代码中设置 LLM 网关的惯例:

运行时
file
您返回的内容

LangGraph Python

src/<module>/llm.py (build_llm)

A LangChain BaseChatModel

LangGraph TypeScript

src/<module>/llm.ts (buildLLM)

A LangChain BaseChatModel

ADK Python

src/<module>/llm.py (build_llm)

ADK BaseLlm(Gemini、LiteLlm 等)

构造函数用于设置端点、身份验证标头和模型名称。示例,LangGraph Python insurance-agent 模板在 src/<module>/llm.py 中定义 build_llm() 并返回一个 LangChain BaseChatModel。代理入口点导入 build_llm() 并将返回的模型传递给 app.llm(...)。

允许网关托管,以便代理可以访问它。将自定义网关托管和端口添加到 agent.yaml文件中的 network.egress区块。示例,要将 gateway.example.com:443 添加到工具沙箱的现有出口允许列表,运行以下命令:

agentengine agent egress add --component tool gateway.example.com:443

要学习;了解有关为代理配置网络出口的更多信息,请参阅网络出口入门指南。

搭建好代理的脚手架后,您可以使用 agentengine init 命令注册代理并生成本地开发文件。在运行此命令之前,请执行以下先决任务:

在代理工作区目录中,运行以下命令以注册代理并生成本地文件:

agentengine init [--workspace-id <id>] [--project-id <id>] [--org-id <id>] [--base-url <url>] [--context <name>]

此命令以交互方式选择或创建组织和项目,生成本地开发文件,并将代理注册为Atlas Agent Engine 上的工作区。

标记
说明

--workspace-id

(可选)将此目录链接到现有工作区,而不是创建工作区。

--project-id

(可选)在没有提示的情况下使用的项目ID 。

--org-id

(可选)在没有提示的情况下使用的组织ID 。

--base-url

(可选)覆盖Atlas Agent Engine API基本URL。

--context

(可选)要创建或更新的命名本地上下文。

运行agentengine init 时, CLI将指导您完成以下步骤:

  1. 使用编号菜单列出您的组织,包括 "Create a new organization..." 选项。如果组织不存在, CLI会提示您输入名称以创建组织。

  2. 选择组织后,将使用编号菜单列出您的项目,包括 "Create a new project..." 选项。如果项目不存在, CLI会提示您输入名称以创建项目。

  3. 将所选项目另存为处于本地身份验证状态的活动 project_id。

  4. 在代理目录中生成以下本地开发文件:

    • docker-compose.yml

    • .agentengine/Dockerfile

    • .agentengine/entrypoint.py

    • .dockerignore

    • .gitignore

  5. 将代理注册为平台上的工作区,并创建指定了 workspace_id、org_id 和 project_id 的 .agentengine/state.json文件。

注意

如果 .agentengine/state.json文件已存在, CLI将跳过工作区注册。重新运行 agentengine init 命令以重新注册代理,而不会覆盖生成的文件。如果平台上已存在工作区名称,则会重复使用现有的 workspace_id。

以下部分介绍如何为每种模板类型启动本地开发。要学习;了解有关本地开发和测试的更多信息,请参阅在本地运行和测试代理以及测试代理。

如果您使用的是 TypeScript 模板,请先安装 Node.js 依赖项,然后再在本地启动代理:

pnpm install

检查脚手架代理后,运行agentengine dev up 以在本地启动代理:

agentengine dev up

在 .env.local文件中设置必要的值后,安装依赖项并启动开发服务器:

pnpm install
pnpm run dev

在浏览器中打开 http://localhost:3000 以使用聊天用户界面。