使用 Gemini API 生成结构化输出(如 JSON)


默认情况下,Gemini API 以非结构化文本的形式返回响应。不过,某些用例需要结构化文本,例如 JSON。例如,您可以将该响应用于需要已建立数据架构的其他下游任务。

为确保模型生成的输出始终遵循特定架构,您可以定义响应架构,该架构类似于模型响应的蓝图。然后,您就可以直接从模型的输出中提取数据,所需的后期处理更少。

下面是一些示例:

  • 确保模型的响应生成有效的 JSON 并符合您提供的架构。
    例如,该模型可以为食谱生成结构化条目,其中始终包含食谱名称、食材列表和步骤。然后,您可以更轻松地解析这些信息,并将其显示在应用的界面中。

  • 限制模型在分类任务期间的响应方式。
    例如,您可以让模型使用一组特定标签(例如 positivenegative 等一组特定枚举)而不是模型生成的标签(可能具有一定程度的可变性,如 goodpositivenegativebad)为文本添加注释。

本指南介绍了如何通过在对 generateContent 的调用中提供 responseSchema 来生成 JSON 输出。它侧重于纯文字输入,但也可以针对包含图片、视频和音频的多模态请求生成结构化回复。

本页面底部提供了更多示例,例如如何生成枚举值作为输出。如需查看有关如何生成结构化输出的其他示例,请参阅 Google Cloud 文档中的示例架构和模型响应列表。

准备工作

如果您尚未完成 Vertex AI in Firebase SDK 入门指南,请先完成该指南。请确保您已完成以下所有操作:

  1. 设置新的或现有的 Firebase 项目,包括使用 Blaze 定价方案以及启用所需的 API。

  2. 将您的应用与 Firebase 相关联,包括注册应用以及将 Firebase 配置添加到应用。

  3. 添加 SDK 并在您的应用中初始化 Vertex AI 服务和生成模型。

将应用关联到 Firebase、添加 SDK 并初始化 Vertex AI 服务和生成模型后,您就可以调用 Gemini API 了。

第 1 步:定义响应架构

通过定义响应架构指定模型输出的结构、字段名称以及每个字段的预期数据类型。

当模型生成其回答时,它会使用提示中的字段名称和上下文。为了让您的意图清晰明确,我们建议您使用清晰的结构、明确的字段名称,甚至根据需要进行说明。

响应架构的注意事项

编写响应架构时,请注意以下事项:

  • 响应架构的大小会计入输入词元限制。

  • 响应架构功能支持以下响应 MIME 类型:

    • application/json:输出响应架构中定义的 JSON(适用于结构化输出要求)

    • text/x.enum:输出响应架构中定义的枚举值(对分类任务很有用)

  • 响应架构功能支持以下架构字段:

    enum
    items
    maxItems
    nullable
    properties
    required

    如果您使用不受支持的字段,模型仍可以处理您的请求,但会忽略该字段。请注意,上述列表是 OpenAPI 3.0 架构对象的子集(请参阅 Vertex AI 架构参考文档)。

  • 默认情况下,对于 Vertex AI in Firebase SDK,除非您在 optionalProperties 数组中将其指定为可选,否则所有字段都被视为必填字段。对于这些选填字段,模型可以填充或跳过这些字段。

    请注意,这与 Vertex AI Gemini API 的默认行为相反。

第 2 步:发送包含响应架构的问题以生成 JSON

以下示例展示了如何生成结构化 JSON 输出。

如需生成结构化输出,您需要在模型初始化期间指定适当的 responseMimeType(在此示例中为 application/json)以及您希望模型使用的 responseSchema

Gemini 1.5 Pro 和 Gemini 1.5 Flash 支持使用 responseSchema

了解如何根据用例和应用选择 Gemini 模型和(可选)位置

更多示例

如需查看有关如何使用和生成结构化输出的其他示例,请参阅 Google Cloud 文档中的示例架构和模型响应列表。

生成枚举值作为输出

以下示例展示了如何为分类任务使用响应架构。要求模型根据电影的说明来识别电影的类型。输出是模型从在所提供的响应架构中定义的列表值中选择的一个纯文本枚举值。

如需执行此结构化分类任务,您需要在模型初始化期间指定您希望模型使用的相应 responseMimeType(在本例中为 text/x.enum)以及 responseSchema

了解如何选择适合您的用例和应用的 Gemini 模型和(可选)位置

用于控制内容生成的其他选项

  • 详细了解提示设计,以便影响模型根据您的需求生成输出。
  • 配置模型参数以控制模型生成响应的方式。这些参数包括输出词元数上限、温度、topK 和 topP。
  • 使用安全设置来调整获得可能被视为有害的响应(包括仇恨言论和露骨色情内容)的可能性。
  • 设置系统指令来引导模型的行为。此功能类似于您在模型向最终用户提供任何进一步说明之前添加的“序言”。


请就您的Vertex AI in Firebase使用体验提供反馈