网站首页 > 开源技术 正文
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
猜你喜欢
- 2024-09-16 比较一下XML, JSON和YAML(xml与json区别)
- 2024-09-16 JSON的概念及应用场景举例(json的概念及应用场景举例分析)
- 2024-09-16 Java实现在线SQL编程(完整版)(java代码中怎样写sql语句)
- 2024-09-16 RESTful API (Application Programming Interface)
- 2024-09-16 API低代码开发平台实践(低代码开发工具)
- 2024-09-16 JSON 格式的接口测试流程【Eolink Apikit】
- 2024-09-16 推荐腾讯开源的零代码、全功能、强安全API架构
- 2024-09-16 下个十年高性能 JSON 库来了:fastjson2!
- 2024-09-16 高并发之API接口,分布式,防刷限流,如何做?
- 2024-09-16 可以让你零代码快速开发REST API的几个开源项目
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)