OpenAI推出结构化输出功能:让AI生成的JSON更加可靠

OpenAI在其API中新增了结构化输出功能,大幅提升了AI模型生成有效JSON的可靠性。这项功能不仅让开发者能更轻松地建立稳定的应用程序,还为AI在非结构化输入中生成结构化数据开辟了新的可能性。

结构化输出:AI生成JSON的革命性进展

在人工智能领域,从非结构化输入中生成结构化数据一直是一个核心应用场景。无论是通过函数调用获取数据、提取结构化信息进行数据输入,还是建立多步骤的代理工作流程,开发者们都在不断探索如何让AI更好地完成这些任务。

然而,在此之前,开发者们常常需要依赖开源工具、精心设计的提示,甚至反复尝试请求,来确保AI模型的输出能够符合他们系统所需的格式。这不仅耗时耗力,还可能影响应用程序的稳定性和可靠性。

结构化输出的突破

OpenAI推出的结构化输出功能,通过两种方式解决了这个问题:

  1. 限制模型输出: 确保AI模型的输出严格遵循开发者提供的JSON模式。
  2. 模型优化: 训练模型更好地理解和处理复杂的JSON模式。

这项功能的效果令人惊叹。在复杂JSON模式的评估中,配备结构化输出功能的新模型gpt-4o-2024-08-06取得了100%的得分,远超前代模型gpt-4-0613不到40%的成绩。

如何使用结构化输出

OpenAI在API中提供了两种使用结构化输出的方式:

1. 函数调用

开发者可以在函数定义中设置strict: true来启用结构化输出。这适用于所有支持工具的模型,包括gpt-4-0613和gpt-3.5-turbo-0613及更高版本。

2. 响应格式的新选项

开发者可以使用response_format参数的新选项json_schema来提供JSON Schema。这特别适用于模型需要以结构化方式直接响应用户,而不是调用工具时的情况。

结构化输出的技术原理

OpenAI采用了一种称为”约束采样”或”约束解码”的技术来实现结构化输出。这种方法将模型的输出限制在符合提供的JSON模式的有效标记范围内,从而确保输出的有效性。

具体实现步骤如下:

  1. 将JSON模式转换为上下文无关语法(CFG)。
  2. 在采样过程中,根据之前生成的标记和语法规则,动态确定下一个有效的标记。
  3. 使用这个有效标记列表来遮罩下一个采样步骤,有效地将无效标记的概率降为零。

这种方法不仅能处理简单的JSON结构,还能处理涉及嵌套或递归数据结构的复杂模式,这是基于有限状态机(FSM)的方法难以实现的。

结构化输出的应用场景

结构化输出功能为开发者开启了许多新的可能性,以下是一些潜在的应用场景:

  1. 动态生成用户界面: 根据用户意图生成符合特定结构的UI元素描述。
  2. 数据提取与分析: 从非结构化文本中提取结构化信息,如会议记录中的待办事项、截止日期等。
  3. 自动化报告生成: 将原始数据转换为结构化的报告格式。
  4. 对话系统优化: 确保聊天机器人的响应符合预定义的结构,便于后续处理。

结构化输出的限制与注意事项

虽然结构化输出功能强大,但开发者在使用时仍需注意以下几点:

  • 仅支持JSON模式的子集,详情请参阅官方文档。
  • 首次使用新模式可能会有额外延迟,但后续请求将快速响应。
  • 如果模型选择拒绝不安全的请求,可能无法遵循模式。
  • 达到max_tokens限制或其他停止条件时,可能无法完全遵循模式。
  • 结构化输出不能防止所有类型的模型错误,如数学计算错误。
  • 与并行函数调用不兼容,需设置parallel_tool_calls: false
  • 不符合零数据保留(ZDR)标准。

结构化输出的可用性

结构化输出功能现已在OpenAI API中全面可用:

  • 支持函数调用的结构化输出适用于所有支持API中函数调用的模型。
  • 支持响应格式的结构化输出适用于gpt-4o-mini和gpt-4o-2024-08-06及其微调模型。
  • 兼容聊天完成API、助手API和批次API。
  • 支持视觉输入。

开发者可以通过查阅OpenAI的官方文档来开始使用结构化输出功能。

常见问题

  1. Q: 结构化输出功能如何提高JSON生成的可靠性? A: 结构化输出通过限制模型输出和优化模型理解复杂JSON模式的能力,将JSON生成的可靠性提高到了100%。

  2. Q: 结构化输出功能适用于哪些OpenAI模型? A: 结构化输出适用于支持函数调用的所有模型,包括最新的gpt-4o系列和gpt-3.5-turbo系列。

  3. Q: 使用结构化输出功能会影响API的响应速度吗? A: 首次使用新的JSON模式可能会有些许延迟,但后续请求不会受到影响,响应速度很快。

  4. Q: 结构化输出功能有哪些局限性? A: 主要局限包括只支持JSON模式的子集、无法防止所有类型的模型错误,以及与并行函数调用不兼容等。

  5. Q: 如何开始使用结构化输出功能? A: 开发者可以查阅OpenAI的官方文档,了解如何在API调用中启用和配置结构化输出功能。

Share on:
Previous: 免费版ChatGPT用户现可使用DALL-E 3创作图像,每日限量2张
Next: Gemini的重大升级:1.5 Flash带来更快回应、扩展访问等功能
DMflow.chat

DMflow.chat

广告

一站整合多平台聊天,智能沟通新体验!支持 Facebook、Instagram、Telegram、LINE 和网站,内置 ChatGPT 与 Gemini 模型,提供历史记录保存、推送通知、营销活动和客服转接等强大功能,全方位提升效率与互动!

13 September 2024

OpenAI o1 模型:解决复杂问题的全新思考型 AI

OpenAI o1 模型:解决复杂问题的全新思考型 AI 突破性的 AI 推理能力,为科学、编程和数学领域带来革命性进展 OpenAI 最近推出了一系列全新的 AI 模型,旨在解决复杂问题并...

23 July 2024

提示工程:优化大型语言模型输出的策略与技巧

提示工程:优化大型语言模型输出的策略与技巧 本指南分享了如何从大型语言模型(如 GPT-4)中获得更好结果的策略和技巧。这些方法可以单独使用,也可以组合使用以达到更好的效果。 六大策略获...