A2A(Agent-to-Agent)用于让一个 Agent 调用另一个 Agent。绑定 A2A 连接后,当前 Agent 可以在处理任务时按需把子任务交给已连接的远程 Agent。
本文适用于需要让多个 Agent 协作的用户,例如让客服 Agent 调用查询 Agent、让规划 Agent 调用执行 Agent,或让一个主 Agent 编排多个专业 Agent。
工作方式
当前 Agent 绑定 A2A 连接
→ 平台注入 A2A_CONNECTIONS
→ Agent 应用加载远程 Agent
→ 模型按需将任务交给远程 AgentA2A 涉及两种能力:
能力 | 含义 | 用户需要关注 |
连接其他 Agent | 当前 Agent 作为调用方,调用已选择的远程 Agent。 | 创建或管理 Agent 时选择需要连接的 Agent。 |
被其他 Agent 连接 | 当前 Agent 作为被调用方,对外提供 Agent Card,说明名称、能力和访问地址。 | 确认当前部署方式是否支持被连接,并为 Agent 设置清晰的名称和描述。 |
平台负责传递连接地址和认证信息。使用 Agent 市场部署或快速创建 Agent 时,通常不需要手动填写 A2A 地址、端口或 Token。
使用 A2A 连接
创建 Agent 时选择连接
登录 计算巢控制台。
进入 Agent 部署,开始创建 Agent。
在 工具配置 > 应用连接 中选择需要调用的 Agent。
按页面提示完成其余部署参数并提交创建。
部署完成后,当前 Agent 即可在运行时使用已选择的远程 Agent。实际是否调用远程 Agent,由模型结合远程 Agent 的名称、描述和当前任务判断。
为已创建 Agent 变更连接
进入 Agent 部署 > 我的 Agent。
点击目标 Agent 的 查看详情。
在 Agent 管理 > Agent 连接 中绑定或变更应用连接。
返回 部署物 页签,找到最新部署物并点击 发布,使连接配置生效。
部署方式支持情况
部署方式 | 连接其他 Agent | 被其他 Agent 连接 | 说明 |
Agent 市场部署 | 支持 | ECS、集群版、FC 版支持; | 页面开放应用连接后可直接选择,无需修改代码。 |
快速创建 Agent | 支持 | ECS、集群版、FC 版支持; | 平台内置 A2A 客户端和服务端能力。 |
代码创建 Agent | 支持 | ECS、集群版、FC 版需要自行实现A2A Server; | 平台注入连接信息,业务代码需要主动加载远程 Agent。 |
FC 部署限制
当前 FC 部署只支持作为 A2A Client,可以调用其他 Agent;不提供 Agent Card,不能被其他 Agent 选择和调用。
使用 FC 部署时,用户不需要配置 A2A_PORT、A2A_PUBLIC_HOST 或服务端认证 Token。需要让自己的 Agent 被其他 Agent 连接时,请选择 ECS 或集群部署。
代码创建 Agent 接入
注入变量
变量 | 说明 |
SESSION_REDIS_URL | Redis 连接地址。 |
SESSION_TYPE | 会话类型,Redis 连接通常为 redis. |
通过代码创建 Agent,并使用 Google ADK 开发时,需要在代码中加载平台注入的远程 Agent。平台会通过 A2A_CONNECTIONS 下发连接信息,代码中不要自行解析或写死该变量。
可参考 GitHub 示例:computenest-agent-samples/conversation。
安装或确保运行环境中包含 computenest-agent-integrations 后,可参考以下示例:
from computenest.integrations.adk import (
A2AClientCleanupPlugin,
load_remote_a2a_agents,
)
from google.adk.agents import Agent
from google.adk.apps import App
from google.adk.models.lite_llm import LiteLlm
root_agent = Agent(
name="my_agent",
model=LiteLlm(model="dashscope/qwen-max"),
instruction="按需调用已连接的远程 Agent。",
sub_agents=load_remote_a2a_agents(),
)
app = App(
name=root_agent.name,
root_agent=root_agent,
plugins=[A2AClientCleanupPlugin()],
)其中:
load_remote_a2a_agents()将已绑定的 Agent 加载为子 Agent。A2AClientCleanupPlugin()在请求结束时清理客户端连接资源。如果代码中没有调用
load_remote_a2a_agents(),即使部署时选择了 Agent 连接,也无法在业务中调用远程 Agent。
使用注意
被连接的 Agent 必须已经部署,并提供可访问的 Agent Card。
连接新增、解绑或变更后,需要重新发布才会生效。
是否调用远程 Agent 由模型判断。建议为 Agent 设置清晰的名称、描述和指令,便于模型选择合适的远程 Agent。
FC 部署只能连接其他 Agent;需要让自己的 Agent 被连接时,请选择 ECS 或集群部署。
请勿在日志中打印
A2A_CONNECTIONS或其中包含的认证信息。