用 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 协议Agent2Agent解决它把你的智能体暴露出去、把远端智能体接进来两边写法都很短。下面按选型 → 暴露 → 消费 → 跑通示例走一遍最小可行路径。一、先选型本地子智能体 vs 远程 A2A 智能体同一个 ADK 工程里协作有两种形态sub_agents里的本地子智能体和挂在独立服务上的远程 A2A 智能体。区别一张表说清维度本地子智能体远程 A2A 智能体进程归属和主智能体同进程独立服务跨进程/跨机器调用开销内存调用无网络与序列化网络请求 序列化延迟更高维护方你自己可以是别的团队/组织/第三方语言与框架与主智能体相同任意语言、任意框架判断标准照着选就行对方是别的团队或组织维护的服务 → 用 A2A。核心逻辑是 Python、要对接 Java 遗留系统 → 用 A2A 做标准化通信层。要平台化、给多个团队的智能体定交互契约 → 用 A2A。同进程内部拆模块、高频低延迟、需要直接共享主智能体状态 → 用本地子智能体。二、暴露一个 A2A 智能体的两种方式 ⚙️先认识一个概念AgentCard ≈ 智能体的名片——写清我是谁、会做什么、去哪找到我其他智能体全靠它发现你。to_a2a()两行代码的极简暴露最省事的方式把现有 Agent 包一层卡片自动生成。下面的写法把 Agent 对象转成 A2A 应用from google.adk.a2a.utils.agent_to_a2a import to_a2a a2a_app to_a2a(root_agent, port8001)to_a2a()会从你的 Agent 配置里提取 skills、capabilities、描述生成 well-known 端点可访问的卡片。想自己控制内容时给它传agent_card参数值可以是AgentCard对象也可以直接指到一张卡片 JSON 文件的路径。拿到的a2a_app用 uvicorn 起服务即可。adk api_server --a2a可调试、可多智能体托管需要adk web调试或者一个目录里挂着多个智能体时用内置的 CLI 暴露方式更合适。它只暴露子目录里带了agent.json即 AgentCard的智能体卡片要手写。启动命令按下面的形式指向含多个智能体子目录的父目录adk api_server --a2a --port 8001 contributing/samples/a2a/a2a_basic/remote_a2a这样一台服务器就能同时对外服务多个 A2A 智能体。三、消费远程智能体一个 RemoteA2aAgent 就够接入远端智能体只需一个构造函数。agent_card指向远端服务的 well-known 卡片地址这里示例是 8001 端口的素数检查智能体from google.adk.agents.remote_a2a_agent import RemoteA2aAgent prime_agent RemoteA2aAgent( nameprime_agent, description判断数字是否为素数的远程智能体。, agent_cardhttp://localhost:8001/a2a/check_prime_agent/.well-known/agent-card.json, )之后把prime_agent塞进root_agent的sub_agents列表即可。注意一点调用远端智能体的写法和调本地子智能体几乎一样协议转换、请求路由、数据格式都由 ADK 兜底你不用碰网络细节。四、跑通 a2a_basic 示例从安装到调通最小验证环境三步走。第一步装依赖pip install google-adk[a2a]第二步起远端智能体服务。8001 端口必须和adk web的默认端口 8000 错开否则本机自测会撞端口。a2a_root示例用to_a2a()暴露本地起服务uvicorn contributing.samples.a2a.a2a_root.remote_a2a.hello_world.agent:a2a_app --host localhost --port 8001a2a_basic示例则走adk api_server --a2a托管check_prime_agent其目录里带agent.jsonadk api_server --a2a --port 8001 contributing/samples/a2a/a2a_basic/remote_a2a第三步打开消费端的调试界面并选中对应的 root agentadk web contributing/samples/a2a/在页面对 root agent 输入掷一个 10 面骰子判断结果是不是素数。调用链是root agent 先委托本地 roll agent 掷骰拿到点数后经 A2A 协议交给远端的 prime agent 判断最后汇总答复。两个 Python 示例都在 adk-python 仓库的contributing/samples/a2a_basic与contributing/samples/a2a_root目录下Go 版本可直接看 examples/go/a2a_basic/。A2A 在 ADK 中仍属实验特性Python、Go、Java 可用。别把它用于高频、低延迟、强共享内存的内部调用——那种场景留给你同进程的本地子智能体。细节看官方文档 docs/a2a/index.md建议先本地跑通 a2a_basic再考虑跨团队部署。【免费下载链接】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),仅供参考