A2A

更新时间:
复制 MD 格式

A2A(Agent-to-Agent)用于让一个 Agent 调用另一个 Agent。绑定 A2A 连接后,当前 Agent 可以在处理任务时按需把子任务交给已连接的远程 Agent。

本文适用于需要让多个 Agent 协作的用户,例如让客服 Agent 调用查询 Agent、让规划 Agent 调用执行 Agent,或让一个主 Agent 编排多个专业 Agent。

工作方式

当前 Agent 绑定 A2A 连接
  → 平台注入 A2A_CONNECTIONS
  → Agent 应用加载远程 Agent
  → 模型按需将任务交给远程 Agent

A2A 涉及两种能力:

能力

含义

用户需要关注

连接其他 Agent

当前 Agent 作为调用方,调用已选择的远程 Agent。

创建或管理 Agent 时选择需要连接的 Agent。

被其他 Agent 连接

当前 Agent 作为被调用方,对外提供 Agent Card,说明名称、能力和访问地址。

确认当前部署方式是否支持被连接,并为 Agent 设置清晰的名称和描述。

平台负责传递连接地址和认证信息。使用 Agent 市场部署或快速创建 Agent 时,通常不需要手动填写 A2A 地址、端口或 Token。

使用 A2A 连接

创建 Agent 时选择连接

  1. 登录 计算巢控制台。

  2. 进入 Agent 部署,开始创建 Agent。

  3. 在 工具配置 > 应用连接 中选择需要调用的 Agent。

  4. 按页面提示完成其余部署参数并提交创建。

部署完成后,当前 Agent 即可在运行时使用已选择的远程 Agent。实际是否调用远程 Agent,由模型结合远程 Agent 的名称、描述和当前任务判断。

为已创建 Agent 变更连接

  1. 进入 Agent 部署 > 我的 Agent。

  2. 点击目标 Agent 的 查看详情。

  3. 在 Agent 管理 > Agent 连接 中绑定或变更应用连接。

  4. 返回 部署物 页签,找到最新部署物并点击 发布,使连接配置生效。

部署方式支持情况

部署方式

连接其他 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 或其中包含的认证信息。