资讯动态

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

发布时间:2026/10/23 9:04:45 来源:尧图企业网站定制
ADK 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-docsAgent Development KitADK是一个代码优先的智能体开发工具包用于构建、评估和部署 AI 智能体。它内置的 A2A 协议Agent2Agent让独立部署的智能体用同一套标准互通三步即可搭起可分布部署的多智能体协作系统。客服智能体够不着产品目录先看一个真实痛点客服智能体需要查询产品价格和库存而数据握在产品目录智能体手里——它是独立部署的服务由另一个团队维护。这时候你只能手写一层私有胶水代码和对方的接口强耦合对方接口一变你的调用侧跟着坏双方技术栈不同连对方能做什么都没有统一描述。单一智能体干不完所有活分工之后又缺一座桥。A2A 协议要解决的正是这个跨服务互通的问题。一分钟看懂 A2A给每个智能体一张名片用两个类比就能抓住核心概念。第一个类比是名片。每个对外暴露的智能体都会带一份 Agent Card智能体卡片一个 JSON 文件写清楚它是谁、会哪些技能、访问地址在哪。调用方不需要读懂你的代码读名片就够了默认放在 well-known 路径.well-known/agent-card.json下。第二个类比是标准电话线。A2A 协议统一了请求怎么发、任务怎么跟踪、结果怎么回Python、Go、Java 写的实现说的都是同一种话。对应到工程里就是两个角色暴露侧把智能体包进 A2A 服务器A2AServer相当于给它开一个对外窗口任何人都能通过网络发起请求消费侧用RemoteA2aAgent做客户端代理拨号、认证、格式转换这些细节它全包了你的代码里看起来就像在调本地工具。选型对照表本地子智能体 vs 远程 A2A动手之前先回答一个问题什么时候用本地子智能体就够了看这张表。维度本地子智能体远程 A2A 智能体运行位置与主智能体同一进程独立服务走网络通信通信成本内存级调用延迟极低有网络与序列化开销归属同一团队、同一代码库不同团队、组织或第三方技术栈通常同语言同框架跨语言、跨框架Python/Go/Java契约形式代码层面的约定A2A 协议正式且可对外校验状态共享可直接共享内存与上下文只能通过协议传递数据该上 A2A 的四种情况对方是独立服务例如专业金融建模智能体对方由不同团队或组织维护发布节奏不受你控制要跨语言对接比如 Python 主体接入 Java 遗留组件平台向多团队开放需要正式契约来保证兼容性和稳定性。别用 A2A 的四种情况本地子智能体更合适只是把一个复杂任务拆成模块整理代码结构高频、低延迟、与主智能体紧耦合的内部操作需要直接共享内存或上下文网络开销反而拖累性能简单可复用的逻辑块不需要独立部署和状态管理。 三步落地暴露、连接、验证选型定了接入其实就三步。先装依赖pip install google-adk[a2a]第一步把智能体暴露为 A2A 服务方式一to_a2a()最简单包一下现有智能体就完成 A2A 化后台还会自动从智能体配置里生成智能体卡片。from google.adk.a2a.utils.agent_to_a2a import to_a2a a2a_app to_a2a(root_agent, port8001)随后用uvicorn启动端口务必与port参数一致想自定义卡片通过agent_card参数传入AgentCard对象或 JSON 文件路径即可。方式二用内置命令托管adk api_server --a2a --port 8001 ./agents/catalog_service它和adk web配合调试更方便指定父目录时凡是包含agent.json的子文件夹会被自动启用一个服务器能同时暴露多个智能体。第二步在调用侧接入远程智能体消费侧只需配置RemoteA2aAgent指向对方的智能体卡片地址from google.adk.agents.remote_a2a_agent import RemoteA2aAgent prime_agent RemoteA2aAgent( nameprime_agent, descriptionAgent that handles checking if numbers are prime., agent_cardhttp://localhost:8001/a2a/check_prime_agent/.well-known/agent-card.json, )把它加进root_agent的sub_agents并在 instruction 里写明素数检查交给prime_agent用法和本地工具没有区别。第三步跑通一次对话验证启动开发界面确认整条链路真实可用adk web ./agents问一句7 是素数吗请求被透明转发到 8001 端口的服务并返回正确结果就算跑通了。也可以先打开http://localhost:8001/.well-known/agent-card.json检查智能体卡片是否生成正确。接入前后对比客服 产品目录场景回到开篇的例子接入 A2A 后的差异很直观接入前客服侧查目录只能靠私有约定或手写胶水代码目录服务接口一变动双方都要手工修接入后产品目录智能体通过 A2A 服务器对外提供服务客服智能体配置一个RemoteA2aAgent就完成消费网络通信、认证、格式转换全部由 ADK 兜底。收益在于边界清晰目录团队只维护卡片和服务本身客服团队只依赖卡片上的描述。两边可以独立升级、独立部署新增一个调用方时目录侧零改动。⚠️ 踩坑与注意事项上线前把这几点过一遍仍是实验阶段官方文档将 A2A 标记为 Experimental接口可能变动关键链路请先小流量验证SDK 版本兼容a2a-sdk0.3.x 与 1.x 都能工作ADK 会自动探测已安装版本无需改代码新项目建议面向 1.x 编写端口约定本地测试时adk web默认占 8000A2A 服务器通常用 8001 避开冲突。注意to_a2a的port参数只用于拼卡片里的 URL本身不绑定端口必须和你实际服务的端口一致agent.json 文件名要精确adk api_server --a2a只暴露含有名为agent.json文件的智能体文件夹默认内存态to_a2a默认使用内存实现存放会话与工件生产环境需要自行考虑持久化排障手段给adk api_server加--log_level debug看更详细的日志实验功能告警可用环境变量ADK_SUPPRESS_A2A_EXPERIMENTAL_FEATURE_WARNINGStrue静默。下一步官方文档与示例A2A 协议总览docs/a2a/index.md暴露智能体教程Python/Go/Javadocs/a2a/quickstart-exposing.md消费智能体教程Python/Go/Javadocs/a2a/quickstart-consuming.md仓库内examples/go/a2a_basic目录还有一份 Go 版的素数检查服务最小实现可以对照 Python 写法交叉学习。【免费下载链接】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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑