宣布结构化输出功能在 API 中正式上线,支持多种模型并兼容视觉输入

   日期:2024-08-10     来源:网络整理    作者:二手钢材网    浏览:223    评论:0    
核心提示:OpenAI公司宣布,结构化输出功能现已在API中正式上线。OpenAI公司在API中以两种新形式引入了结构化输出功能:启用结构化输出后,模型输出将与提供的工具定义匹配。SDK已更新,提供对原生结构化输出的支持。使用结构化输出时,开发者需注意以下限制:

OpenAI公司宣布,结构化输出功能现已在API中正式上线。所有支持函数调用的模型均可实现此功能,包括最新的gpt-4o和gpt-4o-mini模型,以及gpt-4-0613和gpt-3.5-turbo-0613等微调模型。该功能可在Chat Completions API、Assistants API和Batch API中使用,并兼容视觉输入。

二、双形式创新:结构化输出携手原生SDK

OpenAI公司在API中以两种新形式引入了结构化输出功能:

1.函数调用:通过在函数定义中设置“strict: true”即可通过工具获得结构化输出。此功能适用于所有支持工具的模型,包括gpt-4-0613和gpt-3.5-turbo-0613及更高版本。启用结构化输出后,模型输出将与提供的工具定义匹配。

_满分成就怎么获得_满分是什么意思啊

▲(图源:OpenAI)

2.“response_format”参数的新选项:开发人员现在可以通过结构化输入提供JSON模式,这是“response_format”参数的新选项。当模型不调用工具而是以结构化方式响应用户时,这将更加高效。此功能适用于OpenAI最新的GPT-4o模型:今天发布的gpt-4o-2024-08-06和gpt-4o-mini-2024-07-18。当“response_format”提供 “strict: true”参数时,模型输出将与提供的模式匹配。

满分是什么意思啊__满分成就怎么获得

▲(图源:OpenAI)

OpenAI的Python和Node SDK已更新,提供对原生结构化输出的支持。通过将架构作为工具或响应格式提供,开发者可以轻松地使用 “Pydantic”或“Zod”对象,OpenAI的SDK将处理数据类型转换为受支持的JSON架构,自动将JSON响应反序列化为类型化的数据结构,并在出现拒绝时进行分析。

以下示例展示了使用函数调用对结构化输出的本机支持:

满分是什么意思啊_满分成就怎么获得_

_满分成就怎么获得_满分是什么意思啊

▲(图源:OpenAI)

开发人员经常使用OpenAI的模型为各种用例生成结构化数据。

一些其他示例包括:

1、根据用户意图动态生成用户界面

2、将最终答案与支持推理或附加评论分开

3、从非结构化数据中提取结构化数据

新的结构化输出功能将严格遵守OpenAI的安全政策,同时仍允许模型拒绝不安全的请求。API响应中新增了一个拒绝字符串值,开发人员可以通过编程方式检测模型是否生成了拒绝指令。

当响应不包含拒绝且模型的响应没有被过早中断时,模型将可靠地生成与提供的架构匹配的有效JSON模式。

三、技术揭秘:结构化输出的双重约束机制

OpenAI采用了双重方法来提高模型输出与JSON模式匹配的可靠性。首先,OpenAI对其最新的模型GPT-4o-2024-08-06进行了训练,使其能够理解复杂的模式,并生成最适配的输出。

其次,OpenAI采用了受限解码技术。尽管模型的性能显著提升,在基准测试中达到93%的准确性,但模型的固有不确定性仍然存在。为确保开发者构建应用的稳健性,OpenAI提供了一种确定性方法来约束模型输出,实现100%的可靠性。

默认情况下,模型在生成输出时没有约束,可能从词汇表中选择任何标记。这种灵活性可能导致模型生成无效的JSON字符。为了避免这种错误,OpenAI使用动态受限解码方法,强制模型仅选择符合提供模式的有效标记。在每次生成标记后,推理引擎根据前一个标记和模式规则确定下一个有效标记。这一方法通过屏蔽无效标记的可能性,确保生成的输出始终符合提供的模式。

实现这种约束可能具有挑战性,因为有效标记在整个模型输出中是动态变化的。例如,初始有效标记包括 {、{” 和 {\n等,但一旦模型生成了 {“val,那么 { 就不再是有效标记。因此,OpenAI需要在生成每个标记后动态确定哪些标记有效,而不是在响应开始时预先确定。

为此,OpenAI将提供的JSON模式转换为上下文无关语法(CFG)。CFG是一组定义语言的有效规则,开发者可以将JSON和JSON模式视为具有规则的特定语言。类似于英语中没有动词的句子是无效的,JSON中带有尾随逗号也是无效的。

因此,对于每个JSON模式,OpenAI计算出代表该模式的语法,并在采样过程中高效地访问预处理组件。这就是为什么首次使用新模式可能需要额外处理时间的原因——OpenAI必须对模式进行预处理,以生成可以在采样中有效使用的组件。

在采样时,OpenAI的推理引擎将根据先前生成的标记和语法规则(指示下一个标记是否有效)确定下一个生成的标记。OpenAI使用标记列表来屏蔽无效标记,将无效标记的概率降至0。由于模式已被预处理,OpenAI可以使用缓存的数据结构高效地完成此操作,同时将延迟开销降至最低。

除了CFG方法,有限状态机(FSM)或正则表达式也可以用于受限解码。它们的功能类似,都会在生成每个标记后动态更新哪些标记是有效的。但值得注意的是,CFG方法能够表达比FSM更广泛的语言类别。对于简单模式,这种差别可能不明显。然而,OpenAI发现对于涉及嵌套或递归数据结构的复杂模式,CFG方法表现更为出色。例如,FSM通常无法表达递归类型,因此可能难以匹配深度嵌套JSON中的括号,而支持递归模式的JSON模式在OpenAI API上已得到实现,但FSM方法难以处理。

_满分是什么意思啊_满分成就怎么获得

▲(图源:OpenAI)

请注意,每个UI元素都可以有任意子元素,这些子元素以递归方式引用根模式,这种灵活性是CFG方法所能提供的。

四、边界探索:结构化输出的部分限制

在享受结构化输出带来的高效与精准的同时,我们也需要清楚地认识到其存在的限制,以便更好地指导开发和应用。使用结构化输出时,开发者需注意以下限制:

结语:新增结构化输出,助力降本增效

 
打赏
 
更多>同类资讯

0相关评论
推荐热播视讯

推荐视频

    Copyright © 2017-2020  二手钢材网  版权所有  
    Powered By DESTOON 皖ICP备20008326号-2