
OpenAI在其API中加入结构化输出(Structured Outputs)功能,确保模型生成的输出,能够完全符合开发者所提供的JSON结构。这项功能可被用于建构爬虫等工具,透过功能呼叫抓取需要的资料,从非结构化资料中撷取结构化资料,并根据这些资料回答用户问题,对于资料输入和处理情境非常有用。
虽然之前OpenAI就已经在API推出JSON模式,试图更好地提供结构化的资料,让开发者能够用于建构可靠的应用程序,但是虽然JSON模式可以提高JSON文件输出的可靠性,但是却不能保证模型的回应能够完全符合特定的结构。
而OpenAI API新加入的结构化输出功能,便能準确地回应开发者对JSON文件的需求,避免需要使用开源工具、提示并反覆试错来要求模型输出符合需求的格式。官方提到,结构化输出透过约束OpenAI模型来符合开发者的结构,并训练模型更好地理解複杂JSON结构以解决这个问题。
OpenAI API提供两种结构化输出使用方式,以符合开发者提供的JSON结构,第一种是功能呼叫,适用于所有支援工具的模型,开发者在功能定义中设定strict:true,就能启动结构化输出功能。第二种则是开发者可以在response_format参数中使用新的json_schema选项,这适用于在模型不呼叫工具,而是以结构化方式回应用户的情境。
目前OpenAI已经更新Python和Node SDK,原生支援结构化输出,这代表开发者可以像是使用Pydantic或是Zod物件一样,简单地提供工具的结构或回应格式,SDK将会自动处理资料型别转换,将开发者的资料型别转换为支援的JSON结构。