A2A核心概念
Agent2Agent (A2A)协议围绕一组核心概念构建,这些概念定义了代理如何交互。理解这些概念对于开发或集成A2A兼容系统至关重要。

核心参与者
- 用户:发起需要代理协助的请求或目标的终端用户(人类或自动化服务)
- A2A客户端(客户端代理):代表用户向远程代理请求操作或信息的应用程序、服务或其他AI代理。客户端使用A2A协议发起通信
- A2A服务器(远程代理):实现A2A协议HTTP端点的AI代理或代理系统。它接收客户端请求、处理任务并返回结果或状态更新。从客户端角度看,远程代理作为"不透明"系统运行
基本通信元素
-
代理卡片(Agent Card):
- JSON元数据文档,通常可在知名URL(如
/.well-known/agent.json
)发现
- 描述代理身份、服务端点URL、版本、支持的A2A能力、提供的特定技能、默认输入/输出模式及认证要求
- 客户端使用代理卡片发现代理并了解如何安全有效地与之交互
- 详见协议规范:代理卡片
-
任务(Task):
- A2A中的核心工作单元。客户端发起任务以实现特定目标
- 每个任务有唯一ID(通常由客户端生成)并遵循定义的生命周期
- 任务是状态化的,可能涉及客户端与服务器之间的多次交换
- 详见协议规范:任务对象
-
消息(Message):
- 表示任务中的单次通信
- 消息有
role
属性("user"
表示客户端发送,"agent"
表示服务器发送)
- 用于传递指令、上下文、问题、答案或状态更新
- 详见协议规范:消息对象
-
部分(Part):
Message
或Artifact
中的基本内容单元。每个部分有特定type
:
TextPart
:纯文本内容
FilePart
:表示文件,可作为base64编码字节或URI引用传输
DataPart
:结构化JSON数据,适用于表单、参数等机器可读信息
- 详见协议规范:Part联合类型
-
工件(Artifact):
- 远程代理处理任务时生成的有形输出或结果
- 可能包含生成文档、图像、电子表格等
- 由一个或多个
Part
对象组成,可增量流式传输
- 详见协议规范:工件对象
交互机制
-
请求/响应(轮询):
- 客户端发送请求(如使用
tasks/send
RPC方法)并接收服务器响应
- 长时间运行任务可能返回
working
状态,客户端需定期调用tasks/get
轮询更新
-
流式传输(服务器发送事件-SSE):
- 适用于增量生成结果或提供实时进度更新的任务
- 客户端使用
tasks/sendSubscribe
启动任务
- 服务器保持HTTP连接开放,通过Server-Sent Events(SSE)发送更新
- 需服务器在代理卡片中声明
streaming
能力
- 详见流式与异步操作
-
推送通知:
- 适用于极长时间运行任务或无法保持持久连接的场景
- 客户端可提供webhook URL接收异步通知
- 需服务器在代理卡片中声明
pushNotifications
能力
- 详见流式与异步操作
其他重要概念
- 会话(
sessionId
):可选客户端生成标识符,用于逻辑分组相关Task
对象
- 传输与格式:A2A通信基于HTTP(S),JSON-RPC 2.0作为所有请求响应的负载格式
- 认证与授权:依赖标准Web安全实践,认证要求声明于代理卡片
- 代理发现:客户端查找代理卡片以了解可用A2A服务器的过程
理解这些核心组件和机制后,开发者可有效设计、实现和利用A2A构建可互操作的AI代理系统。