OpenAI 在 API 中引入结构化输出

24-08-07
免费
查看原文

OpenAI 于 2024 年 8 月 6 日推出了一项新功能——Structured Outputs,该功能确保 API 的模型输出严格符合开发者提供的 JSON Schema。这项功能旨在提高 AI 在处理结构化数据生成时的可靠性,特别是在从非结构化输入中提取信息的场景中。

主要特点和优势:

  1. 高可靠性:新模型 gpt-4o-2024-08-06 在复杂 JSON Schema 的遵循性测试中达到了 100% 的准确率,相较于之前的模型 gpt-4-0613(准确率不到 40%)有显著提升。

  2. 两种使用方式:

    • 函数调用:通过在函数定义中设置 strict: true 来启用 Structured Outputs。
    • 响应格式参数:开发者可以通过 response_format 参数提供 JSON Schema,以便模型以结构化方式响应用户。
  3. 安全性:Structured Outputs 遵循 OpenAI 的安全政策,允许模型拒绝不安全的请求。

  4. SDK 支持:OpenAI 的 Python 和 Node SDK 已更新,支持 Structured Outputs,简化了开发者的使用。

  5. 应用场景广泛:包括动态生成用户界面、分离最终答案与支持推理、从非结构化数据中提取结构化数据等。

技术实现:

  • 使用受限解码(constrained decoding)技术,确保模型输出仅包含符合给定 Schema 的有效 Token。
  • 将 JSON Schema 转换为上下文无关文法(Context-Free Grammar, CFG),以动态确定每个步骤后的有效 Token。

限制和注意事项:

  • Structured Outputs 只支持 JSON Schema 的子集。
  • 使用新 Schema 的首次 API 响应可能会有额外的延迟。
  • 如果模型拒绝请求或生成达到最大 Token 数限制,可能无法遵循 Schema。
  • Structured Outputs 并不防止所有类型的模型错误,例如在 JSON 对象的值中可能仍然存在错误。
  • 不与并行函数调用兼容。
  • 提供的 JSON Schema 不符合零数据保留(Zero Data Retention, ZDR)资格。

可用性:

Structured Outputs 目前已在 API 中普遍可用,支持 Chat Completions API、Assistants API 和 Batch API,并兼容视觉输入。

结论:

Structured Outputs 的推出显著提升了 OpenAI API 在生成结构化数据时的准确性和可靠性,为开发者在构建应用程序时提供了更强大的工具。通过严格的 Schema 遵循和高效的技术实现,这项功能有望在多种应用场景中发挥重要作用。

头像
Memo AI
AI is everything!
相关文章