Google A2A:AI代理间协议

今天,谷歌发布了其开源的代理间协议,这个协议被富有想象力地命名为A2A,即代理到代理。谷歌声称A2A与MCP是互补的。

Google A2A:AI代理间协议

今天,谷歌发布了其开源的代理间协议(Agent-to-Agent),这个协议被富有想象力地命名为A2A,即代理到代理。由于我们已经看到Anthropic的MCP(模型上下文协议)取得了很多进展,谷歌声称A2A与MCP是互补的。他们甚至用了一个心形表情符号来强调这一点。

我不太确定,所以我决定深入研究一下,看看A2A在代理宇宙中的位置如何。因此我们将涵盖A2A在现实生活中的工作方式,并将其与MCP进行比较。

1、测试A2A

使用A2A出乎意料地类似于MCP。你可以运行几个A2A代理/服务器,然后A2A客户端可以连接到它们。好消息是,通常不需要在运行A2A客户端的同时运行A2A代理。

2、运行A2A代理(服务器)

我在本地启动了所有三个示例代理:

  1. Google ADK代理,它可以为你提交费用报告。
  2. CrewAI代理,它可以生成图像。
  3. LangGraph代理,它可以查询最新的外汇汇率。

A2A服务器通过JSON格式的“代理卡”向世界展示其功能。例如,Google ADK的代理卡如下所示:

{
	"name": "报销代理",
	"description": "此代理处理员工的报销流程,根据报销金额和用途。",
	"url": "http://localhost:10002/",
	"version": "1.0.0",
	"capabilities": {
		"streaming": true,
		"pushNotifications": false,
		"stateTransitionHistory": false
	},
	"defaultInputModes": [
		"text",
		"text/plain"
	],
	"defaultOutputModes": [
		"text",
		"text/plain"
	],
	"skills": [
		{
			"id": "process_reimbursement",
			"name": "处理报销工具",
			"description": "帮助用户根据报销金额和用途完成报销流程。",
			"tags": [
				"报销"
			],
			"examples": [
				"能否报销我午餐与客户的20美元?"
			]
		}
	]
}

3、启动A2A客户端演示应用

接下来是客户端。获取演示Web应用程序运行的说明在这里

一旦Web应用程序开始运行,你就可以从浏览器访问它。客户端看起来有点像Gemini AI Studio,具有标志性的Google Material设计风格。

URL: localhost:12000

首先,我们需要通过指定其基本URL将所有代理添加到客户端中。由于在我的情况下我都在本地运行这些代理,所以它们的基本URL是:

  • Google ADK: localhost:10002
  • CrewAI: localhost:10001
  • LangGraph: localhost:10000

备注:在协议中,最终的URL看起来像这样:

https://localhost:10002/.well-known/agent.json

现在你可以看到所有三个已连接的代理

A2A代理

你可以在这里看到聊天历史记录

A2A聊天记录

这里可以看到所有的事件列表

A2A事件列表

以及所有的任务列表

A2A任务列表

设置非常基础:

A2A设置

4、测试Google ADK代理的费用索赔

Google ADK代理 - 费用索赔

5、测试LangGraph查询外汇汇率

LangGraph代理 - 外汇汇率

6、测试CrewAI代理生成图像

CrewAI代理 - 图像生成

7、多个代理组合测试

我想看看A2A客户端是否能够使用多个代理实现单一目标。所以我测试了它是否可以结合费用索赔代理和外汇汇率代理。结果是可行的。

我的任务是“在商务旅行期间为德国的一杯啤酒申请费用,金额为5欧元,日期为2025年4月4日”。对话经过了几轮来回,最终在费用索赔表中得到了正确的美元金额。

8、对A2A的初步观察

我喜欢A2A是一个纯粹的客户端-服务器模型,两者都可以远程运行和托管。客户端无需指定和启动代理/服务器。

代理配置相当简单,只需指定基本URL,“代理卡”负责上下文交换。而且可以在客户端已经启动后添加和移除代理。

在当前的演示形式下,很难理解代理之间如何通信并完成复杂任务。客户端分别调用每个代理执行不同任务,因此非常类似于多工具调用。

9、将A2A与MCP进行比较

现在我已经尝试了A2A,是时候将其与MCP进行比较了,我在这篇文章中之前提到过MCP。

虽然A2A和MCP都旨在改善AI代理系统的开发,理论上它们解决不同的需求。A2A在代理层面运作,专注于独立实体之间的交互,而MCP在LLM层面运作,专注于丰富单个语言模型的上下文和能力。

根据它们的协议文档,以下是它们的主要相似点和差异的概览:

特性A2AMCP
主要应用场景代理间的通信与协作为LLMs提供上下文和工具(外部API/SDK)
核心架构客户端-服务器(代理-代理)客户端-主机-服务器(应用-LLM-外部资源)
标准接口JSON规范、代理卡、任务、消息、工件JSON-RPC 2.0、资源、工具、记忆、提示
关键特性多模态、动态、安全协作、任务管理、能力发现模块化、安全边界、可重用的连接器、SDKs、工具发现
通信协议HTTP、JSON-RPC、SSEJSON-RPC 2.0通过stdio、HTTP带SSE(或流式HTTP)
性能重点异步通信以处理负载高效的上下文管理、并行处理、缓存以实现高吞吐量
采用与社区初期行业支持良好,生态系统尚处于萌芽阶段整个行业的广泛采用,快速增长的社区

10、结束语

尽管谷歌做出了听起来A2A像是MCP的互补协议,我的初步测试显示它们在目的和功能上高度重叠。它们都旨在满足AI应用开发者利用多个代理和工具实现复杂目标的需求。目前,两者都缺乏一种良好的机制来注册和发现其他代理和工具,而无需手动配置。

MCP起步较早,已经获得了开发社区和大型企业的极大支持。A2A非常年轻,但已获得许多Google Cloud企业客户的强力初始支持。

我认为这对开发者来说是个好消息,因为他们将有更多的选择在开放且标准的代理间协议中。只有时间能告诉我们哪个会占据主导地位,或者它们可能会合并为一个单一的标准。


原文链接:Google A2A - a First Look at Another Agent-agent Protocol

汇智网翻译整理,转载请标明出处