如何使用结构化响应
要正确使用 “response_format”,您可以使用各种 “properties” 定义 schema,这些属性代表输出类别,每个属性都有单独配置的数据类型。这些对象可以嵌套以创建更高级的输出结构。 下面是一个使用 response_format 解释逐步求解数学方程过程的 API 调用示例。 可以看到,properties 被配置为要求响应中同时包含 “steps” 和 “final_answer”。在嵌套中,steps 类别包含 “explanation” 和 “output”,都是字符串。陷阱
通过 response_format 使用结构化输出时,需要注意一些关键要求:- 使用 response_format 的初始请求生成响应可能需要更长时间。后续请求不会出现与初始请求相同的延迟。
-
对于较大的查询,如果达到
max_tokens或模型超时,或违反任何速率限制,模型可能无法完成 - 不正确的 schema 格式将导致完成时出错,通常是由于超时
- 虽然 response_format 确保模型以特定方式输出,但它不能保证模型在其中提供了正确的信息。内容由 prompt 和模型性能驱动。
- 通过 response_format 实现的结构化输出与并行函数调用不兼容
-
重要:所有字段或参数都必须包含
required标签。要使字段可选,您需要在字段的type中添加null选项,例如"type": ["string", "null"] -
可以通过在 required 字段中给出
null选项来允许空响应,从而使字段可选。 -
重要:
additionalProperties必须设置为 false,response_format 才能正常工作 -
重要:
strict必须设置为 true,response_format 才能正常工作