Message (消息)

Message (消息)

Message (消息) 是 A2A 协议中用于在客户端和代理之间传递非工件 (non-Artifact) 内容的基本通信单元。

消息的用途

消息承载了交互过程中的各种信息,包括:

  • 用户输入: 所有来自客户端的请求、指令或上下文信息都以消息的形式发送。
  • 代理思考: 代理在处理任务时的中间步骤、思考过程或解释。
  • 状态更新: 代理传达任务状态变化的信息。
  • 指令: 代理向客户端发出的请求或指令(例如,请求更多信息)。
  • 错误信息: 传递交互过程中发生的错误。
  • 元数据: 附带的额外信息。

与专注于最终结果的 Artifact 不同,Message 更侧重于交互的过程和控制流。

消息结构

  • 角色 (Role): 消息发送者的角色,通常是 user (客户端) 或 agent (代理)。
  • 片段 (Parts): 消息可以包含一个或多个 Part,每个 Part 代表不同类型的内容(如文本、文件引用等)。这使得一个消息可以同时传递多种类型的信息,例如用户的文本描述和相关的上下文文件。
  • 元数据 (Metadata): 可选的元数据字段,用于携带额外信息。

消息接口定义

以下是消息接口的示意性定义:

interface Message {
  role: "user" | "agent"; // 消息发送者的角色
  parts: Part[]; // 消息包含的部分数组
  metadata?: Record<string, any>; // 扩展元数据
}

通过使用 MessageArtifact,A2A 协议清晰地区分了交互过程信息和最终结果,使得通信更加结构化和易于管理。