ADK A2A协议实战指南:3 步打通分布式智能体协作

📅 发布时间:2026/8/24 2:46:26
ADK A2A协议实战指南:3 步打通分布式智能体协作
ADK A2A协议实战指南3 步打通分布式智能体协作【免费下载链接】adk-docsAn open-source, code-first toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.项目地址: https://gitcode.com/GitHub_Trending/ad/adk-docs先给结论用 ADK 加 A2A 协议可以把跨服务调用另一个智能体的成本压到接近调用一个本地工具。全文按痛点 → 30 秒懂 A2A → 3 步跑通 → 两种暴露方式对比 → 选型清单 → 实战的顺序展开每节只回答一个问题。一个智能体扛不住怎么办想象一个具体场景你的客服智能体接到这款产品的库存和保修政策的问题但产品数据在另一个团队维护的智能体里两边的接口格式、部署语言、上线节奏完全不同想打通只能各自写适配层。再比如核心业务智能体用 Python 写需要调一个 Java 遗留系统里的专业能力或者你的系统拆成了订单、库存、运输几个独立微服务谁也不想把对方的代码塞进自己进程里。ADK 内置的 Agent2AgentA2A协议就是为这类跨边界协作准备的它给智能体之间的通信定了一套标准暴露方、消费方各自按标准实现中间的对接成本由协议本身吸收掉。30 秒看懂 A2A 协议一句话A2A 是让智能体互相发现和通信的协议每个智能体对外挂一张名片叫智能体卡片Agent Card即agent.json写清楚它叫什么、服务地址在哪、会哪些技能、输入输出是什么格式。类比一下Agent Card 就是智能体的营业执照加门店电话。别的智能体不用先上门谈合作拿到名片就知道怎么找它、它能干什么。消费方先拉名片、再发起请求整个协作从先握手变成先查档。最小路径3 步跑通 A2A 教程前面说先给能跑的例子再回来说原理这一步就兑现。全程三小步暴露 → 拿到卡片 → 消费。第 1 步用 to_a2a 暴露智能体把你现成的 ADK 智能体包一层它就变成一个可被网络访问的 A2A 服务端应用from google.adk.a2a.utils.agent_to_a2a import to_a2a # 把现有智能体包装成 A2A 应用监听 8001 端口 a2a_app to_a2a(root_agent, port8001)再用 uvicorn 启动这个应用。启动后会发生两件事智能体以 A2A 服务形态对外提供请求入口同时 ADK 在内存里自动生成了一张智能体卡片。第 2 步核对智能体卡片浏览器访问http://localhost:8001/.well-known/agent-card.json能看到自动生成的卡片包含名称、服务 URL、技能列表和输入输出模式。这张卡片是后续消费端的依据先确认它的描述、技能、地址写得对不对。第 3 步用 RemoteA2aAgent 消费远程智能体RemoteA2aAgent的用法就一句话给它一个卡片地址把它当普通子智能体挂进sub_agents即可。from google.adk.agents.remote_a2a_agent import RemoteA2aAgent # 只填智能体卡片的地址网络细节全部由 ADK 代劳 prime_agent RemoteA2aAgent( nameprime_agent, agent_cardhttp://localhost:8001/.well-known/agent-card.json, )运行后模型看到用户请求涉及素数检查时会自动通过 A2A 协议把请求发给 8001 端口的服务端对你来说调用方代码零改动HTTP、序列化、协议握手都在运行时里完成。两种暴露方式怎么选to_a2a vs adk api_server --a2aADK 提供两条暴露路径选型看你是一个人快速起服还是一个目录多智能体。对比维度to_a2a()adk api_server --a2a适合规模单个智能体一个目录里多个智能体智能体卡片自动生成也可传入agent_card覆盖需手写agent.json文件夹里有卡片的才暴露调试体验自己接 uvicorn适合精细控制原生搭配adk web开发调试顺手典型阶段上生产自己管服务、加认证、灰度团队联调多人多智能体一起起用adk api_server --a2a暴露时命令大致长这样指向包含多个智能体子目录的父文件夹# 在 8001 端口暴露目录下所有带 agent.json 的智能体 adk api_server --a2a --port 8001 path/to/remote_agents跑起来后每个带卡片的智能体都会在localhost:8001/a2a/智能体名路径下提供 A2A 服务消费端按路径拼卡片地址即可。本地子智能体 vs A2A 怎么选 先问一个前置问题对方智能体在不在你的进程里在用本地子智能体不在才谈 A2A。判断条件列在下面逐条打钩即可。倾向 A2A 的四个信号对方是独立部署的服务你只拿到一个地址智能体由别的团队或组织维护升级节奏不受你控制语言或框架不同Python 智能体要调 Java 写的专业组件需要一份正式的、可审查的交互契约A2A 协议本身就是契约倾向本地子智能体的四个信号只是把一个智能体内部的任务拆成可复用的模块代码都在同一仓库高频、低延迟操作网络往返的开销不可接受子智能体要直接读写主智能体的内存状态和会话上下文逻辑块很小不值得为它单独部署一句话记忆本地子智能体省的是网络开销A2A 省的是组织开销两者解决的不是同一个问题。实战客户服务 × 产品目录用上面那套最小路径拼一个真实链路说清谁暴露、谁调用、数据怎么流。角色分工产品目录智能体暴露方由商品数据团队维护持有 SKU、库存、保修政策客户服务智能体消费方直面用户自己没接商品库第一步目录团队把智能体包成 A2A 服务to_a2a或adk api_server --a2a二选一对外暴露智能体卡片。第二步客服智能体侧声明一个RemoteA2aAgentagent_card指向目录团队的卡片地址再挂进sub_agents。第三步用户问这款产品的保修政策是什么模型判断这是目录智能体的技能把问题经 A2A 协议发出去目录侧检索数据、生成回答再沿原路返回客服智能体把它并入最终回复。整条链路里没有人手写 HTTP 客户端关注点天然分离目录团队只管维护数据侧客服团队只管对话侧两边只通过 A2A 协议耦合。想加订单查询智能体时重复同样的两步即可消费方代码几乎不动。收尾ADK 对 A2A 的价值就一句把分布式智能体协作的成本降到跟调一个本地工具差不多——暴露是包一层消费是填一个卡片地址中间的网络与序列化都进了运行时。延伸阅读ADK A2A 官方文档A2A 暴露快速上手A2A 消费快速上手【免费下载链接】adk-docsAn open-source, code-first toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.项目地址: https://gitcode.com/GitHub_Trending/ad/adk-docs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考