QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:148122

评论 1 条评论

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

布隆过滤器的设计之美,后端程序员一定要好好体会

程序员小毕

程序员 数据结构 面试 后端 布隆过滤器

更专业、安全的过等保,华为云等保合规解决方案值得选择

IT科技苏辞

测试需要写测试用例吗?

老张

软件测试 质量保障 测试用例

CNStack 云服务&云组件:打造丰富的云原生技术中台生态

阿里巴巴云原生

阿里云 云原生 CNStack

如果有一天当你的Redis 内存满了,该怎么办?

会踢球的程序源

Java redis 后端

一天吃透操作系统八股文

程序员大彬

面试 操作系统

助力企业网络安全建设,华为云等保合规解决方案值得拥有

路过的憨憨

机器视觉公司,在玩一局玩不起的游戏

脑极体

CV

多线程&高并发(全网最新:面试题+导图+笔记)面试手稳心不慌

Java你猿哥

Java 多线程 面试题 高并发 多线程与高并发

云效AppStack--扫雷亲测

六月的雨在InfoQ

云效 AppStack 云效流水线 Flow 三周年连更

劲爆!阿里巴巴面试参考指南(嵩山版)开源,程序员面试必刷

做梦都在改BUG

Java 程序员 面试

阿里巴巴灵魂一问:说说触发HashMap死循环根因

会踢球的程序源

hashmap Java1

🔥🔥🔥热乎的前端面试题(昨天)

沉浸式趣谈

JavaScript 面试 Vue 前端面试

termius使用ssh教程 【XShell的神器Termius】

互联网搬砖工作者

华为云等保方案,轻松满足企业等保合规要求

IT科技苏辞

2023最NB的JVM基础到调优笔记,光图文就超清晰,吃透阿里P6小case

Java你猿哥

Java JVM Java虚拟机 jvm调优

工赋开发者社区 | MES/MOM数据采集系统需求分析和总体设计

工赋开发者社区

Golang负载均衡器Balancer的源码解读

骑牛上青山

Go 负载均衡

fabric.js开发图片编辑器可以实现哪些功能?多图

秦少卫

h5编辑器 FabricJS Fabric.js 海报编辑器 图片编辑

【Linux】之【网络】相关的命令及解析[ethtool、nload、nethogs、iftop、iptraf、ifstat]

A-刘晨阳

Linux 网络 三周年连更

在华为云构建多云跨云的容灾系统,真的很香

路过的憨憨

限时开源!阿里京东架构师出品亿级高并发系统设计手册

会踢球的程序源

Java 架构 后端 java架构师

WebGPU 令人兴奋的 Web 发展

devpoint

WebGL webgpu #WebGPU 三周年连更

2023年超全前端面试题-背完稳稳拿offer(欢迎补充)

肥晨

三周年连更

分布式事务的21种武器 - 1

俞凡

架构

Amazon 中国区配置 PingIdentity 身份集成实现 Redshift 数据库群集单点登录

亚马逊云科技 (Amazon Web Services)

【Java技术专题】「盲点追踪」突破知识盲点分析Java安全管理器(SecurityManager)

码界西柚

Java 安全管理器 SecurityManager

从初学者角度聊一聊socket到底是什么?

会踢球的程序源

Java 后端 socket

让算力普惠、释放技术红利,阿里云让开发者成为创新主体

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

Mac怎么创建txt文件?如何设置新建txt的快捷键?

互联网搬砖工作者

2023移动云大会重磅官宣,云改“新三年”强势开局引期待?

ToB行业头条

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