A2A 核心概念

A2A 核心概念

https://google-a2a.github.io/A2A/topics/key-concepts/

其他内容待继续


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

核心参与者

  • User: 发起需要 agent 协助的请求或目标的最终用户(人工或自动服务)。
  • A2A 客户端(客户端代理): 代表用户向远程代理请求操作或信息的应用程序、服务或其他 AI 代理。客户端使用 A2A 协议发起通信。
  • A2A 服务器(远程代理): 一个 AI 代理或代理系统,公开实现 A2 A 协议的 HTTP 端点。它接收来自客户端的请求,处理任务,并返回结果或状态更新。从客户端的角度来看,远程代理作为一个“不透明”系统运行,这意味着客户端不需要知道它的内部工作、内存或工具。

基本通信元素

  • Agent Card: 代理卡

    • JSON 元数据文档,通常可在众所周知的 URL(例如,/.well-known/agent.json),它描述了 A2 A 服务器。
    • 它详细说明了代理的身份(名称、描述)、服务端点 URL、版本、支持的 A2A 功能(如流或推送通知)、它提供的特定技能、默认输入/输出模式和身份验证要求。
    • 客户使用代理卡来发现代理并了解如何安全有效地与他们互动。
    • 详见方案规范:代理卡 。
  • Task: 任务

    • 当客户端向代理发送消息时,代理可以确定满足请求需要完成有状态任务(例如,“生成报告”、“预订航班”、“回答问题”)。
    • 每个任务都有一个由代理定义的唯一 ID,并在定义的生命周期中进行(例如, 已提交 、 正在工作 、 需要输入 、 已完成 、 失败 )。
    • 任务是有状态的,可以涉及客户端和服务器之间的多个交换(消息)。
    • 详见协议规范:任务对象 。
  • 消息

    • 表示客户端和代理之间的单轮或单单元通信。
    • 消息有一个角色 (客户端发送消息的 “用户” 或服务器发送消息的 “代理”),并包含一个或多个携带实际内容的 Part 对象。Message 对象的 messageId 部分是由消息的发送者为每个消息设置的唯一标识符。
    • 用于传达不一定是正式工件的指令、上下文、问题、答案或状态更新。
    • 详见协议规范:消息对象 。
  • 部件

    • 消息或文件中内容的基本单位。每个部分都有特定的类型 ,并且可以携带不同类型的数据:
    • TextPart:包含纯文本内容。
    • FilePart:表示一个文件,它可以作为内联 base64 编码的字节传输,也可以通过 URI 引用。包括文件名和媒体类型等元数据。
    • DataPart:携带结构化 JSON 数据,用于表单、参数或任何机器可读信息。
    • 详见协议规范:部件对象 。
  • Artifact

    • 表示远程代理在任务处理期间生成的有形输出或结果。
    • 示例包括生成的文档、图像、电子表格、结构化数据结果或作为任务的直接结果的任何其他自包含信息。
    • 工件由一个或多个 Part 对象组成,并且可以以增量方式流式传输。
    • 详见协议规范:工件对象 。

交互机制

Request/Response (Polling)

请求/响应(轮询):

  • 客户端发送请求(例如,使用消息/发送 RPC 方法)并从服务器接收响应。

  • 如果交互需要一个有状态的长时间运行的任务,服务器最初可能会响应一个工作状态。客户端然后将周期性地调用 tasks/get 以轮询更新,直到任务到达终端状态(例如, 完成 , 失败 )。

流(服务器发送事件- SSE)