指南

结构化输出

结构化输出是一项功能,允许 API 以特定的、有组织格式返回响应,例如 JSON 或您定义的其他模式。您收到的不是自由形式的文本,而是保持一致且易于解析的数据。

它非常适合文档解析、实体提取或报告生成等任务,并允许您使用 PydanticZod 等工具定义模式,以强制执行数据类型、约束和结构。

使用结构化输出时,LLM 的响应**保证**与您的输入模式匹配。

支持的模型

grok-2-1212grok-2-vision-1212 之后的所有语言模型均支持结构化输出。


支持的模式

对于结构化输出,支持以下类型:

  • 字符串
    • 不支持 minLengthmaxLength 属性
  • 数字
    • 整数
    • 浮点数
  • 对象
  • 数组
    • 不支持 minItemsmaxItem 属性
    • 不支持 maxContainsminContains 属性
  • 布尔值
  • 枚举
  • anyOf

allOf 目前不支持。


示例:发票解析

结构化输出的一个常见用例是解析原始文档。例如,发票包含供应商详细信息、金额和日期等结构化数据,但从原始文本中提取这些数据可能容易出错。结构化输出确保提取的数据与预定义模式匹配。

假设您想从发票中提取以下数据

  • 供应商名称和地址
  • 发票号码和日期
  • 行项目(描述、数量、价格)
  • 总金额和货币

我们将使用结构化输出让 Grok 为此生成一个强类型 JSON。


第 1 步:定义模式

您可以使用 PydanticZod 来定义您的模式。


第 2 步:准备提示词

系统提示词

系统提示词指示模型从文本中提取发票数据。由于模式是单独定义的,因此提示词可以专注于任务,而无需在输出 JSON 中明确指定所需字段。

示例发票文本


第 3 步:最终代码

使用 SDK 的结构化输出功能解析发票。


第 4 步:类型安全输出

输出将**始终**是类型安全的,并遵守输入模式。