A2A核心概念

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

展示用户、A2A客户端(客户端代理)和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)

    • MessageArtifact中的基本内容单元。每个部分有特定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代理系统。