指南
结构化输出
结构化输出是一项功能,允许 API 以特定的、有组织格式返回响应,例如 JSON 或您定义的其他模式。您收到的不是自由形式的文本,而是保持一致且易于解析的数据。
它非常适合文档解析、实体提取或报告生成等任务,并允许您使用 Pydantic 或 Zod 等工具定义模式,以强制执行数据类型、约束和结构。
使用结构化输出时,LLM 的响应**保证**与您的输入模式匹配。
支持的模型
从 grok-2-1212
和 grok-2-vision-1212
之后的所有语言模型均支持结构化输出。
支持的模式
对于结构化输出,支持以下类型:
- 字符串
- 不支持
minLength
和maxLength
属性
- 不支持
- 数字
- 整数
- 浮点数
- 对象
- 数组
- 不支持
minItems
和maxItem
属性 - 不支持
maxContains
和minContains
属性
- 不支持
- 布尔值
- 枚举
- anyOf
allOf
目前不支持。
示例:发票解析
结构化输出的一个常见用例是解析原始文档。例如,发票包含供应商详细信息、金额和日期等结构化数据,但从原始文本中提取这些数据可能容易出错。结构化输出确保提取的数据与预定义模式匹配。
假设您想从发票中提取以下数据
- 供应商名称和地址
- 发票号码和日期
- 行项目(描述、数量、价格)
- 总金额和货币
我们将使用结构化输出让 Grok 为此生成一个强类型 JSON。
第 1 步:定义模式
第 2 步:准备提示词
系统提示词
系统提示词指示模型从文本中提取发票数据。由于模式是单独定义的,因此提示词可以专注于任务,而无需在输出 JSON 中明确指定所需字段。
示例发票文本
第 3 步:最终代码
使用 SDK 的结构化输出功能解析发票。
第 4 步:类型安全输出
输出将**始终**是类型安全的,并遵守输入模式。