Artifact (工件)

Artifact (工件)

Artifact (工件) 是 A2A 协议中用于表示代理(Agent)作为任务(Task)最终结果生成的输出。

工件特性

  • 不可变性: 一旦生成,工件的内容通常是不可变的。
  • 命名: 工件可以被命名 (name),方便识别。
  • 多部分: 一个工件可以包含多个部分 (parts),每个部分有自己的内容和类型。
  • 流式支持: 通过流式响应 (append: true),可以将新的部分 (Part) 附加到现有的工件中,适用于逐步生成内容或大数据传输的场景。
  • 多工件任务: 一个任务可以生成多个工件。例如,一个"创建网页"的任务可能会生成一个 HTML 工件和一个或多个图像工件。

工件接口定义

以下是工件接口的示意性定义:

interface Artifact {
  name?: string; // 工件的可选名称
  description?: string; // 工件的可选描述
  parts: Part[]; // 工件包含的部分数组
  metadata?: Record<string, any>; // 扩展元数据
  index: number; // 工件在其所属任务中的索引
  append?: boolean; // 是否允许追加 Part (用于流式传输)
  lastChunk?: boolean; // 是否是流式传输的最后一块
}

工件是 A2A 协议中传递代理最终产出的标准方式,其设计考虑了当前 AI 应用中常见的输出形式,如文本、代码、图像、逐步生成的内容等。