什么是A2A协议?
什么是A2A协议?
A2A协议是一个开放标准,让AI智能体之间能够无缝通信和协作。它为使用不同框架、来自不同供应商构建的智能体提供了共同语言,促进互操作性并打破孤岛。智能体是在其环境中独立行动的自主问题解决者。A2A让来自不同开发者、基于不同框架、属于不同组织的智能体能够联合起来,共同工作。
为什么使用A2A协议
A2A解决了AI智能体协作中的关键挑战。它为智能体交互提供了标准化方法。本节解释A2A解决的问题和提供的好处。
A2A解决的问题
考虑用户要求AI助手规划一次国际旅行的请求。这个任务涉及协调多个专业智能体,例如:
- 航班预订智能体
- 酒店预订智能体
- 本地旅游推荐智能体
- 货币转换智能体
没有A2A,集成这些不同的智能体会面临几个挑战:
智能体暴露问题:开发者经常将智能体包装为工具来暴露给其他智能体,类似于在多智能体控制平台(模型上下文协议)中暴露工具的方式。然而,这种方法效率低下,因为智能体被设计为直接协商。将智能体包装为工具限制了它们的能力。A2A允许智能体以原本的形式暴露,无需这种包装。
自定义集成:每个交互都需要自定义的点对点解决方案,造成巨大的工程开销。
创新缓慢:为每个新集成进行定制开发会减缓创新。
可扩展性问题:随着智能体数量和交互的增长,系统变得难以扩展和维护。
互操作性:这种方法限制了互操作性,阻止了复杂AI生态系统的有机形成。
安全漏洞:临时通信通常缺乏一致的安全措施。
A2A协议通过为AI智能体建立可靠和安全的互操作性来解决这些挑战。
A2A示例场景
本节提供了一个示例场景,说明使用A2A(Agent2Agent)协议进行AI智能体之间复杂交互的好处。
用户的复杂请求
用户与AI助手互动,给出像"规划一次国际旅行"这样的复杂提示。
graph LR User[用户] --> Prompt[提示] --> AI_Assistant[AI助手]
协作的需求
AI助手收到提示,意识到需要调用多个专业智能体来完成请求。这些智能体包括航班预订智能体、酒店预订智能体、货币转换智能体和本地旅游智能体。
graph LR subgraph "专业智能体" FBA[✈️ 航班预订智能体] HRA[🏨 酒店预订智能体] CCA[💱 货币转换智能体] LTA[🚌 本地旅游智能体] end AI_Assistant[🤖 AI助手] --> FBA AI_Assistant --> HRA AI_Assistant --> CCA AI_Assistant --> LTA
互操作性挑战
核心问题:智能体无法协同工作,因为每个都有自己的定制开发和部署。
缺乏标准化协议的后果是,这些智能体不能相互协作,更不用说发现它们能做什么。各个智能体(航班、酒店、货币和旅游)都是孤立的。
“使用A2A"的解决方案
A2A协议提供标准方法和数据结构,让智能体相互通信,无论其底层实现如何,因此相同的智能体可以用作互联系统,通过标准化协议无缝通信。
AI助手现在充当协调者,从所有启用A2A的智能体接收凝聚信息。然后它呈现一个单一、完整的旅行计划,作为对用户初始提示的无缝响应。
A2A的核心优势
实施A2A协议在整个AI生态系统中提供了显著优势:
安全协作:没有标准,很难确保智能体之间的安全通信。A2A使用HTTPS进行安全通信,并维护不透明操作,因此智能体在协作期间无法看到其他智能体的内部工作。
互操作性:A2A打破了不同AI智能体生态系统之间的孤岛,使来自各种供应商和框架的智能体能够无缝协作。
智能体自主性:A2A允许智能体保持其个体能力,在与其他智能体协作时作为自主实体行动。
降低集成复杂性:协议标准化智能体通信,使团队能够专注于其智能体提供的独特价值。
支持长时间运行操作:协议支持长时间运行操作(LRO)以及使用服务器发送事件(SSE)和异步执行的流式传输。
A2A的关键设计原则
A2A开发遵循优先考虑广泛采用、企业级能力和面向未来的原则。
简单性:A2A利用现有标准,如HTTP、JSON-RPC和服务器发送事件(SSE)。这避免了重新发明核心技术,加速了开发者采用。
企业就绪:A2A解决关键的企业需求。它与强大的身份验证、授权、安全、隐私、跟踪和监控的标准Web实践保持一致。
异步:A2A原生支持长时间运行任务。它处理智能体或用户可能不保持持续连接的场景。它使用流式传输和推送通知等机制。
模态无关:协议允许智能体使用各种内容类型进行通信。这使得除了纯文本之外的丰富和灵活交互成为可能。
不透明执行:智能体有效协作,无需暴露其内部逻辑、内存或专有工具。交互依赖于声明的能力和交换的上下文。这保护了知识产权并增强了安全性。
理解智能体技术栈:A2A、MCP、智能体框架和模型
A2A位于更广泛的智能体技术栈中,包括:
- A2A:标准化部署在不同组织并使用不同框架开发的智能体之间的通信。
- MCP:将模型连接到数据和外部资源。
- 框架(如ADK):提供构建智能体的工具包。
- 模型:智能体推理的基础,可以是任何大语言模型(LLM)。
A2A和MCP
在AI通信的更广泛生态系统中,您可能熟悉旨在促进智能体、模型和工具之间交互的协议。值得注意的是,模型上下文协议(MCP)是一个新兴标准,专注于将大语言模型(LLM)与数据和外部资源连接。
Agent2Agent(A2A)协议旨在标准化AI智能体之间的通信,特别是那些部署在外部系统中的智能体。A2A定位为补充MCP,解决智能体交互的不同但相关的方面。
MCP的重点:减少将智能体与工具和数据连接所涉及的复杂性。工具通常是无状态的,执行特定的预定义功能(例如计算器、数据库查询)。
A2A的重点:使智能体能够在其原生模态内协作,允许它们作为智能体(或用户)进行通信,而不是被限制为类似工具的交互。这使得复杂的多轮交互成为可能,其中智能体推理、规划并将任务委托给其他智能体。例如,这促进了多轮交互,如下订单时涉及谈判或澄清的交互。
将智能体封装为简单工具的做法本质上是有限的,因为它无法捕获智能体的全部能力。这个关键区别在《为什么智能体不是工具》一文中有详细探讨。
更深入的比较,请参考A2A和MCP比较文档。
A2A和ADK
智能体开发工具包(ADK)是Google开发的开源智能体开发工具包。A2A是智能体的通信协议,支持智能体间通信,无论其构建所使用的框架如何(例如ADK、LangGraph或Crew AI)。ADK是用于开发和部署AI智能体的灵活和模块化框架。虽然针对Gemini AI和Google生态系统进行了优化,ADK是模型无关的、部署无关的,并为与其他框架的兼容性而构建。
A2A请求生命周期
A2A请求生命周期是详细说明请求遵循的四个主要步骤的序列:智能体发现、身份验证、sendMessage
API和sendMessageStream
API。以下图表深入了解操作流程,说明客户端、A2A服务器和认证服务器之间的交互。
sequenceDiagram participant Client as 客户端 participant A2A_Server as A2A服务器 participant Auth_Server as 认证服务器 rect rgb(240, 240, 240) Note over Client, A2A_Server: 1. 智能体发现 Client->>A2A_Server: GET智能体卡片 (/.well-known/agent-card) A2A_Server-->>Client: 返回智能体卡片 end rect rgb(240, 240, 240) Note over Client, Auth_Server: 2. 身份验证 Client->>Client: 解析智能体卡片获取安全方案 alt 安全方案是"openIdConnect" Client->>Auth_Server: 基于"authorizationUrl"和"tokenUrl"请求令牌 Auth_Server-->>Client: 返回JWT end end rect rgb(240, 240, 240) Note over Client, A2A_Server: 3. sendMessage API Client->>Client: 解析智能体卡片获取"url"参数发送API请求 Client->>A2A_Server: POST /sendMessage (带JWT) A2A_Server->>A2A_Server: 处理消息并创建任务 A2A_Server-->>Client: 返回任务响应 end rect rgb(240, 240, 240) Note over Client, A2A_Server: 4. sendMessageStream API Client->>A2A_Server: POST /sendMessageStream (带JWT) A2A_Server-->>Client: 流:任务(已提交) A2A_Server-->>Client: 流:任务状态更新事件(工作中) A2A_Server-->>Client: 流:任务工件更新事件(工件A) A2A_Server-->>Client: 流:任务工件更新事件(工件B) A2A_Server-->>Client: 流:任务状态更新事件(已完成) end
下一步
了解构成A2A协议基础的核心概念。