作者 | Joab Jackson
编辑 | 言征
出品 | 51CTO技术栈(微信号:blog51cto)
ChatGPT输出可以更加可控了,OpenAI昨天发布了一款工具,该工具将以用户指定的精确格式返回查询结果。
OpenAI 首席执行官Sam Altman表示,这是使用 AI 技术的开发人员提出最多的请求。
1.OpenAI 今年的重点:DevTools
自 2022 年 11 月首次亮相以来,ChatGPT 服务已被无数应用程序开发人员用于代理驱动和其他应用程序。但是,虽然 ChatGPT 使用大量非结构化数据来提供其结果(通过 API 驱动的函数调用),但应用程序开发人员更希望将这些结果作为结构化数据提供,以便各自的应用程序可以更好地解析它们。
去年,OpenAI 扩展了其 API,以包含以JSON形式提供的结果。本周三,该公司更进一步,推出了一项名为“结构化输出”的新 API 功能,该功能将以开发人员在查询中指定的任何JSON 模式提供结果。
OpenAI技术人员Michelle Pokrass在周二发布的一篇博客文章中写道:“开发人员长期以来一直在通过开源工具、提示和反复重试请求来解决 LLM 的局限性,以确保模型输出符合与其系统互操作所需的格式。 ”
“结构化输出通过约束 OpenAI 模型以匹配开发人员提供的模式并训练我们的模型以更好地理解复杂模式来解决此问题。”
2.结构化输出如何提高 LLM质量
结构化输出与普通用户提示生成的输出不同,因为它们在所能提供的信息方面受到限制,这种技术称为“约束采样”或“约束解码”。
Pokrass 解释说:“为了强制有效输出,我们将模型限制为仅根据提供的模式有效的标记,而不是所有可用的标记。”
对于 ChatGPT 来说,采用这一模式的这一额外步骤可以提高其准确性。
OpenAI 开发人员在测试中发现,对复杂JSON模式的评估中,带有结构化输出的新模型gpt-4o-2024-08-06得分为100%。相比之下,gpt-4-0613的得分不到40%。
ChgatGPT 能够 100% 正确地填充预定义模式,但通过简单提示只能提供 85% 的正确响应。
图片
OpenAI 图表比较了针对 JSON 模式生成的 ChatGPT 响应与从命令提示符生成的响应的可靠性。
3.如何产生结构化输出
那么如何操做呢?
现在,当应用程序提交请求时,开发人员会通过json_schema提供 JSON 模式,这是response_format参数的一个新选项。同时,在函数定义中,必须将strict值设置为“true”。然后,模型的输出将使其答案与模式最佳匹配(这既适用于 AI 工具,也适用于直接用户查询)。
图片
值得注意的是,响应结果仍将遵守 OpenAI 的安全要求(阻止潜在有害内容),并将对不会回答的问题返回拒绝字符串值。此外还有其他限制:它仅支持JSON 模式的子集。它无法防止模型定义中的错误,并且由于 ChatGPT 会整理开发人员的模式,因此第一次响应会有额外的延迟。
OpenAI的 Node.js和Python软件开发工具包都已更新了最新的response_format参数。
当然,最大的可能用例是将非结构化数据格式化为结构化数据,以便关系数据库系统可以提取和分析它。这对于在办公文档中存储大量信息的组织来说一直是一个挑战。
但波克拉斯详细阐述了该技术的一些可能的高级用途,包括根据用户输入动态创建用户界面并在没有支持材料的情况下提供单一答案。
机器学习研究员Elvis Saravia在 X 上指出,这是一个“很棒的功能,非常有必要” ,并在Youtube制作了一个关于如何使用结构化输出的教程,各位不防自行查阅。
图片
参考链接:https://thenewstack.io/openais-chatgpt-now-formats-output-to-developer-queries/