Google 的 Agent2Agent 协议 (A2A):带示例的指南

Google 的 Agent2Agent 协议 (A2A):带示例的指南

了解 Google 的 Agent2Agent (A2A),这是一种用于跨不同系统进行 AI 代理协作的开放协议

AI 代理正在重塑任务自动化、决策制定和软件系统协作的方式。但是,随着组织构建更多的自主代理,跨供应商和框架的标准化通信需求变得至关重要。这就是 Agent2Agent (A2A) 的用武之地。

A2A 是由 Google 开发的一种开放的、供应商中立的协议,用于标准化跨不同系统的 AI 代理之间的协作。

在本教程中,我将指导您了解 A2A 的工作原理、其设计原则、它如何为跨域的实际多代理工作流提供支持,以及它与 MCP 有何不同。

Agent 2 Agent (A2A)

Agent2Agent (A2A) 是一种开放协议,可实现不透明(黑盒)代理之间的互作性。它允许 AI 代理:

  • 发现彼此
  • Exchange 结构化任务
  • 流响应
  • 处理多轮次对话
  • 跨文本、图像、视频和数据等形式进行作。

让我试着通过下图来解释 A2A 的主要思想:

在图像中,表示两个代理:一个 Google 代理(蓝色)和另一个代理(绿色),可能来自第三方服务。两个代理都尝试处理两种类型的文档或任务。绿色代理在这两个方面都成功,如绿色复选标记所示,而 Google 代理在一个方面成功,另一个失败。

这种差异凸显了谈判和信息共享的必要性,这是 A2A 协议的核心组成部分

Agent2Agent 设计原则

A2A 围绕五个核心原则设计,无需共享内存、想法或工具即可为最终用户完成任务。这五项原则包括:

  • 采用代理功能:代理在不共享内存、工具或执行计划的情况下进行协作。
  • 基于开放标准构建:A2A 使用 HTTP、JSON-RPC 和 SSE 来确保与现有技术堆栈的轻松互作性。
  • 默认安全:它遵循 OpenAPI 身份验证方案并提供企业级安全性。
  • 支持长时间运行的任务:A2A 旨在处理后台任务、人机协同审批和流式更新。
  • 模态不可知:它处理图像、音频、PDF、HTML、JSON 和其他结构化/非结构化格式。

这些设计原则使 A2A 成为可扩展、企业就绪、多代理生态系统的支柱

A2A 如何工作

在本节中,我们将深入探讨 Agent2Agent 协议的内部工作原理,并了解代理通信的架构和生命周期。我们将探讨涉及的主要参与者、传输和身份验证层,以及通过 Agent Cards 进行发现。

参与者和协议

A2A 协议定义了三个核心参与者:

  • 用户:启动任务的最终用户。
  • 客户端代理:代表用户制定和发送任务的请求者。
  • 远程代理:执行任务并发回结果的接收者代理。

回到上面的图表示例,蓝色代理是客户端代理,绿色代理是远程代理

代理卡和发现

代理通过称为代理卡的标准化 JSON 文档发布其元数据和功能,该文档通常托管在 /.well-known/agent.json。此卡内含:

  • 名称、版本和托管 URL
  • 描述和服务提供商
  • 支持的输入/输出模式和内容类型
  • 身份验证方法
  • 带有标签和示例的代理技能列表

可以通过 DNS、注册表、市场或私有目录处理发现

核心通信对象

A2A 通信的核心是 Task,即表示原子工作单元的结构化对象。任务具有生命周期状态,例如 submitted、working 、input-required 或 completed。

每个任务包括:

  • 消息:这些用于客户端和远程代理之间的对话交换
  • 构件:这些构件适用于远程代理创建的不可变结果。
  • 部分:消息或项目(如纯文本、文件 blob 或 JSON)中的自包含数据块

A2A 工作流程

让我们通过一个示例工作流来了解 A2A 的工作原理:

  1. **用户发起任务:**用户向 Client Agent 发送请求,例如,"安排笔记本电脑更换"。

  2. 客户端代理发现远程代理:客户端代理使用托管在公共或私有 URL 上的代理卡查找其他功能强大的代理 。此 JSON 文件包括技能、支持的形式、身份验证和服务 URL。

  3. **客户端代理发送任务:**客户端代理使用 HTTP上的 JSON-RPC 2.0 向选定的远程代理发送任务/发送请求。有效负载包含:

    • 任务 ID
    • 会话 ID(可选)
    • 具有一个或多个部分(例如,文本、文件、JSON)的消息
  4. **远程代理响应:**远程代理处理任务并响应:

    • 即时结果(通过工件)
    • 中间消息(通过消息)
    • 或请求更多信息(将 state 设置为 input-required)
  5. 流式处理和推送更新(如果异步 ):如果任务长时间运行,则远程代理可能会使用服务器发送的事件 (SSE) 将部分结果流式传输回去。如果客户端断开连接,则可以将推送通知发送到客户端提供的安全 Webhook。

  6. **任务状态转换:**任务在以下状态之间转换:已提交→正在处理→需要输入→已完成。在任何时候,代理都可能为客户端发出更新或新项目。

  7. **构件和消息:**消息用于沟通或澄清(例如,"请上传您的收据"),而构件则用于展示最终输出,如报告 PDF、分析摘要、JSON 列表等。

  8. **客户端代理恢复或完成任务:**如果需要输入,客户端代理会从用户那里收集该输入并发送后续任务/发送。任务完成后,客户端可以使用 task/get 获取所有工件

A2A 示例:IT 帮助台票证解析

想象一下,一个企业 IT 帮助台系统使用 AI 代理自主管理和解决支持票证。在此设置中,用户代理会收到如下请求:

bash 复制代码
"My laptop isn't turning on after the last software update."

然后,用户代理通过 A2A 与多个远程代理协作,从而编排解决工作流程

以下是代理在上述场景中通过 A2A 进行交互的方式:

  • 客户端代理向硬件诊断代理发送任务,要求进行设备检查。
  • 如果硬件正常,它会升级到 Software Rollback Agent,该代理会评估最近的更新。
  • 如果回滚失败,则使用 Device Replacement Agent 来启动硬件交换。

每个代理独立运行,公开代理卡及其功能,并通过结构化任务异步通信。代理人可以:

  • 将日志或诊断作为项目流式传输
  • 如果需要用户输入,则暂停流
  • 在他们完成其部分时发送推送更新

这是一个纯粹的 A2A 用例,因为:

  • 不涉及 API 或 OCR 引擎等结构化工具
  • 所有协调都发生在不透明的协作代理之间
  • 代理就像具有单个决策逻辑和本机模态处理的 Peer 节点

结论

Agent2Agent (A2A) 是大规模多代理系统中缺失的一环。凭借清晰的代理边界、基于任务的结构化通信以及对流式传输和推送的内置支持,它支持模块化、可发现和可扩展的代理生态系统。

A2A 专为满足企业的实际需求而设计,具有安全、异步、模态灵活且与供应商无关的特点。无论您使用的是 Google 的 ADK、LangGraph、CrewAI 还是您的框架,A2A 都可以帮助您的代理与代理交谈

相关推荐
wangruofeng5 天前
Pro 七个月没转正,Flash 四个月连发四代 Stable,写代码怎么选?拆解 Gemini 两条产品线分化逻辑。
google·aigc·ai编程
XLYcmy10 天前
ReasoningBank: Scaling Agent Self-Evolving with Reasoning Memory论文阅读
论文阅读·google·llm·agent·记忆·harness·自进化
亚林瓜子14 天前
Google的编程Agent:antigravity CLI自动模式
ai·google·spec·coding·cli·auto·agy
小满zs23 天前
Go语言第十章(指针)
后端·google·go
小鹿软件办公25 天前
谷歌最新语音转文本模型 Gemini 3.5 Transcribe
google·gemini·谷歌语音模型
程序员爱钓鱼1 个月前
Go 编程实战:闭包 Closure——函数如何记住外部变量
后端·google·go
XLYcmy1 个月前
小红书 算法一面 十一
google·meta·llm·负载均衡·token·moe·glam
TunerT_TQ1 个月前
Google|LangExtract 源码静态评测:从 90 个 Python 文件看大模型结构化信息抽取工程基础
google·开源·github
寒水馨2 个月前
Linux下载、安装protobuf-v35.1(附安装包protoc-35.1-linux-x86_64.zip)
linux·运维·服务器·google·序列化·protobuf·protoc
寒水馨2 个月前
macOS下载、安装protobuf-v35.1(附安装包protoc-35.1-osx-universal_binary.zip)
macos·google·grpc·序列化·protobuf·protoc·数据交换