JavaScript对象表示法(JSON)文件和数据交换格式是行业标准,因为它既易于人类阅读,又便于机器解析。
然而,大型语言模型(LLMs)在处理JSON时常常遇到困难,它们可能会产生幻觉,创建出部分符合指令的奇怪响应,或者完全无法解析,这通常要求开发者使用诸如开源工具、大量不同的提示或重复请求等变通方法,以确保输出的互操作性。
现在,OpenAI通过其API发布的结构化输出功能,帮助缓解这些挫折,该功能有助于确保模型生成的输出与JSON模式匹配,这些模式至关重要,因为它们描述了给定JSON文档中的内容、结构、数据类型和预期约束。
OpenAI表示,这是开发者最为需求的功能,因为它允许在各种应用程序中保持一致性。OpenAI CEO Sam Altman今天在X上发帖称,这一发布是“非常受欢迎的需求”。
公司表示,其在新GPT-4o上的结构化输出评估得分为“完美的100%”。
这一新功能发布于OpenAI本周一系列激动人心的事件之后:三位关键高管——John Schulman、Greg Brockman和Peter Deng——突然宣布离职,而Elon Musk再次起诉公司,称其背叛了AI使命,形容这如同“莎士比亚式的背叛”。
轻松确保模式遵循
JSON是一种基于文本的格式,用于存储和交换数据。由于其简单、灵活和与各种编程语言兼容,它已成为开发者中最受欢迎的数据格式之一。OpenAI迅速满足了开发者的需求,在去年的开发者日上发布了其模型的JSON模式。
通过API中的结构化输出,开发者可以约束OpenAI模型以匹配模式。OpenAI表示,这一功能还使其模型能够更好地理解更复杂的模式。
“结构化输出是JSON模式的演变,”公司在其博客中写道,“虽然两者都确保生成有效的JSON,但只有结构化输出确保模式遵循。”这意味着开发者“无需担心模型省略必需的键或幻化出无效的枚举值。”(枚举值是命名语言中常量的过程,使代码更易读和维护)。
开发者可以要求结构化输出以逐步的方式生成答案,以引导至预期的输出。根据OpenAI的说法,开发者不需要验证或重试格式错误的响应,并且该功能允许更简单的提示,同时提供明确的拒绝。
“安全是OpenAI的首要任务——新的结构化输出功能将遵守我们现有的安全政策,仍然允许模型拒绝不安全的请求。”公司写道。
结构化输出可在GPT-4o-mini、GPT-4o和这些模型的微调版本上使用,并可用于Chat Completions API、Assistants API和Batch API,还兼容视觉输入。
OpenAI强调,这一新功能“从开源社区的优秀工作中汲取灵感:即outlines、jsonformer、instructor、guidance和lark库。”