A2A核心概念和组件
A2A核心概念和组件
A2A使用一组核心概念来定义智能体如何交互。理解这些核心构建块以开发或集成A2A兼容系统。
A2A交互中的核心参与者
用户(User):最终用户,可以是人类操作员或自动化服务。用户发起需要一个或多个AI智能体协助的请求或定义目标。
A2A客户端(客户端智能体):代表用户行动的应用程序、服务或另一个AI智能体。客户端使用A2A协议发起通信。
A2A服务器(远程智能体):实现A2A协议HTTP端点的AI智能体或智能体系统。它接收来自客户端的请求,处理任务,并返回结果或状态更新。从客户端的角度来看,远程智能体作为_不透明_(黑盒)系统运行,意味着其内部工作、内存或工具不会暴露。
基本通信元素
下表描述了A2A中的基本通信元素:
元素 | 描述 | 关键目的 |
---|---|---|
智能体卡片 | 描述智能体身份、能力、端点、技能和身份验证要求的JSON元数据文档。 | 使客户端能够发现智能体并了解如何安全有效地与它们交互。 |
任务 | 由智能体发起的有状态工作单元,具有唯一ID和定义的生命周期。 | 促进长时间运行操作的跟踪,并支持多轮交互和协作。 |
消息 | 客户端和智能体之间的单轮通信,包含内容和角色(“用户"或"智能体”)。 | 传递指令、上下文、问题、答案或不一定是正式工件的状态更新。 |
部分 | 消息和工件中使用的基本内容容器(例如TextPart、FilePart、DataPart)。 | 为智能体在消息和工件中交换各种内容类型提供灵活性。 |
工件 | 智能体在任务期间生成的有形输出(例如文档、图像或结构化数据)。 | 提供智能体工作的具体结果,确保结构化和可检索的输出。 |
交互机制
A2A协议支持各种交互模式,以适应不同的响应性和持久性需求。这些机制确保智能体能够高效可靠地交换信息,无论任务的复杂性或持续时间如何:
请求/响应(轮询):客户端发送请求,服务器响应。对于长时间运行的任务,客户端定期轮询服务器以获取更新。
使用服务器发送事件(SSE)的流式传输:客户端发起流以通过开放的HTTP连接从服务器接收实时、增量结果或状态更新。
推送通知:对于非常长时间运行的任务或断开连接的场景,当发生重要任务更新时,服务器可以主动向客户端提供的webhook发送异步通知。
有关流式传输和推送通知的详细探讨,请参考流式传输和异步操作文档。
智能体卡片
智能体卡片是一个JSON文档,作为初始发现和交互设置的数字名片。它提供有关智能体的基本元数据。客户端解析此信息以确定智能体是否适合给定任务、如何构造请求以及如何安全通信。关键信息包括身份、服务端点(URL)、A2A能力、身份验证要求和技能列表。
消息和部分
消息表示客户端和智能体之间的单轮通信。它包括角色(“用户"或"智能体”)和唯一的messageId
。它包含一个或多个Part对象,这些对象是实际内容的颗粒容器。这种设计使A2A能够模态无关。
主要的部分类型包括:
TextPart
:包含纯文本内容。FilePart
:表示文件。它可以内联传输(Base64编码)或通过URI传输。它包括"filename"和"mimeType"等元数据。DataPart
:携带结构化JSON数据。这对表单、参数或任何机器可读信息很有用。
工件
工件表示远程智能体在任务处理期间生成的有形输出或具体结果。与一般消息不同,工件是实际的可交付成果。工件具有唯一的artifactId
、人类可读的名称,并由一个或多个部分对象组成。工件与任务生命周期密切相关,可以增量流式传输给客户端。
智能体响应:任务或消息
智能体响应可以是新的Task
(当智能体需要执行长时间运行操作时)或Message
(当智能体可以立即响应时)。
更多详细信息,请参见任务的生命周期。