A2A核心概念和组件

A2A核心概念和组件

A2A核心概念和组件

A2A使用一组核心概念来定义智能体如何交互。理解这些核心构建块以开发或集成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(当智能体可以立即响应时)。

更多详细信息,请参见任务的生命周期

其他重要概念

  • 上下文(contextId:服务器生成的标识符,可用于逻辑分组多个相关的Task对象,在一系列交互中提供上下文。

  • 传输和格式:A2A通信通过HTTP(S)进行。JSON-RPC 2.0用作所有请求和响应的负载格式。

  • 身份验证和授权:A2A依赖标准Web安全实践。身份验证要求在智能体卡片中声明,凭证(例如OAuth令牌、API密钥)通常通过HTTP标头传递,与A2A协议消息本身分离。更多信息,请参见企业就绪功能

  • 智能体发现:客户端找到智能体卡片以了解可用A2A服务器及其能力的过程。更多信息,请参见智能体发现

  • 扩展:A2A允许智能体在其AgentCard中声明自定义协议扩展。更多信息,请参见扩展