OpenAI 新模型 gpt-4o-2024-08-06 以及 gpt-4o-mini 开始支持结构化输出,和以前的 JSON 模式不一样,现在的结构化输出不仅可以定义 JSON 的 Schema,而且可以确保输出的 JSON 是 100% 正确。
一些限制:
1. 只允许一部分 JSON Schema:String、Number、Boolean、Object、Array、Enum、anyOf,不支持oneOf 和 allOf,正常够用了
2. 所有字段都是必选的,不能可选
3. 嵌套不能超过5层,不能超过100个属性
4. 一些保留字不能作为属性名,比如字符串类型不能用minLength、maxLength等
5. 第一个带有新Schema的API响应将产生额外的延迟,后续会缓存,一般延迟不会超过 10 秒,但复杂的Schema可能需要长达一分钟的预处理时间
6. 结构化输出并不能防止所有类型的模型错误。例如,模型仍可能在JSON对象的值中犯错误(例如,在数学方程中步骤出错)。如果出错,建议在提示词中提供示例或将任务拆分为更简单的子任务。
原文:openai.com/index/introducing-structured-outputs-in-the-api/
一些限制:
1. 只允许一部分 JSON Schema:String、Number、Boolean、Object、Array、Enum、anyOf,不支持oneOf 和 allOf,正常够用了
2. 所有字段都是必选的,不能可选
3. 嵌套不能超过5层,不能超过100个属性
4. 一些保留字不能作为属性名,比如字符串类型不能用minLength、maxLength等
5. 第一个带有新Schema的API响应将产生额外的延迟,后续会缓存,一般延迟不会超过 10 秒,但复杂的Schema可能需要长达一分钟的预处理时间
6. 结构化输出并不能防止所有类型的模型错误。例如,模型仍可能在JSON对象的值中犯错误(例如,在数学方程中步骤出错)。如果出错,建议在提示词中提供示例或将任务拆分为更简单的子任务。
原文:openai.com/index/introducing-structured-outputs-in-the-api/