4月9日,Google重磅发布了A2A(Agent to Agent) 协议,为 AI Agent能力开放和标准化,又添了一把火。那么这个 A2A协议 到底做什么?和之前火爆的MCP Server又是什么关系?是不是会产生标准之争? 本文我们就来了解下这个新进出炉的A2A协议,以及它的应用场景。
A2A与MCP
A2A,即 Agent to Agent 协议,是由 Google刚刚推出的一个AI基础开源协议,旨在实现 AI Agent之间的通信和互操作性。通过为代理提供标准化的协作方式,即无论其底层框架或供应商如何,不同 AI Agent都能够安全地进行信息交换和协作,并可以跨各种企业平台和应用程序工作。
这个协议提供的 Agent 和 Agent 之间的一个通用通信标准。
它和近期大火的 MCP (Model Context Protocol)(前文介绍 【】)其实并不是竞争关系。Google官方在发布声明中也重点说到,这个协议其实是针对MCP协议的补充。
MCP 是 AI 公司 Anthropic(claude母公司)去年底推出的开放协议,它旨在标准化大语言模型(LLM)与外部数据源、工具之间的交互接口。
随着 OpenAI 等主流大模型宣布支持MCP接入,MCP目前很有潜力成为 AI 应用领域的一个基础规范,近期各种MCP Server雨后春笋般纷纷涌现,也证明这个协议得到了广泛认可。
所谓三流企业做产品、二流企业做品牌、一流企业做标准,Google 很敏锐地捕捉到了 AI Agent 应用标准拼图中,MCP之外很重要的一块。
就是MCP定义了 LLM 和 Agent 之间的连接,可以利用 Agent 为LLM扩充能力,以后也肯定会出现类似App Store这样的Agent商店,整合各类不同的Agent。
但对于后续大规模的的AI应用,将会集成很多Agent共同协作,这些Agent之间的交互就是目前缺失的一块拼图。A2A起到的就是这个作用。很类似于微服务系统中的服务间通信协议。
A2A的设计原则
官方给出了A2A协议的设计原则:
-
拥抱代理能力:A2A 致力于使代理能够以自然、非结构化的模式进行协作,即使它们不共享内存、工具和上下文。我们正在实现真正的多代理场景,而不将代理局限于单一的“工具”。
-
基于现有标准: 该协议建立在现有的流行标准之上,包括 HTTP、SSE、JSON-RPC,这意味着它更容易与企业日常使用的现有 IT 堆栈集成。
-
默认安全:A2A 旨在支持企业级身份验证和授权,在启动时与 OpenAPI 的身份验证方案相同。
-
支持长时间运行的任务: 设计 A2A 时就考虑到了灵活性,并支持各种场景,使其能够出色地完成各种任务,从快速任务到深度研究,这些任务可能需要数小时甚至数天的时间(如果人工参与)。在此过程中,A2A 可以为用户提供实时反馈、通知和状态更新。
-
与模态无关: 代理世界不仅限于文本,这就是我们设计 A2A 来支持各种模态(包括音频和视频流)的原因。
主要功能
-
能力发现: 代理可以使用 JSON 格式的“代理卡”来宣传其能力,从而允许客户端代理识别能够执行任务的最佳代理并利用 A2A 与远程代理进行通信。
-
任务管理: 客户端与远程代理之间的通信以任务完成为导向,代理负责执行最终用户的请求。此“任务”对象由协议定义,并具有生命周期。它可以立即完成,或者,对于长时间运行的任务,每个代理可以进行通信,以彼此保持同步,了解任务的最新完成状态。任务的输出称为“工件”。
-
协作: 代理可以互相发送消息来传达上下文、回复、工件或用户指令。
-
用户体验协商: 每条消息包含“部分”,即完整形成的内容片段,例如生成的图像。每个部分都有指定的内容类型,允许客户端和远程代理协商所需的正确格式,并明确包含对用户 UI 功能(例如 iframe、视频、Web 表单等)的协商。
A2A、MCP、LLM之间的关系:
协议说明
该协议目前在github开源,主要是一个json schema的格式说明文件 ( 关于 json schema 的介绍,参见【】),具体定义可查看源文档。
这里说明下其中包含的主要部分及其作用:
1. AgentAuthentication
这部分定义了支持的认证方式,例如 OAuth 或 API 密钥。
2. AgentCapabilities
用于标识 Agent 的能力范围,例如是否支持实时通信。
3. AgentCard
提供 Agent 的核心信息,例如它的功能和技能,便于被发现
4. AgentProvider
标识提供者的组织或公司信息。
5. AgentSkill
描述 Agent 的技能,例如可以执行的任务或功能。
6. 错误定义
包含了一些预定义的Error, PushNotificationNotSupportedError、InvalidParamsError、JSONParseError 分别指示通知不支持、参数无效、Json解析等错误类型
7. FileContent & FilePart
用于传递文件相关的数据,例如上传或下载操作。
案例
a2aprotocol.net
提供了一个 A2A 和 MCP 协作的案例场景说明
在测试领域的应用,像 【】一文后,有小伙伴提到的更丰富场景,将用例解析、Playwright执行、问题收集并汇报等集成起来,这个就可以由不同Agent来完成,分别负责用例的生成、Playwright执行、向禅道Jira等提交等工作,这里除了Agent之间的工作流,像用例、Bug等在不同Agent之间的传输,就可以用A2A协议来实现。
相关实践,还有待相关Agent的丰富,后续本号也会持续跟踪!