A2A的关键概念¶
Agent2Agent(A2A)协议建立在一系列定义Agent如何交互的核心概念之上。理解这些概念对于开发或集成符合A2A标准的系统至关重要。 
核心参与者¶
-
用户(User):发起需要Agent协助的请求或目标的终端用户(人类或自动化服务)。
-
A2A客户端(Client Agent):代表用户向远程Agent请求操作或信息的应用程序、服务或其他AI Agent。客户端使用A2A协议发起通信。
-
A2A服务器(Remote Agent):实现A2A协议的HTTP端点的AI Agent或Agent系统。它接收来自客户端的请求,处理任务,并返回结果或状态更新。从客户端的角度来看,远程Agent作为一个
不透明的系统运行,这意味着客户端不需要了解其内部逻辑、状态记忆或工具。
基础通信要素¶
Agent Card¶
- Agent Card是一个JSON格式的元数据文档,通常可以在一个众所周知的URL(例如,/.well-known/agent.json)上发现,用于描述A2A服务器。
- 它详细说明了Agent的身份信息(名称、描述)、服务端点URL、版本、支持的A2A功能(如流式传输或推送通知)、提供的特定技能、默认的输入/输出模式以及认证要求。
- 客户端使用Agent Card来发现Agent并了解如何安全有效地与之交互。
- 详细信息请参见协议规范:Agent Card。
任务(Task)¶
- 当客户端向Agent发送消息时,Agent可能会确定完成请求需要执行一个有状态的任务(例如,
生成报告、预订航班、回答问题)。 - 每个任务都有一个由Agent定义的唯一ID,并按照定义的生命周期进行(例如,已提交、处理中、需要输入、已完成、失败)。
- 任务是有状态的,可能涉及客户端和服务器之间的多次交互(消息)。
- 详细信息请参见协议规范:Task Object。
消息(Message)¶
- 表示客户端和Agent之间的单次通信或通信单元。
- 消息具有角色属性(
user表示客户端发送的消息,agent表示服务器发送的消息),并包含一个或多个Part对象来承载实际内容。Message对象中的messageId是消息发送者为每条消息设置的唯一标识符。 - 用于传输指令、语境数据、交互问题、应答内容或状态更新等非结构化通信内容,此类信息无需遵循正式的
Artifacts规范 - 详细信息请参见协议规范:Message Object。
零件(Part)¶
- 是Message或Artifact中的基本内容单元。每个Part都有特定的类型,可以承载不同类型的数据:
TextPart:包含纯文本内容。FilePart:表示文件,可以通过内联的base64编码字节或URI引用来传输。包含文件名和MIME类型等元数据。DataPart:承载结构化的JSON数据,适用于表单、参数或任何机器可读的信息。- 详细信息请参见协议规范:Part Union Type。
制品(Artifact)¶
- 表示远程Agent在处理任务过程中生成的具体输出或结果。
- 示例包括生成的文档、图像、电子表格、结构化数据结果,或任何其他作为任务直接结果的独立信息单元。
- 制品由一个或多个
Part对象组成,可以增量流式传输。 - 详细信息请参见协议规范:Artifact Object。
交互机制¶
请求/响应(轮询)¶
- 客户端发送请求(例如,使用
message/sendRPC方法)并接收服务器的响应。 - 如果交互需要执行有状态的长时运行任务,服务器可能会首先返回一个处理中的状态。客户端随后需要定期调用
tasks/get来轮询更新,直到任务达到终止状态(例如,已完成、失败)。
流式传输(SSE)¶
- 适用于需要增量生成结果或提供实时进度更新的任务。
- 客户端使用
message/stream方法发起与服务器的交互。 - 服务器响应一个保持打开的HTTP连接,通过该连接发送服务器发送事件(SSE)流。
- 这些事件可以是
Task、Message、TaskStatusUpdateEvent(用于状态变更)或TaskArtifactUpdateEvent(用于新的或更新的artifact块)。 - 这要求服务器在其Agent Card中声明支持流式传输能力。
- 了解更多关于流式传输与异步操作。
推送通知¶
- 适用于长时间运行的任务或无法维持持久连接(如SSE)的场景。
- 客户端可以在启动任务时提供webhook URL(或通过调用
tasks/pushNotificationConfig/set)。 - 当任务状态发生重大变化时(例如,完成、失败或需要输入),服务器可以向客户端提供的webhook发送异步通知(HTTP POST请求)。
- 这要求服务器在其Agent Card中声明支持
pushNotifications能力。 - 了解更多关于流式传输与异步操作。
其他重要概念¶
-
上下文(contextId):服务器生成的标识符,用于在逻辑上对多个相关的
Task对象进行分组,为一系列交互提供上下文。 -
传输和格式:A2A通信通过HTTP(S)进行。所有请求和响应都使用JSON-RPC 2.0作为负载格式。
-
认证和授权:A2A依赖于标准的Web安全实践。认证要求在Agent Card中声明,凭证(如OAuth令牌、API密钥)通常通过HTTP头部传递,与A2A协议消息本身分开。
- Learn more about Enterprise-Ready Features.
-
Agent发现:客户端查找Agent Card以了解可用的A2A服务器及其功能的过程。
- Learn more about Agent Discovery.
通过理解这些核心组件和机制,开发者可以有效地设计、实现和利用A2A来构建可互操作和协作的AI Agent系统。