7.5K星开源项目“白做了”?OpenAI发布开发者最期待的头号功能,让多个优秀开源项目瞬间凉了!
创始人
2024-08-11 11:41:59
0

编译 | 核子可乐、Tina

应广大用户需求,OpenAI 终于发布重量级新功能。

Java 对象表示法(JSON)的文件与数据交换格式已然成为行业标准,因为其既适合人类阅读,又可轻松被机器解析处理。

然而,众所周知大语言模型(LLM)在 JSON 这边出了不少问题——最重要的就是经常产生幻觉,即生成仅部分遵循指令的奇怪响应,或者无法完全解析 JSON 内容。面对此类情况,开发者往往需要借助开源工具、多种不同提示词组合或者重复请求等方法以保证输出的互操作性。

如今,OpenAI 已经通过在 API 中发布其结构化输出来帮助缓解上述问题。此项功能已经于今天正式发布,旨在确保模型生成的输出与 JSON 模式相匹配。这些模式之所以如此重要,就是因为其描述了给定 JSON 文档中的内容、结构、数据类型以及预期约束。

OpenAI 表示,这也是开发者们长期呼吁开放的头号功能,允许在各类应用程序之间保持一致性。OpenAI 公司 CEO Sam Altman 也在 X 上发帖表示,此次发布“迎合了广大用户的迫切需求”。

该公司还强调,其最新 GPT-4o 模型的结构化输出获得了“100% 的完美”评估得分。

从开源项目中汲取灵感

JSON 是一种用于数据存储和交换的文本类格式,凭借着突出的简单性、灵活性以及与多种编程语言的兼容性而在开发者中成为最具人气的数据格式之一。OpenAI 在去年的 DevDay 上就为其模型发布了 JSON 模式,迅速满足了开发者提出的诉求。

借助 API 中的结构化输出,开发人员可以约束 OpenAI 模型以匹配数据模式。OpenAI 方面表示,这项功能还使得模型能够更好地理解较为复杂的数据模式。

该公司在博文中写道,“结构化输出代表着 JSON 模式的演变。虽然两者都能保证生成有效的 JSON,但只有结构化输出能够确保遵循数据模式。”也就是说,开发人员“不必担心模型会遗漏掉必要的键,或者以幻觉的形式生成无效的枚举值。”(枚举值是一种在语言当中命名常量的过程,旨在改善代码的可读性和可维护性。)

开发人员可以要求结构化输出以分步方式生成答案,用以引导输出按照预期路线前进。根据 OpenAI 的介绍,开发人员无需验证或者重试格式不正确的响应,该功能还支持更简单的提示词,同时提供明确的拒绝表述。

该公司还在博文中强调,“安全是 OpenAI 的首要任务——新的结构化输出功能也将遵循我们的现有安全政策,且依然允许模型拒绝不安全的请求。”

结构化输出适用于 GPT-4o-mini、GPT-4o 以及这些模型的微调版本,同时可用于 Chat Completions API、Assistant API 和 Batch API,而且兼容视觉输入。

OpenAI 方面强调,这项新功能“是从开源社区的优秀工作中汲取到的灵感,包括 outlines、jsonformer、instructor、guidance 以及 lark 库。”

OpenAI 提到的这些开源项目基本都是专门做大模型结构化输出的,其中 outlines 目前有 7.5k 星,作者在 GitHub 页面称已经“创办了一家公司,不断突破结构化生成的界限。”另外,jsonformer 有 4.1k 星、instructor 有 7k 星......

OpenAI 在其 API 中引入原生结构化输出支持,通过原生实现此项功能,OpenAI 可以在生成过程中严格控制大模型,从而保证其 100% 符合所指定的模式。以往,用户必须使用开放模式并对生成过程加以干预才能达成这个目标。值得注意的是,Cohere 最近同样将结构化生成引入其 API。

此前,虽然很多人还没有意识到这就是使用大模型的最佳技术,但他们在日常应用时已经在不知不觉中依赖相应的社区库。

因此有网友认为这些社区项目基本上可能等于“白做了”,“理解大模型的能力边界真的很重要,不然很有可能做很多无用功。”

但同时需要提醒各位,目前 OpenAI 的这套 beta 测试版恐怕满足不了大多数实际应用需求,理由如下:

  • 生成首个 token 的速度太太太慢了。由于 OpenAI 需要将模式编译为语法以用于生成,因此初始开销导致每次调用都会耗费大量时间。OpenAI 后续其实也可以通过更快的编译和对重复使用的模式加以缓存来克服这个问题,但至少目前这项功能在很大程度上还不可用。
  • 其 API 能够接受的 JSON 模式仍然有限。OpenAI 声称他们专注于核心用例,而忽略掉了不必要的“长尾”附加功能。有网友尝试把现有代码迁移到这种新格式时,发现很多模式都不被接受。至少大家还需要调整习惯,才能配合 JSON 子集正常使用具备此项功能。

此次发布的 Python SDK 实际上并不包含文档当中宣传的所有变更。具体来讲,其目前还不支持将 Pydantic BaseModel 子类定义为模式并进行传递。相信未来的版本将有所改进。但这再次提醒我们,OpenAI 发布的仍然只是一项 beta 测试版功能。

那我们到底该怎么办?有开发者认为 Instructor + Pydantic 的组合仍然是在 OpenAI 乃至其他大模型方案之上实现结构化输出的最简单方法。虽然无法保证生成结果的合规性(如果无法控制大模型本身,就不可能实现这种合规性),但其会使用响应模型的定义来验证结果,甚至能够在遇到验证错误时根据提示信息进行重试。

很高兴看到 OpenAI 能意识到结构化输出的强大功能,并将其纳入 API 当中,相信在未来一段时间内,这也将成为软件开发者们将大模型集成至自有代码中的主要方式。只是从前期探索到最终落地,中间恐怕还需要再观察一段时间。

参考链接

https://venturebeat.com/business/transform-2024-dont-miss-the-6th-annual-women-in-ai-breakfast-women-in-ai-awards/

https://everything.intellectronica.net/p/structured-outputs-big-time

剥离几百万行代码,复制核心算法去美国?TikTok 最新回应来了

史上最荒谬 BUG 诞生了!零测试、直接将正则表达式扔进内核,CrowdStrike 卖惨不成反被喷

程序员就业市场将彻底挤爆!一个年级 60 个班,太原理工带头,十几所高校疯狂扩招软件工程!

“列数已达上限”:史上最烂代码库的“绝命”一击

相关内容

因为微软,OpenAI收购...
OpenAI收购AI编程助手Windsurf的谈判因微软知识产权担...
2025-07-12 13:14:23
看了AI生成的ASMR吃播...
前段时间,一条用 AI 生成的切水果 ASMR 短视频,在洋抖上爆...
2025-07-12 13:13:44
上海AI实验室团队:如何优...
这项由上海AI实验室和复?dan大学联合开展的突破性研究发表于20...
2025-07-12 13:13:26
月之暗面Kimi K2发布...
月之暗面今天宣布,正式发布Kimi K2模型,并同步开源。Kimi...
2025-07-12 06:12:21
可川科技等成立新公司,含A...
人民财讯7月11日电,企查查APP显示,近日,苏州汉汽可川光子科技...
2025-07-11 16:43:13
开启“零门槛”AI视频创作...
随着移动端的普及和数字化技术的成熟,短视频创作内容不仅逐渐向各行各...
2025-07-11 14:12:34

热门资讯

原创 2... #春日生活好物种草季#近年来,笔记本电脑市场迎来技术爆发期,尤其在手机厂商跨界入局后,轻薄本在性能、...
AMD锐龙AI 9 HX 37... 2024年6月3日,AMD正式发布全新的锐龙AI 300系列处理器。该系列处理器一经发布就引发大家的...
骁龙本这么猛?联想YOGA A... 在人人都是自媒体的时代,一部手机可以解决出镜拍摄问题,而商务出差、大量码字、图像处理等需求用笔记本则...
5个AI模特生成软件推荐 当前AI模特生成软件市场提供了多样化的解决方案,以下是几款备受推崇的工具: 触站AI:强烈推荐!...
2023年CentOS与Ubu... CentOS与Ubuntu的市场格局与技术特性探讨 在服务器操作系统领域,CentOS与Ubuntu...
苹果macOS 15.1:允许... 苹果公司在其最新的macOS 15.1版本中,推出了一项引人注目的新功能——允许用户将Mac App...
原创 苹... 前言 IQUNIX在做好看的桌面产品上,一直都给我留下非常深刻的印象。而且早期和苹果产品的设计风格...
原创 华... 想在竞争残酷的市场中发力,必须要带来一些激进的卖点,但是随着功能特性的提升,硬件也必须要进行给力才可...
原创 华... 在2024年这个被誉为"AI元年"的关键时刻,随着生成式AI的流行,各家手机厂商都在积极备战AI手机...