Featured image of post Google推出A2A协议

Google推出A2A协议

Google推出AI Agent互通协议A2A,补上MCP外的另一个拼图

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, PushNotificationNotSupportedErrorInvalidParamsErrorJSONParseError 分别指示通知不支持、参数无效、Json解析等错误类型

7. FileContent & FilePart

用于传递文件相关的数据,例如上传或下载操作。

案例

a2aprotocol.net 提供了一个 A2A 和 MCP 协作的案例场景说明

在测试领域的应用,像 【】一文后,有小伙伴提到的更丰富场景,将用例解析、Playwright执行、问题收集并汇报等集成起来,这个就可以由不同Agent来完成,分别负责用例的生成、Playwright执行、向禅道Jira等提交等工作,这里除了Agent之间的工作流,像用例、Bug等在不同Agent之间的传输,就可以用A2A协议来实现。

相关实践,还有待相关Agent的丰富,后续本号也会持续跟踪!

使用 Hugo 构建
主题 StackJimmy 设计