写点什么

7.5K 星开源项目“白做了”?OpenAI 发布开发者最期待的头号功能,让多个优秀开源项目瞬间凉了!

  • 2024-08-09
    北京
  • 本文字数:2117 字

    阅读完需:约 7 分钟

大小:1.01M时长:05:51
7.5K星开源项目“白做了”?OpenAI发布开发者最期待的头号功能,让多个优秀开源项目瞬间凉了!

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

 

JavaScript 对象表示法(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

2024-08-09 11:148046

评论 1 条评论

发布
用户头像
OpenAI的新功能对开发者来说是一个重大进步,尽管目前还处于beta测试阶段,存在一些技术限制和挑战。这项功能可能会影响一些开源项目的价值,但长远来看,它将促进大模型更有效地集成到软件开发中。
2024-08-17 11:48 · 广东
回复
没有更多了

2023年大数据平台数据安全厂商汇总

行云管家

大数据 数据安全 大数据平台

人工智能新范式,创新生产力崛起

百度开发者中心

人工智能 数据分析、 ChatGPT 文心一言

从数据出发,构建可信赖的生成式AI应用

百度开发者中心

人工智能 数据分析 千帆大模型平台

杰哥教你面试之一百问系列:java中高级多线程concurrent的使用

程序那些事

Java 多线程 并发 程序那些事 面试秘籍

Eplan是电气设计软件吗?Eplan介绍-Eplan官网

智造软件

EPLAN 电气辅助设计 电气设计

提高生产力,创新工作方式

百度开发者中心

人工智能 ChatGPT 生成式AI 文心一言

mac端日程和任务管理 Things3 免激活中文

mac大玩家j

任务管理 Mac软件 任务管理器

MatrixOne WAL设计解析

MatrixOrigin

分布式数据库 云原生数据库 MatrixOrigin MatrixOne HTAP数据库

GaussDB技术解读丨数据库迁移创新实践

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号9月PK榜

用友iuap数据中台,让数据成为企业价值资产,驱动业务持续创新

用友BIP

2023全球商业创新大会 升级数智底座

聊聊Kafka的生产者消费者确认机制

高端章鱼哥

kafka

云堡垒机收费模式有哪些?哪款更灵活?

行云管家

云计算 网络安全 堡垒机 云堡垒机

EasyPhoto:基于 SD WebUI 的艺术照生成插件来啦!

阿里云大数据AI技术

阿里云 AI

一体化打通销售到项目交付 项目型营销更在行

用友BIP

项目云 数智营销

创新未来的智能数据生成

百度开发者中心

人工智能 ChatGPT 生成式AI

Mac电脑油猴插件 Tampermonkey激活中文版

胖墩儿不胖y

Mac软件 油猴插件 脚本管理

7.5K星开源项目“白做了”?OpenAI发布开发者最期待的头号功能,让多个优秀开源项目瞬间凉了!_生成式 AI_核子可乐_InfoQ精选文章