11# 第 15 章:Agent 间通信(A2A)
22
3- 即便拥有先进能力,单个 AI Agent 在处理复杂、多方面问题时仍常面临局限。为克服此限制 ,Agent 间通信(A2A)使不同 AI Agent(可能基于不同框架构建)能够有效协作 。这种协作涉及无缝协调、任务委派和信息交换。
3+ 尽管单个 AI Agent 具备先进能力,但在处理复杂、多方面问题时仍然常常面临局限性。为了克服这一限制 ,Agent 间通信(A2A)使得不同 AI Agent(可能基于不同框架构建)能够进行有效协作 。这种协作涉及无缝协调、任务委派和信息交换。
44
5- Google A2A 协议是旨在促进此类通用通信的开放标准 。本章将探讨 A2A、其实际应用以及在 Google ADK 中的实现 。
5+ Google A2A 协议是一个旨在促进此类通用通信的开放标准 。本章将探讨 A2A 的基本概念、实际应用以及在 Google ADK 中的具体实现 。
66
77## Agent 间通信模式概述
88
9- Agent2Agent(A2A)协议是旨在实现不同 AI Agent 框架间通信与协作的开放标准。它确保互操作性 ,允许使用 LangGraph、CrewAI 或 Google ADK 等技术开发的 AI Agent 能够协同工作,无论其来源或框架差异如何。
9+ Agent2Agent(A2A)协议是一个旨在实现不同 AI Agent 框架间通信与协作的开放标准。它确保了互操作性 ,允许使用 LangGraph、CrewAI 或 Google ADK 等技术开发的 AI Agent 能够协同工作,无论其来源或框架差异如何。
1010
11- A2A 获得了众多技术公司和服务提供商支持 ,包括 Atlassian、Box、LangChain、MongoDB、Salesforce、SAP 和 ServiceNow。Microsoft 计划将 A2A 集成至 Azure AI Foundry 和 Copilot Studio,展示了其对开放协议的承诺 。此外,Auth0 和 SAP 正在将 A2A 支持集成到其平台和 Agent 中。
11+ A2A 获得了众多技术公司和服务提供商的支持 ,包括 Atlassian、Box、LangChain、MongoDB、Salesforce、SAP 和 ServiceNow。Microsoft 计划将 A2A 集成到 Azure AI Foundry 和 Copilot Studio,这展示了其对开放协议的承诺 。此外,Auth0 和 SAP 正在将 A2A 支持集成到其平台和 Agent 中。
1212
1313作为开源协议,A2A 欢迎社区贡献,以促进其发展和广泛采用。
1414
1515## A2A 的核心概念
1616
17- A2A 协议为 Agent 交互提供结构化方法 ,建立在若干核心概念之上。深入理解这些概念对任何开发或集成 A2A 兼容系统者都至关重要 。A2A 的基础支柱包括核心参与者、Agent 卡片、Agent 发现、通信和任务、交互机制及安全性,所有这些都将详细审查 。
17+ A2A 协议为 Agent 交互提供了结构化方法 ,建立在若干核心概念之上。深入理解这些概念对于任何开发或集成 A2A 兼容系统的开发者都至关重要 。A2A 的基础支柱包括核心参与者、Agent 卡片、Agent 发现、通信和任务、交互机制及安全性,所有这些都将详细讨论 。
1818
1919** 核心参与者** :A2A 涉及三个主要实体:
2020
2121* 用户:发起对 Agent 协助的请求。
2222* A2A 客户端(客户端 Agent):代表用户请求操作或信息的应用程序或 AI Agent。
2323* A2A 服务器(远程 Agent):提供 HTTP 端点处理客户端请求并返回结果的 AI Agent 或系统。远程 Agent 作为"不透明"系统运行,意味着客户端无需了解其内部操作细节。
2424
25- ** Agent 卡片** :Agent 的数字身份由其 Agent 卡片定义,通常是 JSON 文件。此文件包含用于客户端交互和自动发现的关键信息,包括 Agent 身份、端点 URL 和版本。它还详细说明支持功能 (如流式传输或推送通知)、特定技能、默认输入/输出模式以及身份验证要求。以下是 WeatherBot 的 Agent 卡片示例。
25+ ** Agent 卡片** :Agent 的数字身份由其 Agent 卡片定义,通常是 JSON 文件。此文件包含用于客户端交互和自动发现的关键信息,包括 Agent 身份、端点 URL 和版本。它还详细说明支持的功能 (如流式传输或推送通知)、特定技能、默认输入/输出模式以及身份验证要求。以下是 WeatherBot 的 Agent 卡片示例。
2626
2727``` json
2828{
@@ -91,7 +91,7 @@ A2A 协议为 Agent 交互提供结构化方法,建立在若干核心概念之
9191}
9292```
9393
94- ** Agent 发现** :它允许客户端找到描述可用 A2A 服务器能力的 Agent 卡片。此过程存在几种策略:
94+ ** Agent 发现** :Agent 发现机制允许客户端找到描述可用 A2A 服务器能力的 Agent 卡片。此过程存在几种策略:
9595
9696* 知名 URI:Agent 在标准化路径(如 /.well-known/agent.json)托管其 Agent 卡片。此方法为公共或特定领域使用提供广泛、通常自动化的可访问性。
9797* 策展注册表:这些注册表提供集中目录,其中发布 Agent 卡片,可根据特定标准查询。这非常适合需要集中管理和访问控制的企业环境。
@@ -103,7 +103,7 @@ A2A 协议为 Agent 交互提供结构化方法,建立在若干核心概念之
103103
104104此通信包含属性(描述消息的键值元数据,如其优先级或创建时间)以及一个或多个部分(承载传递的实际内容,如纯文本、文件或结构化 JSON 数据)。Agent 在任务期间生成的有形输出称为工件。与消息类似,工件也由一个或多个部分组成,并可在结果可用时逐步流式传输。A2A 框架内所有通信都通过 HTTP(S) 进行,使用 JSON-RPC 2.0 协议作为有效载荷。为在多次交互中保持连续性,使用服务器生成的 contextId 来分组相关任务并保留上下文。
105105
106- ** 交互机制** :请求/响应(轮询)服务器发送事件(SSE)。 A2A 提供多种交互方法以适应各种 AI 应用需求,每种方法都有独特机制:
106+ ** 交互机制** :A2A 提供多种交互方法以适应各种 AI 应用需求,每种方法都有独特机制:
107107
108108* 同步请求/响应:用于快速、即时操作。在此模型中,客户端发送请求并主动等待服务器处理并在单个同步交换中返回完整响应。
109109* 异步轮询:适用于需要更长时间处理的任务。客户端发送请求,服务器立即以"工作中"状态和任务 ID 确认。然后客户端可自由执行其他操作,并可通过发送新请求定期轮询服务器检查任务状态,直至标记为"已完成"或"失败"。
@@ -162,33 +162,30 @@ Agent 卡片指定 Agent 是否支持流式传输或推送通知功能。此外
162162}
163163```
164164
165- ** 安全性** :Agent 间通信(A2A)是系统架构的关键组成部分,能够在 Agent 间实现安全、无缝的数据交换。它通过多个内置机制确保稳健性和完整性 。
165+ ** 安全性** :Agent 间通信(A2A)是系统架构的关键组成部分,能够在 Agent 间实现安全、无缝的数据交换。它通过多个内置机制确保系统的稳健性和完整性 。
166166
167- 双向传输层安全(TLS):建立加密和认证连接,防止未经授权访问和数据拦截,确保安全通信。
168-
169- 全面审计日志:所有 Agent 间通信均被详细记录,明确信息流、涉及 Agent 和操作。此审计轨迹对问责、故障排除和安全分析至关重要。
170-
171- Agent 卡片声明:身份验证要求在 Agent 卡片中明确声明,这是概述 Agent 身份、能力和安全策略的配置工件。这集中并简化了身份验证管理。
172-
173- 凭据处理:Agent 通常使用安全凭据(如 OAuth 2.0 令牌或 API 密钥)进行身份验证,通过 HTTP 头传递。此方法防止凭据在 URL 或消息正文中暴露,增强整体安全性。
167+ * ** 双向传输层安全(TLS)** :建立加密和认证连接,防止未经授权访问和数据拦截,确保通信安全。
168+ * ** 全面审计日志** :所有 Agent 间通信均被详细记录,明确信息流、涉及的 Agent 和操作。此审计轨迹对问责、故障排除和安全分析至关重要。
169+ * ** Agent 卡片声明** :身份验证要求在 Agent 卡片中明确声明,这是概述 Agent 身份、能力和安全策略的配置工件。这集中并简化了身份验证管理。
170+ * ** 凭据处理** :Agent 通常使用安全凭据(如 OAuth 2.0 令牌或 API 密钥)进行身份验证,通过 HTTP 头传递。此方法防止凭据在 URL 或消息正文中暴露,增强整体安全性。
174171
175172## A2A 与 MCP
176173
177- A2A 是补充 Anthropic 模型上下文协议(MCP)的协议(见图 1)。MCP 专注于为 Agent 构建上下文及其与外部数据和工具的交互,而 A2A 则促进 Agent 间协调和通信 ,实现任务委派与协作。
174+ A2A 是补充 Anthropic 模型上下文协议(MCP)的协议(见图 1)。MCP 专注于为 Agent 构建上下文及其与外部数据和工具的交互,而 A2A 则促进 Agent 间的协调和通信 ,实现任务委派与协作。
178175
179176![ ] [ image1 ]
180177
181178图 1:A2A 和 MCP 协议比较
182179
183- A2A 旨在提高效率、降低集成成本,并促进复杂多 Agent AI 系统开发中的创新和互操作性。因此,深入理解 A2A 的核心组件和操作方法对有效设计 、实施和应用协作式、互操作 AI Agent 系统至关重要。
180+ A2A 旨在提高效率、降低集成成本,并促进复杂多 Agent AI 系统开发中的创新和互操作性。因此,深入理解 A2A 的核心组件和操作方法对于有效设计 、实施和应用协作式、互操作的 AI Agent 系统至关重要。
184181
185182## 实际应用和用例
186183
187- Agent 间通信对跨不同领域构建复杂 AI 解决方案不可或缺,实现模块化 、可扩展性和增强智能。
184+ Agent 间通信对于跨不同领域构建复杂 AI 解决方案不可或缺,实现了模块化 、可扩展性和增强智能。
188185
189- * ** 多框架协作** :A2A 主要用例是使独立 AI Agent 能够通信协作,无论其底层框架(如 ADK、LangChain、CrewAI)如何。这对构建复杂多 Agent 系统至关重要,不同 Agent 专门处理问题不同方面 。
190- * ** 自动化工作流编排** :在企业环境中,A2A 可通过使 Agent 委派和协调任务促进复杂工作流 。例如,一个 Agent 可能处理初始数据收集,然后委派给另一 Agent 分析,最后委派给第三 Agent 生成报告,所有通信均通过 A2A 协议进行。
191- * ** 动态信息检索** :Agent 可通信以检索和交换实时信息 。主 Agent 可能从专门 "数据获取 Agent"请求实时市场数据,后者然后使用外部 API 收集信息并发送回来。
186+ * ** 多框架协作** :A2A 的主要用例是使独立 AI Agent 能够通信协作,无论其底层框架(如 ADK、LangChain、CrewAI)如何。这对构建复杂多 Agent 系统至关重要,不同 Agent 专门处理问题的不同方面 。
187+ * ** 自动化工作流编排** :在企业环境中,A2A 可通过使 Agent 委派和协调任务来促进复杂工作流 。例如,一个 Agent 可能处理初始数据收集,然后委派给另一个 Agent 进行分析,最后委派给第三个 Agent 生成报告,所有通信均通过 A2A 协议进行。
188+ * ** 动态信息检索** :Agent 可以通过通信来检索和交换实时信息 。主 Agent 可能从专门的 "数据获取 Agent"请求实时市场数据,后者然后使用外部 API 收集信息并发送回来。
192189
193190## 实践代码示例
194191
@@ -303,11 +300,11 @@ if __name__ == '__main__':
303300
304301## 概览
305302
306- ** 是什么:** :单个 AI Agent(特别是基于不同框架构建的 Agent)在处理复杂、多方面问题时通常会遇到困难。主要挑战是缺乏允许它们有效通信协作的通用语言或协议。这种隔离阻止了创建复杂系统,其中多个专门 Agent 可结合独特技能解决更大任务。若无标准化方法,集成这些不同 Agent 既昂贵又耗时,并阻碍更强大、更具凝聚力 AI 解决方案的开发。
303+ ** 是什么:** :单个 AI Agent(特别是基于不同框架构建的 Agent)在处理复杂、多方面问题时通常会遇到困难。主要挑战是缺乏允许它们有效通信协作的通用语言或协议。这种隔离阻止了创建复杂系统,其中多个专门 Agent 可以结合独特技能解决更大的任务。如果没有标准化方法,集成这些不同的 Agent 既昂贵又耗时,并阻碍了更强大、更具凝聚力的 AI 解决方案的开发。
307304
308- ** 为什么** :Agent 间通信(A2A)协议为此问题提供开放、标准化解决方案 。它是基于 HTTP 的协议,能实现互操作性 ,允许不同 AI Agent 无缝协调、委派任务和共享信息,无论其底层技术如何。核心组件是 Agent 卡片,这是描述 Agent 能力、技能和通信端点的数字身份文件,促进发现和交互 。A2A 定义各种交互机制 ,包括同步和异步通信,以支持不同用例 。通过为 Agent 协作创建通用标准,A2A 促进了构建复杂、多 Agent Agentic 系统的模块化和可扩展生态系统。
305+ ** 为什么** :Agent 间通信(A2A)协议为此问题提供了开放、标准化的解决方案 。它是基于 HTTP 的协议,能够实现互操作性 ,允许不同 AI Agent 无缝协调、委派任务和共享信息,无论其底层技术如何。核心组件是 Agent 卡片,这是描述 Agent 能力、技能和通信端点的数字身份文件,促进了发现和交互 。A2A 定义了各种交互机制 ,包括同步和异步通信,以支持不同的用例 。通过为 Agent 协作创建通用标准,A2A 促进了构建复杂、多 Agent Agentic 系统的模块化和可扩展生态系统。
309306
310- ** 经验法则** :当您需要协调两个或多个 AI Agent 间协作时使用此模式,特别是如果它们使用不同框架(如 Google ADK、LangGraph、CrewAI)构建。它非常适合构建复杂、模块化应用程序,其中专门 Agent 处理工作流特定部分 ,例如将数据分析委派给一个 Agent,将报告生成委派给另一 Agent。当 Agent 需要动态发现和使用其他 Agent 能力完成任务时,此模式也必不可少。
307+ ** 经验法则** :当您需要协调两个或多个 AI Agent 间协作时使用此模式,特别是如果它们使用不同框架(如 Google ADK、LangGraph、CrewAI)构建。它非常适合构建复杂、模块化应用程序,其中专门 Agent 处理工作流的特定部分 ,例如将数据分析委派给一个 Agent,将报告生成委派给另一个 Agent。当 Agent 需要动态发现和使用其他 Agent 能力完成任务时,此模式也必不可少。
311308
312309** 视觉摘要**
313310
@@ -317,21 +314,19 @@ if __name__ == '__main__':
317314
318315## 关键要点
319316
320- 关键要点:
321-
322- * Google A2A 协议是开放、基于 HTTP 的标准,促进使用不同框架构建的 AI Agent 间通信协作。
323- * AgentCard 作为 Agent 数字标识符,允许其他 Agent 自动发现和理解其能力。
324- * A2A 提供同步请求-响应交互(使用 ` tasks/send ` )和流式更新(使用 ` tasks/sendSubscribe ` )以适应不同通信需求。
317+ * Google A2A 协议是一个开放、基于 HTTP 的标准,促进使用不同框架构建的 AI Agent 间的通信协作。
318+ * AgentCard 作为 Agent 的数字标识符,允许其他 Agent 自动发现和理解其能力。
319+ * A2A 提供同步请求-响应交互(使用 ` tasks/send ` )和流式更新(使用 ` tasks/sendSubscribe ` )以适应不同的通信需求。
325320* 该协议支持多轮对话,包括 ` input-required ` 状态,允许 Agent 请求额外信息并在交互期间维护上下文。
326- * A2A 鼓励模块化架构,其中专门 Agent 可在不同端口上独立运行,实现系统可扩展性和分布 。
321+ * A2A 鼓励模块化架构,其中专门 Agent 可在不同端口上独立运行,实现系统的可扩展性和分布式部署 。
327322* Trickle AI 等工具有助于可视化和跟踪 A2A 通信,帮助开发人员监控、调试和优化多 Agent 系统。
328323* 虽然 A2A 是用于管理不同 Agent 间任务和工作流的高级协议,但模型上下文协议(MCP)为 LLM 提供与外部资源交互的标准化接口。
329324
330325## 结论
331326
332- Agent 间通信(A2A)协议建立了重要的开放标准 ,以克服单个 AI Agent 的固有隔离。通过提供通用的基于 HTTP 的框架,它确保在不同平台上构建的 Agent 间的无缝协作和互操作性,例如 Google ADK、LangGraph 或 CrewAI。核心组件是 Agent 卡片,它作为数字身份,清楚定义 Agent 能力并使其他 Agent 能够动态发现。协议灵活性支持各种交互模式 ,包括同步请求、异步轮询和实时流式传输,满足广泛应用需求 。
327+ Agent 间通信(A2A)协议建立了一个重要的开放标准 ,以克服单个 AI Agent 的固有隔离。通过提供通用的基于 HTTP 的框架,它确保了在不同平台上构建的 Agent 间的无缝协作和互操作性,例如 Google ADK、LangGraph 或 CrewAI。核心组件是 Agent 卡片,它作为数字身份,清楚定义了 Agent 的能力并使其他 Agent 能够动态发现。协议的灵活性支持各种交互模式 ,包括同步请求、异步轮询和实时流式传输,满足广泛的应用需求 。
333328
334- 这使得能够创建模块化和可扩展架构 ,其中专门 Agent 可组合以编排复杂自动化工作流 。安全性是基本方面,具有内置机制(如 mTLS 和明确身份验证要求)来保护通信。虽补充 MCP 等其他标准,但 A2A 的独特焦点是 Agent 间的高级协调和任务委派。主要技术公司的强大支持以及实际实现的可用性突显了其日益增长的重要性。该协议为开发人员构建更复杂、分布式和智能的多 Agent 系统铺平道路 。最终,A2A 是促进创新和互操作的协作 AI 生态系统的基础支柱。
329+ 这使得能够创建模块化和可扩展的架构 ,其中专门 Agent 可以组合以编排复杂的自动化工作流 。安全性是基本方面,具有内置机制(如 mTLS 和明确身份验证要求)来保护通信。虽然补充了 MCP 等其他标准,但 A2A 的独特焦点是 Agent 间的高级协调和任务委派。主要技术公司的强大支持以及实际实现的可用性突显了其日益增长的重要性。该协议为开发人员构建更复杂、分布式和智能的多 Agent 系统铺平了道路 。最终,A2A 是促进创新和互操作的协作 AI 生态系统的基础支柱。
335330
336331## 参考文献
337332
0 commit comments