尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ADK A2A 实战:从零跑通分布式智能体协作,把孤岛智能体连成网络
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-docsADKAgent Development Kit里的 A2AAgent2Agent协议让运行在不同进程、不同机器上的智能体按统一契约互相调用。本文带你用 to_a2a() 和 RemoteA2aAgent 两个核心组件从零搭建一套可运行的分布式智能体协作系统。一个智能体为什么撑不起整套业务业务越做越复杂能力需求就开始分叉一个要调金融模型一个要查库存一个要盯物流。把这些能力全塞进同一个智能体代码会越堆越厚测试难拆、发布互相牵连换个团队接手更没门。出路不是写一个万能智能体而是拆成多个专职智能体各自独立部署再让它们学会互相说话。说话就得有共同语言Agent2AgentA2A协议就是这门语言它规定了智能体之间如何发现对方、如何传消息、如何跟踪任务。ADK 内置了 A2A 支持你不用手写 HTTP 客户端、不用自己解析协议包装好依赖就能用目前 Python 和 Go 支持标记为 Experimental 实验阶段。一个核心智能体定义在 agent.py 里的 ADK Agent Core可以被 CLI、Web UI、API Server 或 Python API 多种方式驱动这正是把智能体暴露成网络服务的前提本地子智能体 vs 远程 A2A动手前先分清ADK 里智能体协作有两档选型错了后面全返工本地子智能体远程 A2A 智能体运行位置和主智能体同一个进程独立服务可能在不同机器上通信方式内存直调没有网络开销走网络按 A2A 协议传输类比项目里的内部模块你调用的外部 API维护关系通常同一个团队、同一份代码可以是另一个团队、另一套技术栈一句话判断智能体和你的代码在一个仓库里就用本地子智能体智能体是别人的服务就用 A2A。搭建三步曲暴露、连接、消费 A2A 系统永远是两头一头把智能体暴露成服务另一头用客户端组件把它接进来。中间的网络、认证、序列化ADK 全部代劳。第一步把智能体暴露成 A2A 服务ADK 提供两种暴露方式按需挑。方式一to_a2a(root_agent)函数。适合我有一个智能体想让它可被远程调用的最快路径。它会自动根据智能体代码生成 agent card智能体名片声明它叫什么、会什么、在哪访问然后你用uvicorn起服务即可from google.adk.a2a.utils.agent_to_a2a import to_a2a # 让现有 ADK 智能体兼容 A2A a2a_app to_a2a(root_agent, port8001)注意port参数默认是8000它只写进自动生成的 agent card 里的 URL并不会真的绑定端口所以务必和你实际启动的端口保持一致否则名片指向的地址不可达。想用自己的名片通过agent_card参数传一个AgentCard对象或 JSON 文件路径即可。方式二adk api_server --a2a命令。适合要边开发边调试、或者一个目录下要暴露多个智能体的场景。你给每个智能体目录手写一张agent.json名片命令会把父文件夹下所有带名片的智能体一次性挂到同一台服务上还能配合adk web调试# 在 8001 端口暴露 check_prime_agent adk api_server --a2a --port 8001 contributing/samples/a2a/a2a_basic/remote_a2a排障时可以加--log_level debug拿到更详细的日志。两种方式殊途同归跑完之后智能体就以一个带 agent card 的网络服务形式存在了。第二步用 RemoteA2aAgent 连接远程智能体消费端只需一个组件RemoteA2aAgent告诉它智能体名片的地址它就变成你进程里的一个代理负责按 A2A 协议与远端服务通信。from google.adk.agents.remote_a2a_agent import AGENT_CARD_WELL_KNOWN_PATH from google.adk.agents.remote_a2a_agent import RemoteA2aAgent prime_agent RemoteA2aAgent( nameprime_agent, descriptionAgent that handles checking if numbers are prime., agent_card( fhttp://localhost:8001/a2a/check_prime_agent{AGENT_CARD_WELL_KNOWN_PATH} ), )其中agent_card可以是AgentCard对象、卡片 URL 或本地文件路径description可选。默认走 legacy 路径想启用新版 ADK-A2A 集成会向远端发送 A2A extension把use_legacyFalse加上即可。第三步像调用本地工具一样使用它把prime_agent塞进root_agent的sub_agents就完事了写法和本地子智能体一模一样root_agent Agent( modelgemini-flash-latest, nameroot_agent, instruction...把素数检查任务委托给 prime_agent..., sub_agents[roll_agent, prime_agent], )对root_agent来说prime_agent和roll_agent没有本质区别。它在 8001 端口、在另一台机器上这件事被 ADK 彻底藏了起来。该上 A2A 的 4 种场景和别硬上的 4 种情况✅ 这 4 种情况A2A 是对的工具接第三方服务你要的实时股票数据来自外部金融数据提供商对方用 A2A 智能体对外提供。微服务拆分订单处理、库存管理、运输各是一个独立智能体服务跨网络边界的通信正是 A2A 的主场。跨语言打通核心业务是 Python 智能体遗留系统是 JavaA2A 在中间提供一层标准化通信。平台化协作多个团队各自贡献智能体你需要用 A2A 这张正式契约保证互操作和稳定性。❌ 这 4 种情况请留在进程内内部代码组织把一个复杂任务拆成DataValidator这类小模块本地子智能体更快更简单。高频低延迟内部操作子智能体要和主智能体紧密配合实时处理数据流网络开销和序列化是纯负担。需要共享内存子智能体要直接读主智能体的内部状态走 A2A 反而要来回序列化。简单辅助函数不需要独立部署的小逻辑写成普通函数就够了别为它单开一个 A2A 智能体。场景演练客服智能体怎么查产品目录把前面的概念落到一个具体系统上。客服智能体要回答这个商品多少钱、有没有货而产品数据在另一个团队维护的产品目录智能体里。没有 A2A 时客服智能体和产品目录之间没有标准通信方式两个服务、两个团队接口格式靠口头约定一变就崩。上了 A2A 之后链路变成产品目录智能体先通过 A2A 服务暴露自己配好 agent card客服智能体这边用一个RemoteA2aAgent指向它。客服智能体调用这个代理就像调用本地工具一样底层通信全部由 ADK 处理。两个智能体从此各司其职目录团队改数据结构只动自己的服务客服团队一行不用改协作关系由协议契约兜底。5 分钟上手装依赖、定位示例 全部命令如下按顺序执行# 1. 安装 A2A 依赖 pip install google-adk[a2a] # 2. 克隆示例代码库 git clone https://gitcode.com/GitHub_Trending/ad/adk-docs进入 adk-python 的contributing/samples/a2a/官方示例分两类a2a_basic/演示消费远程智能体。远程端在remote_a2a/check_prime_agent/含agent.json名片本地端是根智能体加本地 roll_agent。a2a_root/演示用to_a2a()暴露远程智能体远程端在remote_a2a/hello_world/。启动远程服务端a2a_basic示例adk api_server --a2a --port 8001 contributing/samples/a2a/a2a_basic/remote_a2a另开终端启动开发界面adk web contributing/samples/a2a/浏览器打开 http://localhost:8000选中a2a_root或a2a_basic智能体问一句Is 7 a prime number?——这句话会穿过进程边界打到 8001 端口的远程素数检查智能体再走回来。两个进程一次协作完成。两个避坑提示远程服务用 8001 是因为adk web默认占 8000同一台机器上端口不能撞暴露端跑起来后访问智能体卡片端点形如 http://localhost:8001/.well-known/agent-card.jsonadk api_server --a2a方式则带智能体路径前缀能确认服务真的在线。Go 侧的消费示例在 docs 仓库的 examples/go/a2a_basic/先按remote_a2a/check_prime_agent/里的说明把服务端起在 8001 端口再go run main.go跑消费端。更多细节看官方文档docs/a2a/intro.md、docs/a2a/quickstart-exposing.md、docs/a2a/quickstart-consuming.md。小结把孤岛智能体连成协作网络回头盘点一下你今天拿到的东西A2A 不只是怎么调远端它还给分布式协作配了三件保险——消息传递时保留模型的推理轨迹Reasoning、跟踪超时之外的长任务Long-Running Tools、在智能体之间传递文件工件Artifacts。这三点让跨网络和跨进程的代价被压到接近本地。目前的边界也要清楚A2A 支持标记为 Experimental接口可能随版本调整a2a-sdk0.3.x 和 1.x 都能兼容ADK 会自动探测新集成建议直接面向 1.x。把智能体拆小、暴露出去、再连起来这是从单体脚本走向智能体系统的第一步。今天你搭好的这条链路就是那张网的第一个节点。【免费下载链接】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),仅供参考
RELATED

相关推荐

如何快速选对 Rime 输入方案:awesome-rime 完整指南

如何快速选对 Rime 输入方案:awesome-rime 完整指南

如何快速选对 Rime 输入方案:awesome-rime 完整指南 【免费下载链接】awesome-rime A curated list of Rime IME schemata and configs | Rime 輸入方案和配置列表 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-rime 拼音候选翻不完&#xff0…

📅 2026/10/23 7:46:55
平衡车FOC固件改造完全实战:hoverboard-firmware-hack-FOC 上手指南

平衡车FOC固件改造完全实战:hoverboard-firmware-hack-FOC 上手指南

平衡车FOC固件改造完全实战:hoverboard-firmware-hack-FOC 上手指南 【免费下载链接】hoverboard-firmware-hack-FOC With Field Oriented Control (FOC) 项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC 平衡车FOC固件项目…

📅 2026/10/23 7:46:55
Minecraft启动器PCL2:免费开源,5分钟跑起来还能自动装Java

Minecraft启动器PCL2:免费开源,5分钟跑起来还能自动装Java

Minecraft启动器PCL2:免费开源,5分钟跑起来还能自动装Java PCL2(Plain Craft Launcher 2)是一款免费开源的Minecraft启动器:自动匹配并下载Java、多版本并存、一键导入模组整合包,下载、启动、崩溃排查全包…

📅 2026/10/23 7:41:54
MORE NEWS

更多资讯

📰

AI原生架构与服务编排:后端开发范式迁移实战指南

1. 项目概述:这不是一次技术升级,而是一次开发范式的迁移“2026年后端开发进化:告别CRUD内卷,拥抱AI原生架构与服务编排新时代”——这个标题里没有一个词是虚的。它不是在喊口号,也不是在预测未来,而是对当…

📰

ST语言模板FB实现多设备协议解耦与复用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

YOLOv6工业视觉检测优化与部署实战复盘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

欧姆龙FINS协议实战指南:从物理连接到报文解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

JeeWMS仓库管理系统部署、Docker镜像化与PDA扫码实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

终端快捷指令实战:从 alias 到函数的安全配置与启动优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬