📚 大模型协议系列文章

大模型背后的协议与接口设计- MCP

在过去几年,人工智能的发展让单个智能体已经能完成越来越复杂的任务,比如写文章、做数据分析、甚至协助编程。但当任务变得更复杂、需要多个智能体分工协作时,我们就会遇到一个问题:不同智能体之间怎么有效沟通?

如果每个智能体各说各话,就像一个人说中文、一个说英文,合作就会非常困难。这时候,一套统一的通信标准就显得至关重要——这就是今天要介绍的 Agent2Agent 协议

所有相关源码示例、流程图、模型配置与知识库构建技巧,我也会持续更新在 Github:LLMHub,欢迎关注收藏!

大家可以带着下面三个问题来阅读本文,我会在最后给出答案。

  1. Agent2Agent 协议是什么?
  2. 为什么智能体之间需要一套统一的协议?
  3. 它的落地场景会有哪些?

1. 从单体智能到多智能体协作

过去几年,大语言模型的能力突飞猛进。我们发现单一的大模型虽然强大,但在很多复杂任务中,它往往会遇到瓶颈。于是出现了 多智能体系统 ——多个 Agent 各自负责不同角色,通过协作完成任务。

举个例子:

  • Agent A:任务规划师,负责把大目标拆解成小步骤;
  • Agent B:执行者,调用工具或写代码来完成任务;
  • Agent C:验证员,检查结果是否正确、是否符合需求。

这种“分工协作”的思路很有吸引力,但一个关键问题摆在面前:他们要怎么交流?

不同的 Agent 可能由不同团队开发,输入输出各不相同,就像一个说中文、一个说英文、一个说西班牙语,想合作,必须先解决语言问题。

这正是 Agent2Agent 协议(A2A) 想要解决的核心。

那么MCP和A2A协议有什么区别呢?简单说就是MCP For Tools(APIs、Resources),A2A For Agents。MCP是智能体实现自身功能,调用资源的协议,A2A是针对不同Agent怎么配合实现功能的协议。


2. Agent2Agent 协议的核心设计

A2A由以下角色组成:

  • 用户:发起需要代理帮助的请求或目标的最终用户(人工或自动化服务)。
  • A2A 客户端(客户端代理):代表用户向远程代理请求作或信息的应用程序、服务或其他 AI 代理。客户端使用 A2A 协议发起通信。
  • A2A 服务器(远程代理):公开实现 A2A 协议的 HTTP 端点的 AI 代理或代理系统。它接收来自客户端的请求,处理任务,并返回结果或状态更新。从客户端的角度来看,远程代理作为一个“不透明”系统运行,这意味着客户端不需要知道其内部工作原理、内存或工具。

如果用一句话来解释:A2A 协议就是一套为智能体设计的“通用语言标准”。

它关注的核心有三个方面:

  1. 消息格式(Format)
    • 统一的结构(常见是 JSON 或类似 Schema)
    • 必须包含身份信息、意图、上下文、时间戳等字段
    • 方便日志追踪和调试
  2. 语义定义(Semantics)
    • 消息类型:请求(Request)、响应(Response)、确认(Ack)、通知(Event)
    • 意图清晰:比如 request_task_executiontask_completed,而不是模糊的“OK/Done”
  3. 交互模式(Interaction Patterns)
    • 点对点:A → B,一问一答
    • 广播式:A 把任务发出去,多个 Agent 竞争响应
    • 协作式:多个 Agent 互相传递结果,逐步完成复杂任务
    • 链式调用:像流水线一样,每个 Agent 只做一环

这样的设计让不同的 Agent 可以像使用 HTTP 一样“即插即用”,而不必关心对方的底层实现。


3. 为什么要用 A2A 协议?

很多人会问:难道直接写个 RPC 或者 REST API 就不行吗?

确实,如果只是两个 Agent 偶尔调用,API 就够用了。但当系统扩展到十个、几十个 Agent 时,就会出现:

  • 数据不统一:每个 Agent 输出格式不同,拼接和解析非常麻烦;
  • 语义不明确:同样一个“任务完成”,可能包含不同的上下文信息,容易误解;
  • 难以扩展:引入一个新 Agent,就要改一大堆适配逻辑;
  • 协作低效:没有标准的交互模式,任务在多个 Agent 间传递时容易丢失信息。

A2A 协议的价值就是让系统更 可扩展、可维护、可协作。就像互联网没有统一的 HTTP 协议,今天就不会有这么丰富的生态。


4.A2A协议的基本组件和工作流程

1. Agent Card(智能体名片)

Agent Card 就像智能体的“身份证”,是一个 JSON 文档,通常放在固定 URL 下,例如 /.well-known/agent-card.json。它包含智能体的基本信息、服务端点、支持的功能、提供的技能、默认输入输出方式以及身份验证要求。客户端可以通过读取 Agent Card 了解智能体能做什么,并安全有效地与其交互。

2. Task(任务)

Task 表示客户端请求智能体执行的具体操作,有些操作可能需要持续的状态管理,例如生成报告或预订航班。每个任务都有唯一 ID,并经历生命周期状态:submittedworkinginput-requiredcompleted / failed。任务是有状态的,可能涉及客户端和智能体之间多轮消息交互。

3. Message(消息)

Message 是客户端和智能体之间一次交流的单元,每条消息都有发送者角色(useragent)和唯一标识符。消息中可以包含一个或多个 Part,用于传递指令、上下文、问题、答案或状态更新。Message 支持与任务关联,允许多轮交互,保证复杂任务的顺畅执行。

4. Part(消息内容单元)

Part 是消息或任务产出的最小内容单位,每个 Part 都有类型和用途。常见的类型包括 TextPart(普通文本)、FilePart(文件,支持 base64 或 URI 引用)和 DataPart(结构化 JSON 数据)。通过 Part,智能体可以灵活传递文本、文件或机器可读的数据。

5. Artifact(产物)

Artifact 是智能体完成任务后生成的实际输出,可以是文档、图片、表格或结构化数据等。任务完成后,Artifact 用来返回最终结果,它可以由多个 Part 组成,并支持增量流式传输,使客户端能够及时获取生成内容。

A2A的请求生命周期如下图所示:

协议工作流程为:

  1. 客户端发起请求,发现目标Agent,返回Agent card
  2. 进行鉴权
  3. 发送消息(Message)并创建任务(Task)
  4. Agent进行工作,最后返回输出产物(Artifact)

5. A2A中的代理发现

在 Agent2Agent(A2A)协议中,为了让智能体能够协作,它们首先需要发现彼此并了解对方的能力。A2A 使用 代理卡(Agent Card) 来标准化智能体自我描述的格式,但发现这些代理卡的方法会根据不同环境有所不同。

常见的代理发现方式包括三类:

  1. 众所周知的 URI

对于公共或开放域的代理,推荐将代理卡托管在标准化路径,例如:
https://{agent-server-domain}/.well-known/agent-card.json
客户端代理只需对该 URL 发起 HTTP 请求即可获取代理卡。这种方式标准化、易于自动发现,适合开放环境,如果包含敏感信息,可能需要访问控制或身份验证。

  1. 注册表/目录发现

企业或专用生态系统中,代理卡可以集中发布到注册表,由客户端查询以发现符合条件的代理。这种方式便于管理、支持基于技能而非域名的查找,并可实现访问控制。但是需要额外的注册表服务,A2A 目前尚未标准化相关 API。

  1. 直接配置或私有发现

在紧密耦合或开发测试环境中,客户端可以直接配置代理卡信息或 URL,从本地配置文件、环境变量或专有 API 获取。这种方式简单、适合已知静态关系,但是灵活性低,远程代理更新可能需要重新配置。

6.应用场景

A2A 协议不仅是理论上的探索,已经在一些方向开始尝试:

  1. 多智能体对话系统
    • 一个负责创意,一个负责写作,一个负责校对
    • 通过协议互相传递“草稿”“修改意见”“最终稿”
  2. 自动化工作流
    • 数据检索 → 文本生成 → API 调用 → 结果验证
    • 每个步骤由一个 Agent 负责,协议保证结果顺畅传递
  3. 跨平台生态
    • 不同厂商的 Agent 能通过协议互操作
    • 想象一下,你用的是 OpenAI 的规划 Agent,调用的是 Anthropic 的写作 Agent,再用本地的执行 Agent
  4. 机器人与物联网
    • 机器人集群通过 A2A 协议共享任务和感知信息
    • IoT 设备间也能互通消息,组成“自治网络”
  5. 分布式决策
    • 金融风控:不同 Agent 各自分析风险点,再通过协议汇总结论
    • 医疗诊断:多 Agent 协作提出诊断方案,医生只需做最后确认

我们最后来回答一下开头的问题

  1. Agent2Agent 协议是什么?
    一套面向智能体的通信标准,解决不同 Agent 之间交流不畅的问题。
  2. 为什么需要它?
    因为多智能体系统复杂度高,没有协议就会陷入混乱,难以扩展。
  3. 应用场景有哪些?
    多智能体对话、自动化工作流、跨平台生态、机器人协作、分布式决策等。

关于深度学习和大模型相关的知识与前沿技术,欢迎关注公众号 coting

部分内容参考了相关开源社区和研究资料,非常感谢,如有侵权请联系删除。

参考链接

https://a2a-protocol.org/latest/

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐