ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

ADK A2A 协议远程智能体接入:从零到一的智能体互通实战指南

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-docs如果你有多个 ADK 智能体分布在不同的进程里需要互相调用A2A 协议就是标准的打通方式。本文用三步从暴露到消费跑通链路并解决端口冲突、agent 卡片缺失这类高频坑。先跑起来Quick Start仓库里有一个现成的 Go 示例 examples/go/a2a_basic直接启动一个远端 A2A 服务export GOOGLE_API_KEY你的模型Key cd examples/go/a2a_basic/remote_a2a/check_prime_agent go run main.go # 启动 A2A 服务端口 8001 curl http://localhost:8001/.well-known/agent-card.json跑完你会看到go run打出Starting A2A prime checker server on port 8001而最后那条curl会返回一份 JSON 智能体卡片里面带name、skills、url三个字段。卡片能取到就说明这个智能体已经开门营业可以被其他智能体调用了。Python 版本则是pip install google-adk[a2a]后用to_a2a()加uvicorn起服务下文实操部分会展开。它到底在干什么A2A 原理拆解问题你的客服智能体跑在自己的服务里库存智能体是另一个团队维护、跑在另一个进程里。直接 import 对方的代码对方的任何接口改动都会让你跟着崩而且根本拿不到人家的源码。方案给库存智能体加一层 A2A Server把它我是谁、会干什么写成一份固定地址可访问的智能体卡片agent card调用方只需要知道这张卡片的 URL。机制ADK 把这件事拆成两个组件。服务提供方用to_a2a()把现成的 Agent 包成一个 Starlette 应用自动生成智能体卡片——从你的 Agent 配置里提取 description、工具和技能挂在.well-known/agent-card.json这个约定地址下消费方用RemoteA2aAgent指向卡片 URLADK 会自动拉取卡片、完成网络请求、事件序列化和格式转换。对你的 root agent 来说它只是sub_agents列表里多了一个成员。智能体卡片就像门店的招牌加营业时间顾客不需要知道仓库内部怎么运转照着招牌上的地址下单就行。顺带一提ADK 的 A2A 集成还内置了三个能力透传模型的推理轨迹Reasoning、追踪超长耗时工具调用避免超时、在智能体之间传递文件产物Artifacts。选型对比——什么时候用 A2A什么时候别用维度本地子智能体sub_agentsRemoteA2aAgentA2A自写 REST API tool 函数部署复杂度最低同一进程中远端需单独跑 A2A 服务中高接口需自己定义和维护延迟内存内调用最低多一跳网络毫秒到秒级与 A2A 相当但鉴权错误处理全靠自己适用团队规模单人或同一团队多团队、跨组织协作小规模、固定对接两三个服务语言要求与宿主同语言跨语言Python/Go/Java/Kotlin 均支持任意语言但接口是私有约定几个判断句如果你的协作只是把一个应用内的任务拆成模块直接写本地子智能体如果远端智能体由别的团队维护或用不同语言编写比如 Python 主智能体接 Java 库存服务选 A2A如果只是临时对接一个现成 HTTP 服务、对方又不打算改造成 A2A先用 tool 函数包一层 REST等对接面变大再迁移。明确不适合的情况高频低延迟的内部调用、子智能体需要直接读写主智能体内存状态的场景——序列化和网络开销会让 A2A 变成负资产。动手实践从 A2A 暴露到消费Step 1用 to_a2a() 暴露智能体from google.adk.agents import Agent from google.adk.a2a.utils.agent_to_a2a import to_a2a inventory_agent Agent( modelgemini-flash-latest, nameinventory_agent, instruction你是库存查询智能体查询库存时必须调用 query_stock 工具。, tools[query_stock], ) a2a_app to_a2a(inventory_agent, port8001) # port 只是写进卡片URL真正监听端口由 uvicorn 决定这一步做了什么把普通 Agent 变成可被网络访问的 A2A 应用智能体卡片由 ADK 自动生成不用手写。Step 2起服务并验证卡片uvicorn my_app:inventory_agent_module --host localhost --port 8001 # 注意 --port 要和 to_a2a 的 port 一致 curl http://localhost:8001/.well-known/agent-card.json预期输出节选{name: inventory_agent, url: http://localhost:8001, description: 你是库存查询智能体……, version: 0.0.1, ...}卡片能取到、url字段指向正确地址服务端才算就绪。Step 3用 RemoteA2aAgent 消费from google.adk.agents import Agent from google.adk.agents.remote_a2a_agent import RemoteA2aAgent remote_inventory RemoteA2aAgent( nameinventory_agent, description远程库存查询智能体, agent_cardhttp://localhost:8001/.well-known/agent-card.json, # 填 Step 2 验证过的卡片地址 ) root_agent Agent( modelgemini-flash-latest, nameservice_root, sub_agents[remote_inventory], # 和本地子智能体写法完全一样 )远程智能体和本地智能体在代码里长得一模一样root agent 用自然语言决定何时把任务委托给它剩下的网络细节 ADK 全包了。除了to_a2a()还有一种暴露方式是adk api_server --a2a它可以直接和adk web搭配调试且能指向一个含多个智能体的父目录但要求每个智能体文件夹里手动写好agent.json卡片细节见 docs/a2a/quickstart-consuming.md。一个完整的业务场景场景电商客服智能体要回答这个 SKU 还有货吗而库存能力在另一个团队维护的库存服务里。Before没有 A2A客服团队没有标准接口可用只能求库存团队导一个内部 REST API自己写鉴权、自己解析私有 JSON库存服务接口字段一改客服侧必须跟着发版两边靠口头约定的契约耦合出问题时各说各话After接入 A2A库存智能体用to_a2a()暴露会干什么、收什么格式全写在卡片里这就是正式契约客服侧只加一个RemoteA2aAgent对话里自然语言即可触发库存查询库存服务升级只改服务端和卡片客服侧代码不动调试时把adk web指向消费方智能体左侧 Trace/Events 面板能看到远程调用事件的完整链路和调本地工具的体验一致。踩坑与注意事项现象RemoteA2aAgent拉卡片失败或调用永远 404。原因to_a2a(port8001)只是把 8001 写进卡片 URL它本身不监听端口uvicorn --port起在别的端口时卡片就指向了不存在的地址。解法port参数必须和uvicorn --port保持一致起完服务先curl卡片确认再连消费端。现象adk api_server --a2a服务正常启动但对方找不到你的智能体。原因这条命令只暴露包含agent.json文件的智能体文件夹没有卡片等于不存在。解法在智能体目录补上agent.json至少含name、url、skills并核对卡片里url与服务的实际路径前缀一致。现象起调试界面时端口被占用服务起不来。原因adk web默认占 8000 端口示例里的 A2A 服务在 8001如果你把 A2A 也改成 8000 就会撞车。解法保持约定8000 留给调试 UIA2A 服务从 8001 起排多智能体时逐个递增。一个to_a2a()让你的智能体上线一个RemoteA2aAgent让对方把它当本地子智能体用这就是 A2A 的核心链路。Python 暴露与消费的完整流程见 docs/a2a/quickstart-exposing.md 和 docs/a2a/quickstart-consuming.mdGo、Java、Kotlin 版本指南汇总在 docs/a2a/index.md。可运行的双端示例在 examples/go/a2a_basic/流式模式下遇到消息重复可以再看 docs/a2a/a2a-extension.md。【免费下载链接】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),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表