← 返回 AI大模型从0到1——理论与实操
C3-11 A2A协议
🎯 本节目标:说清楚 A2A 协议解决了什么问题,理解 Agent Card / Message / Task 三大核心概念,对比 MCP 与 A2A 的分工关系。
引子:Agent 与 Agent 之间怎么"说话"?
❓ 引入:Agent 与外部工具会说"同一种语言"了(MCP),那 Agent 与 Agent 之间呢?你现在有两个 Agent:一个负责写代码,一个负责做测试。它们怎么"对话"?怎么传递任务?怎么知道对方"能做什么"?
这就是 A2A(Agent-to-Agent Protocol) 要解决的问题。
A2A 是什么?
A2A = Agent 之间的"通用语言"
- 由 Google 在 2025 年 4 月发布
- 现已捐赠给 Linux 基金会,是完全开放的标准
- GitHub 开源:
github.com/a2aproject/A2A
A2A 与 MCP 的分工
| 协议 | 定位 | 通信双方 |
|---|---|---|
| MCP | Agent ↔ 工具 / 数据源 | Agent 调用外部能力 |
| A2A | Agent ↔ Agent | Agent 之间委托任务、交换结果 |
💡 类比:MCP 是"员工用什么工具",A2A 是"员工之间怎么交接工作"。一个管"人机交互",一个管"人人交互"。
A2A 架构三大核心概念
① Agent Card(智能体名片)
每个支持 A2A 的 Agent,必须暴露一个 agent-card(JSON),告诉别人"我是谁、我能做什么"。
JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
作用:让其他 Agent 通过 HTTP GET /.well-known/agent.json 自动发现"对方能干什么"。
② Message(消息格式)
A2A 规定了 Agent 之间传递消息的标准格式:
Plain Text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
③ Task(任务生命周期)
A2A 用 Task 来管理任务状态,类似"工单系统":
Python
1 2 3 4 5 6 | |
Plain Text
1 2 3 4 5 6 7 8 9 10 11 12 | |
完整实战:Entry Agent 调用 Coding Agent
架构
Python
1 2 3 4 5 6 7 | |
Step 1:实现 Coding Agent Server(被调用方)
Plain Text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | |
Step 2:实现 Entry Agent Client(调用方)
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | |
A2A 消息流转完整示意图
Plain Text
1 2 3 4 5 6 7 8 9 10 | |
sequenceDiagram
participant U as 用户
participant E as Entry Agent
participant C as Coding Agent
U->>E: "写一个 Python 快速排序"
E->>C: A2A 协议:发现 Agent Card
E->>C: 发送 Message(send_message_streaming)
C->>C: LLM 流式生成代码
C-->>E: 逐步返回 chunk
E-->>U: 实时展示给用户
A2A 核心要点总结
| 要点 | 说明 |
|---|---|
| 定位 | Agent 之间的通信标准(类比 HTTP 对于网页) |
| 核心概念 | Agent Card(发现)、Message(通信)、Task(状态管理) |
| 与 MCP 关系 | 互补:MCP = Agent↔工具,A2A = Agent↔Agent |
| 当前状态 | v1.0 已发布,Linux 基金会托管,主流框架正在接入 |
| 适用场景 | 多厂商 Agent 协作、跨框架 Agent 通信、Agent 能力市场 |
🎨 同一个系统内部多个Agent通信不需要用A2A协议