OpenAI 今日正式宣布一项关键更新——结构化输出(Structured Outputs)功能正式上线。简而言之,这一新特性旨在确保模型生成的输出严格遵循开发者预定义的 JSON 格式。这不仅是一次细微的修补,更是对 API 响应可靠性的重大提升。
回顾去年开发者日(DevDay),OpenAI 首次推出了 JSON 模式,为开发者提供了一个相对稳定的基础。但客观来说,该模式只是提高了模型生成有效 JSON 输出的概率,并不能保证输出完全匹配某个特定“模板”。今天上线的结构化输出功能,正是直击这一痛点而生。
随着 AI 在实际场景中的大规模落地,将杂乱的非结构化输入转换为规整的结构化数据已成为核心需求。开发者借助 OpenAI API 构建各类强大助手时——无论是通过函数调用获取数据、回答用户问题,还是提取结构化信息用于数据录入——都离不开这一能力。过去,为保障输出格式正确,开发者往往需要耗费大量精力:自行调整开源工具、反复请求模型、编写复杂后处理逻辑……而如今,结构化输出功能可直接约束模型,使其强制匹配开发者提供的 JSON Schema,输出可靠性实现质的飞跃。
复杂 JSON Schema 得分直接拉满
性能表现如何?在复杂 JSON Schema 的评测中,全新模型 gpt-4o-2024-08-06 获得了满分 100%,而此前的 gpt-4-0613 甚至不足 40%。这意味着新模型在严格按指定格式输出方面实现了根本性提升。
如何上手使用?
上手非常简单。OpenAI 在 API 中提供了两种途径:一种是函数调用方式,另一种是响应格式的新选项。开发者可以通过 json_schema 参数直接传入一个 JSON Schema。开启严格模式后,模型的输出将被“锁定”在该模式内。
具体来说,有两种方法:
1. 函数调用:在函数定义中将 strict: true 设为开启状态,即可通过 tools 参数获得结构化输出。该功能适用于所有支持工具调用的模型,包括从 gpt-4-0613 和 gpt-3.5-turbo-0613 开始的后续所有版本。启用后,模型的输出将与您定义的工具严格对齐。
2. response_format 参数的新选项:开发者现在可以通过 json_schema 提供 JSON Schema,这是 response_format 参数新增的能力。当模型并非调用工具,而是需要以结构化方式直接回应用户时,这一选项尤为实用。但请注意,它仅适用于最新的 GPT-4o 模型:今天刚发布的 gpt-4o-2024-08-06 和 gpt-4o-mini-2024-07-18。当 response_format 搭配 strict: true 一起使用时,模型的输出将严格遵循您提供的架构。
在安全性方面,OpenAI 始终高度重视。新功能将在现有安全政策框架下运行,对于不安全的请求,系统依然会予以拒绝。此外,为了方便开发者,他们还新增了一个拒绝字符串值,帮助您在程序中检测模型是否生成了拒绝信息。
原生 SDK 支持,开箱即用
OpenAI 的 Python 和 Node 端 SDK 也已同步更新,原生支持结构化输出。开发者只需提供 Pydantic 或 Zod 对象,SDK 即可自动完成数据类型转换与 JSON 响应解析,省去大量繁琐工作。
总体而言,本次结构化输出功能的发布,让开发者能够更轻松地构建出稳定可靠的应用程序。告别反复调试,专注打磨优质产品。
