南阳网站设计,网站清除数据库,广州城市建设网站,淮南做网站的公司打破孤岛#xff1a;Google A2A 协议——构建下一代多智能体协作系统的基石
在 AI 智能体#xff08;AI Agents#xff09;飞速发展的今天#xff0c;我们拥有了基于 LangGraph、CrewAI、Google ADK 等不同框架构建的强大智能体。然而#xff0c;这些“超级大脑”往往各自…打破孤岛Google A2A 协议——构建下一代多智能体协作系统的基石在 AI 智能体AI Agents飞速发展的今天我们拥有了基于 LangGraph、CrewAI、Google ADK 等不同框架构建的强大智能体。然而这些“超级大脑”往往各自为战形成了新的技术孤岛。如何让基于不同技术栈的智能体像人类团队一样无缝协作Google 推出的Agent-to-Agent (A2A)协议正是为了解决这一核心难题。本文将深入剖析 A2A 的核心概念、通信模式、安全机制并通过实战代码展示如何构建一个可互操作的日历助手。1. 引言从“单兵作战”到“团队协同”单个 AI 智能体无论其底层模型LLM多么强大在面对复杂、多维度的企业级任务时往往显得力不从心。试想一个场景你需要规划一次商务差旅。这不仅涉及日程查询还涉及机票预订、酒店比价、费用审批以及向团队发送通知。如果使用单个智能体它需要集成所有这些外部工具导致上下文臃肿、维护困难。如果使用多个智能体可能会出现这样的情况HR 的审批智能体是用 LangChain 写的差旅预订智能体是用 CrewAI 写的而日程管理是 Google ADK 构建的。它们之间语言不通无法直接交互。Google A2A (Inter-Agent Communication)协议的出现就是为了统一这种“通天塔”般的混乱。作为一个开放标准A2A 允许不同框架、不同来源的智能体通过标准化的 HTTP 协议进行发现、通信和任务委派从而构建出模块化、可扩展的多智能体系统 (Multi-Agent Systems, MAS)。目前包括 Microsoft、Salesforce、SAP、Atlassian 在内的科技巨头均已支持或计划集成 A2A这预示着它极有可能成为未来 AI 互联的事实标准。2. A2A 核心架构解析要理解 A2A首先需要理解支撑其运行的四大支柱核心参与者、智能体卡片、发现机制以及通信模式。2.1 核心参与者 (Core Actors)在 A2A 的世界里角色定义非常清晰用户 (User)任务的发起者人类或自动化触发器。A2A 客户端 (Client Agent)请求方。它代表用户向其他智能体发出指令。它不需要知道服务端的具体实现细节只关心接口。A2A 服务器 (Remote Agent)服务方。这是一个提供 HTTP 端点的智能体接收请求、处理任务并返回结果Artifacts。这种架构实现了“不透明性” (Opacity)——客户端无需知道服务端是用 Python 还是 Go 写的也无需知道它是调用了 Gemini 还是 GPT只要遵循 A2A 协议即可。2.2 智能体卡片 (Agent Card)智能体的“数字身份证”如果两个陌生人要合作首先要交换名片。在 A2A 中智能体卡片 (Agent Card)就是这张名片。它通常是一个 JSON 文件定义了智能体的身份、地址、能力和接口规范。一个标准的智能体卡片包含以下关键信息基本信息名称、描述、版本、API 端点 URL。能力 (Capabilities)是否支持流式传输 (Streaming)、推送通知 (Webhooks) 等。认证方式例如 API Key 或 OAuth。技能 (Skills)这是最核心的部分。它详细列出了智能体能做什么如get_weather,book_flight以及输入输出的格式。示例WeatherBot 的智能体卡片{name:WeatherBot,description:提供精准的天气预报服务。,url:http://weather-service.example.com/a2a,version:1.0.0,capabilities:{streaming:true,// 支持流式输出pushNotifications:false},authentication:{schemes:[apiKey]},skills:[{id:get_current_weather,name:获取当前天气,description:查询任何地点的实时天气。,inputModes:[text],outputModes:[text],examples:[巴黎现在的天气怎么样]}]}2.3 智能体发现 (Agent Discovery)客户端如何找到服务端的智能体卡片A2A 定义了三种策略Well-Known URI这是最通用的方式。智能体将卡片信息托管在固定路径/.well-known/agent.json文件下便于自动化扫描和发现。托管注册中心 (Curated Registries)企业内部的“应用商店”集中管理所有可用智能体适合需要严格权限控制的场景。直接配置点对点私有连接直接交换卡片信息。3. 通信与交互模式让协作更灵活A2A 不仅仅是简单的“问答”它基于任务 (Task)的概念支持多种复杂的业务流程。所有通信均基于 HTTP(S) 并使用JSON-RPC 2.0作为载体。消息体包含attributes(元数据) 和parts(实际内容支持文本、文件、结构化数据)。A2A 提供了三种交互机制以适应不同时效性的需求3.1 同步请求/响应 (Synchronous)场景查汇率、查天气、简单计算。流程客户端发送sendTask- 服务器处理 - 服务器立即返回完整结果。特点阻塞式速度快适合短任务。3.2 异步轮询 (Asynchronous Polling)场景生成高清图片、分析大型数据集。流程客户端发送请求。服务器返回“处理中”及 Task ID。客户端定期询问“好了吗”服务器最终返回“已完成”及结果。3.3 流式更新 (Streaming / SSE)场景LLM 文本生成、实时日志、股票行情。流程使用sendTaskSubscribe方法。建立持久连接服务器端主动推送Server-Sent Events增量数据。优势用户体验极佳无需等待整个任务完成即可看到部分结果。3.4 推送通知 (Webhooks)场景耗时极长的任务如训练模型、审批流程。机制客户端注册一个 URL当任务完成时服务器主动向该 URL 发送回调。避免了客户端频繁轮询造成的资源浪费。4. 关键辨析A2A vs. MCP在 AI 协议领域Anthropic 提出的MCP (Model Context Protocol)同样备受关注。很多开发者容易混淆二者。简单来说MCP 负责“脑与手”的连接A2A 负责“人与人”的协作。MCP (Model Context Protocol)定位连接 LLM 与数据源/工具。作用让模型能读取本地文件、连接数据库、使用计算器。层级底层关注上下文构建。A2A (Inter-Agent Communication)定位连接智能体与智能体。作用任务委派、工作流编排、多方协商。层级高层关注系统间的协作。协同效应一个理想的架构是单个智能体内部使用 MCP 连接数据库和工具而该智能体对外通过 A2A 协议与其他智能体协作。5. 安全性企业级应用的前提开放意味着风险A2A 在设计之初就将安全性置于核心位置双向 TLS (mTLS)不仅仅是服务器有证书客户端也需要验证确保通信双方身份可信防止中间人攻击。身份验证智能体卡片中明确声明支持的 Auth 协议如 OAuth 2.0, API Key。凭证严格通过 HTTP Header 传递绝不出现在 URL 或日志中。审计日志所有 A2A 交互都会生成标准化的审计痕迹记录谁哪个智能体在什么时间做了什么操作满足企业合规需求。6. 实战演练构建一个 Google 日历智能体纸上得来终觉浅。下面我们使用 Python 和 Google ADK (Agent Development Kit) 来构建一个符合 A2A 标准的日历智能体。场景描述我们创建一个Calendar Agent它能够对外暴露 A2A 接口。接收自然语言指令如“明天上午我有空吗”。内部调用 Google Calendar API 查询数据。返回结果。步骤 1: 定义核心逻辑 (ADK Agent)首先我们需要创建一个基于 LLM 的智能体并赋予它操作日历的工具。importosimportdatetimeimportasynciofromgoogle.adk.agentsimportLlmAgentfromgoogle.adk.tools.google_api_toolimportCalendarToolsetasyncdefcreate_agent(client_id,client_secret)-LlmAgent:构建 ADK 智能体核心逻辑# 1. 初始化工具集连接 Google Calendar APItoolsetCalendarToolset(client_idclient_id,client_secretclient_secret)# 2. 实例化智能体returnLlmAgent(modelgemini-2.5,# 使用 Gemini 模型namecalendar_agent,description帮助用户管理日程的智能助手,# 3. 系统指令注入时间上下文非常重要instructionf 你是一个专门管理用户日历的智能体。 用户会询问日程安排或要求修改日历。 请使用提供的工具与 Calendar API 交互。 今天是{datetime.datetime.now()}。 请使用 RFC3339 格式的时间戳。 ,toolsawaittoolset.get_tools(),# 挂载工具)步骤 2: 定义智能体卡片与 A2A 服务接下来我们将这个核心逻辑包装成一个 Web 服务并生成智能体卡片。fromuvicornimportrunfromstarlette.applicationsimportStarlettefromstarlette.routingimportRoutefromstarlette.responsesimportPlainTextResponsefromgoogle.adk.a2aimportAgentCard,AgentSkill,AgentCapabilities,A2AStarletteApplication# ... 引入其他必要依赖 (Runner, Executor 等)defmain(host:localhost,port:8000):# 环境变量检查 (省略...)# 1. 定义技能这是卡片中展示给其他智能体看的部分skillAgentSkill(idcheck_availability,name检查空闲状态,description通过 Google Calendar 检查用户在特定时间段是否有空,tags[calendar,productivity],examples[明天上午10点到11点我有空吗],)# 2. 创建智能体卡片agent_cardAgentCard(nameCalendar Agent,description管理用户日历的智能代理,urlfhttp://{host}:{port}/,# 自身的访问地址version1.0.0,defaultInputModes[text],defaultOutputModes[text],capabilitiesAgentCapabilities(streamingTrue),# 支持流式输出skills[skill],)# 3. 初始化 ADK 智能体adk_agentasyncio.run(create_agent(client_idos.getenv(GOOGLE_CLIENT_ID),client_secretos.getenv(GOOGLE_CLIENT_SECRET),))# 4. 配置 A2A 执行器 (连接 HTTP 请求与 LLM 逻辑)runnerRunner(app_nameagent_card.name,agentadk_agent,# 使用内存存储会话和上下文 (生产环境应使用数据库)artifact_serviceInMemoryArtifactService(),session_serviceInMemorySessionService(),memory_serviceInMemoryMemoryService(),)agent_executorADKAgentExecutor(runner,agent_card)# 5. 设置 A2A 应用request_handlerDefaultRequestHandler(agent_executoragent_executor,task_storeInMemoryTaskStore())# A2AStarletteApplication 会自动处理 /.well-known/agent.json 和 /tasks 等路由a2a_appA2AStarletteApplication(agent_cardagent_card,http_handlerrequest_handler)# 6. 启动 Web 服务器appStarlette(routesa2a_app.routes())print(fCalendar Agent running at http://{host}:{port})run(app,hosthost,portport)if__name____main__:main()代码解析AgentSkill: 清晰地告诉外界“我能做什么”。当另一个智能体想要“检查空闲时间”时它会通过语义匹配找到这个 Skill。A2AStarletteApplication: Google ADK 提供的封装类它自动处理了复杂的 JSON-RPC 协议解析、Task 状态管理和 SSE 流式传输让开发者只需关注业务逻辑。InMemoryService: 示例中使用了内存存储但在真实生产环境中你需要将其替换为 Redis 或 Postgres 来持久化会话状态。7. 实际应用场景展望A2A 的价值不仅在于代码实现更在于它能解锁的业务场景企业工作流编排 (Workflow Orchestration)主控智能体 (Router)接收“入职新员工”指令。它通过 A2A 调用HR 智能体(CrewAI 框架) 录入信息。随后调用IT 智能体(LangGraph 框架) 开通账号。最后调用采购智能体(ADK 框架) 下单笔记本电脑。全过程自动流转状态透明。动态信息检索 (Dynamic Retrieval)一个负责写研报的智能体发现数据缺失。它自动搜索注册中心发现了一个Bloomberg 数据智能体。它动态发起 A2A 请求获取最新股价然后继续完成研报。8. 总结Google A2A 协议不仅是一项技术标准更是一种思维方式的转变——从构建全能的“巨型智能体”转向构建专注、模块化、可协作的“智能体生态”。通过标准化的智能体卡片和灵活的通信协议A2A 解决了异构框架互通的难题降低了集成成本。对于开发者而言掌握 A2A 意味着你可以利用社区中最优秀的专用智能体来拼装你的应用而不是从零开始重复造轮子。随着 AI 应用逐渐深入企业核心业务A2A 所倡导的互操作性、安全性和模块化必将成为构建下一代智能系统的关键要素。参考资料1.Chen, B. (2025, April 22). How to Build Your First Google A2A Project: A Step-by-Step Tutorial. Trickle.so Blog. https://www.trickle.so/blog/how-to-build-google-a2a-project2.Google A2A GitHub Repository. https://github.com/google-a2a/A2A3.Google Agent Development Kit (ADK) https://google.github.io/adk-docs/4.Getting Started with Agent-to-Agent (A2A) Protocol: https://codelabs.developers.google.com/intro-a2a-purchasing-concierge#05.Google Agent Discovery - https://a2a-protocol.org/latest/6.Communication between different AI frameworks such as LangGraph, CrewAI, and Google ADK https://www.trickle.so/blog/how-to-build-google-a2a-project7.Designing Collaborative Multi-Agent Systems with the A2A Protocol https://www.oreilly.com/radar/designing-collaborative-multi-agent-systems-with-the-a2a-protocol/8.Antonio Gulli 《Agentic Design Patterns》