编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

OpenAI官宣:ChatGPT API支持JSON结构化输出,准确率100%

wxchong 2024-09-16 07:16:17 开源技术 44 ℃ 0 评论

8月6日,OpenAI宣布,ChatGPT API现已支持JSON结构化输出,解决了开发者长久以来的困扰。

这一新功能将确保模型生成的输出与JSON schema相匹配,避免了以往输出不一致的问题。

JSON作为文件和数据交换的行业标准,易于读取和解析,但LLM往往难以生成完全遵循指令的JSON输出。

而这次新功能的上线大大简化了开发者的工作流程,节省了大量时间和精力。开发者不再需要借助多种工具来生成理想的JSON结果。

Sam Altman也称这一发布“应广大用户的要求”。

100%的一致性

OpenAI通过引入JSON结构化输出,轻松确保模式一致性。

开发者只需定义一个JSON Schema,AI便会按照指令输出数据,不再“任性”。

最新版模型“GPT-4o-2024-08-06”在JSON模式评估中,得分100%。而在去年6月的版本得分不到40%。

新功能不仅提升了AI的听话程度,还大大提高了输出内容的可靠性和一致性。

现在,OpenAI在API中扩展了这一功能,确保模型输出完全符合开发者定义的JSON Schema。

这一功能使得开发人员能够构建强大的助手,通过函数调用获取数据、回答问题、提取结构化数据,甚至构建多步骤的智能工作流。

技术原理

OpenAI采用双管齐下的方法,提高模型输出与JSON Schema的匹配度。

最新模型gpt-4o-2024-08-06经过训练,更好理解复杂Schema,生成匹配输出。在基准测试中,达到了93%的准确性。

为了实现100%的可靠性,OpenAI引入了约束解码技术,确保输出token符合Schema。

约束解码通过将JSON Schema转换为上下文无关文法(CFG),动态约束模型生成的输出token。

CFG方法在表达复杂Schema时表现出色,特别是支持递归模式的JSON Schema。

相比之下,有限状态机(FSM)或正则表达式方法在动态更新有效token时能力有限,难以处理复杂嵌套或递归数据结构。

CFG方法不仅使生成的输出更准确,还减少了不必要的延迟,首次请求新模式可能有额外处理时间,但随后的请求通过缓存机制实现快速响应。

OpenAI提供的JSON Schema通过CFG方法高效访问预处理组件,使得生成的输出更准确,减少延迟。

此外,gpt-4o-2024-08-06版本在成本上更具优势,输入端节省50%成本,输出端节省33%成本。输入价格为2.5美元/100万token,输出价格为10美元/100万token。

支持函数调用的所有模型均可实现结构化输出,包括最新的GPT-4o和GPT-4o-mini模型,兼容视觉输入。

这一技术提升使开发者能够更稳定地构建应用,减少错误,提高效率,降低成本

如何使用结构化输出

OpenAI在最新更新中引入了结构化输出,确保模型生成内容与开发者提供的JSON模式完全匹配。

函数调用

开发者可以通过在函数定义中设置`strict: true`来实现结构化输出。此功能适用于所有支持工具的型号,包括gpt-4-0613和gpt-3.5-turbo-0613。

启用后,模型输出将与工具定义匹配,提高了输出的可靠性和一致性。

response_format参数新选项

开发者可以通过`response_format`的新选项`json_schema`提供JSON模式。当模型不调用工具,而是以结构化方式响应用户时,这一功能非常有用。

此功能适用于最新的GPT-4o型号,如gpt-4o-2024-08-06和gpt-4o-mini-2024-07-18。将`response_format`设置为`strict: true`时,模型输出将与提供的模式匹配。

原生SDK支持

OpenAI的Python和Node SDK已更新,原生支持结构化输出。为工具提供架构或响应格式就像提供Pydantic或Zod对象一样简单。

SDK能将数据类型转换为支持的JSON模式,自动将JSON响应反序列化为类型化数据结构,以及解析拒绝字符串值,帮助开发者识别模型拒绝不安全请求的情况。

安全输出

新模式遵循现有安全规则,引入了拒绝字符串值,帮助开发者识别模型拒绝不安全请求的情况。

多种用例

结构化输出可以用于动态生成用户界面、分离最终答案与推理过程、从非结构化数据中提取结构化数据等多种用例。

LLM的输出一致性是大模型能否进入生产应用,主流工程应用的关键因素之一。一旦输出的格式、内容可控且一致,就可以将输出结果直接应用在下一步工作流中,无需人工介入。是程序接入大模型的必要条件之一。

如果你觉得这篇文章对你有所帮助,欢迎点赞、收藏以及转发分享。同时,请关注我,以获取更多关于人工智能的最新资讯和见解!

参考:

https://openai.com/index/introducing-structured-outputs-in-the-api/

https://x.com/sama/status/1820881534909300769

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表