JavaScript对象表示法(JSON)是一种行业标准文件格式,既易于人类阅读,又方便机器解析,因此广泛被用于数据交换。然而,尽管JSON有诸多优点,大型语言模型(LLMs)在处理JSON时常面临挑战。这些模型可能会生成虚假的内容,产生与指令部分匹配的响应,或无法正确解析JSON。这种情况往往迫使开发者采用变通方法,例如使用开源工具、多个提示或重复请求,以实现所需的输出和互操作性。
结构化输出:开发者的解决方案
为了解决这些问题,OpenAI在其API中推出了结构化输出功能。此新功能确保模型生成的输出符合JSON模式,这些模式定义了JSON文档的内容、结构、数据类型和约束条件。OpenAI表示,这是开发者最为渴望的功能之一,它在提高应用一致性方面发挥了重要作用。首席执行官山姆·奧特曼(Sam Altman)甚至将此发布称作“应大众要求而来”。
在评估中,OpenAI的新GPT-4o模型在结构化输出功能下获得了百分之百的完美评分。
此公告发布于OpenAI的一个重要时刻,期间多位高管意外辞职,包括约翰·舒尔曼(John Schulman)、格雷格·布洛克曼(Greg Brockman)和彼得·邓(Peter Deng),同时埃隆·马斯克(Elon Musk)对公司的法律挑战也在继续,这被称为是对其人工智能使命的“莎士比亚式”背叛。
简化模式遵循
JSON是一种灵活且广泛使用的数据存储与交换格式,兼容多种编程语言。OpenAI在去年的开发者日(DevDay)上首次推出了JSON模式,以满足开发者的需求。
结构化输出功能使开发者能够限制OpenAI模型严格遵循定义的模式。OpenAI表示,这一功能提高了模型对复杂模式的理解能力。公司在博客中解释道:“结构化输出是JSON模式的一种进化。虽然两者都确保生成有效的JSON,只有结构化输出可以保证模式的遵循。”这一进步消除了对遗漏必需键或无效枚举值的担忧,这些常量使编程更易于维护。
开发者可以使用结构化输出逐步引导输出,消除对不正确格式的响应进行验证或重新发送的需求。该功能支持更简单的提示,并包括了对不安全请求的明确拒绝,体现了OpenAI对安全性的承诺。
可用性和兼容性
结构化输出已在GPT-4o-mini、GPT-4o及其精细调优版本中上线。它可以通过聊天完成API(Chat Completions API)、助手API(Assistants API)和批处理API(Batch API)使用,并支持视觉输入。
OpenAI承认,这项新功能受益于开源社区的卓越成果,特别是来自outlines、jsonformer、instructor、guidance和lark库的灵感。