Part (片段)

Part (片段)

Part (片段) 是 A2A 协议中构成 MessageArtifact 的原子内容单元。它允许将不同类型的数据组合在单个消息或工件中进行交换。

片段的作用

  • 内容载体: 每个 Part 包含一段具体的内容。
  • 类型标识: 每个 Part 都明确其内容类型 (type),通常使用 MIME 类型(如 text/plain, image/png, application/json)或其他预定义的类型。
  • 元数据: 可以包含与该片段相关的元数据。
  • 灵活性: 通过组合不同的 PartMessageArtifact 可以灵活地表示复杂的信息结构,例如同时包含文本指令、JSON 数据和文件引用的消息。

不同类型的 Part

A2A 协议定义了多种 Part 类型以适应不同的交互需求。以下是一些示例(基于源文档和通用模式):

  • 文本片段 (TextPart): 用于传输纯文本内容。
    interface TextPart {
      type: "text" | "text/plain"; // 或其他文本相关 MIME 类型
      text: string;
    }
  • 文件片段 (FilePart): 用于引用或传输文件。具体实现可能涉及文件 URI、内联数据(Base64)等。
    // 示例结构 (具体定义可能不同)
    interface FilePart {
      type: "file" | string; // 例如 "image/jpeg", "application/pdf"
      uri?: string; // 指向文件的 URI
      data?: string; // Base64 编码的文件内容
      filename?: string;
    }
  • JSON 片段 (JsonPart): 用于传输结构化的 JSON 数据。
    interface JsonPart {
      type: "json" | "application/json";
      json: any; // 实际的 JSON 对象或数组
    }
  • 表单片段 (FormPart): 用于呈现和提交表单。
  • iframe 片段 (IFramePart): 用于嵌入网页内容。
  • 其他特定类型: 协议还可以定义其他特定类型的 Part 以支持特定应用场景(如视频流、音频流等)。

Part 的设计使得 A2A 协议具有高度的可扩展性和对多模态内容的支持能力。