">

OpenAI 公开 MultiLangBench:用 20 种语言从零写 SQLite,顺带考了 COBOL 迁移

OpenAI 于 2026-10-19 发布《Advancing coding in low-resource programming languages》,同时公开 MultiLangBench 评测。它的题目是让模型用 20 种编程语言从零构建一个 SQLite 兼容的数据库引擎,通过「交换数据库文件、用参考实现校验」的办法让同一套测试跨语言复用。文中另一项评测是把 COBOL 程序迁移到 C++、Java、Kotlin、Python 或 Rust,并要求可观察输出逐字节一致。评测配置与测试套件已在 GitHub 开源。

这次发布的是什么

OpenAI 在 2026-10-19 发布了《Advancing coding in low-resource programming languages》,页面标注的日期是 October 19, 2026。发布的内容有两部分:一份关于低资源编程语言编码能力的进展说明,以及随它公开的评测 MultiLangBench。

所谓低资源编程语言,指的是相比 Python、JavaScript 这类拥有海量可学习代码与资料的语言,公开语料明显稀少的那些——文中点名的是 COBOL、Fortran、Visual Basic、OCaml。这类语言的共同处境是:语料少,但支撑着不少关键系统。

MultiLangBench 的题目设计是这次最值得看的部分。它要求模型用指定的语言从零构建一个与 SQLite 兼容的数据库引擎。模型需要自己组织代码库、管理状态、处理错误,并在不破坏已有功能的前提下添加新功能。

难点在于:怎么让二十种语言共用同一套测试?MultiLangBench 的做法是以数据库文件作为共享接口。候选程序接收一个初始数据库和一组 SQL 查询,输出修改后的数据库;评测方再用 SQLite 的参考实现去检查结果是否符合预期。因为接口是文件而不是某种语言的特定调用方式,同一套测试就能原样复用到二十种语言上。

覆盖的二十种语言是:C、C#、C++、COBOL、Common Lisp、Fortran、Go、Java、JavaScript、Lean、OCaml、PHP、PowerShell、Python、Ruby、Rust、Scala、Swift、Visual Basic、Zig。

文里的第二项评测是 COBOL 迁移:把 COBOL 程序迁到 C++、Java、Kotlin、Python 或 Rust,同时保留程序原有行为。判定方式是用隐藏测试,并要求可观察输出达到逐字节一致——只有全部测试通过才算迁移成功。

文中还举了一个能说明迁移难度的例子:COBOL 的定点算术会丢弃多余的小数位,除非显式请求舍入。如果重写时想当然地做了四舍五入,程序不会报错,但会算出不同的财务结果。

可用性与限制

  • 获取方式:通过 OpenAI 的接口使用其最新模型处理编码任务;文中提到的模型名包括 GPT-6 Astra、GPT-6 Luna 与 GPT-6.1 Sol,并以 GPT-5.6 Sol 作为对照基线。具体可用模型与调用方式以官方接口文档为准。
  • 评测开源:MultiLangBench 的评测配置与测试套件已在 GitHub 公开,地址为 github.com/openai/MultiLangBench,可以查看评测内容与各语言的结果。
  • 生产用途的硬限制:官方原文写明,把这类迁移能力用于生产软件仍需要专家评审,并需针对系统的业务规则与依赖项做测试。这一条应当被当作前置条件而不是免责声明。
  • 结果依赖推理强度:文中数据是在特定的推理强度设置下取得的,同一模型在低推理强度与高推理强度下的表现并不相同。要复现就得对齐设置。
  • 语言间差异仍然存在:官方自己指出,二十种语言里 COBOL 是明显更难的一种。把「平均意义上的提升」直接套到某一种具体语言上是不成立的。
  • 本文不写任何通过率百分比、每样本成本金额与降本幅度——这些是官方自测口径,换到你的代码库与你的任务上未必成立。
  • 评测本身也在演进:既然配置与测试套件已开源,题目与判定方式后续可能调整,引用时以仓库当期内容为准。

主要功能

  • MultiLangBench:覆盖 20 种编程语言的「从零构建 SQLite 兼容数据库引擎」评测
  • 以数据库文件作为跨语言共享接口,让同一套测试在 20 种语言上复用
  • 考察的能力包括组织代码库、管理状态、处理错误、在不破坏既有功能的前提下添加新功能
  • COBOL 迁移评测:迁往 C++、Java、Kotlin、Python 或 Rust 并保留原有行为
  • 迁移判定采用隐藏测试,要求可观察输出逐字节一致
  • 涉及 COBOL 特有的语言行为,例如定点算术默认丢弃多余小数位
  • 评测配置与测试套件已在 GitHub 开源
  • 官方在文中说明结果随推理强度设置变化

技术原理

先看「为什么要用数据库文件当接口」。跨语言评测的老问题是:要给二十种语言各写一套断言,工作量本身就压过了评测本身,而且各套断言的严苛程度不可能完全一致,横向比较就失去意义。MultiLangBench 的解法是把被测程序当成一个黑盒转换器:输入是一个数据库文件和一组 SQL 查询,输出是修改后的数据库文件。判定时不去读候选程序的源码,而是拿 SQLite 的参考实现对同一个查询跑一遍,比对两边的库文件与结果是否一致。

这个设计的巧妙之处在于它把「语言差异」关在了盒子里面。无论你用 Rust 还是 Common Lisp 实现,对评测方来说都只是一个读文件、写文件的程序。于是同一套 SQL 用例可以原样复跑二十次,比较是公平的;而题目本身又足够难——实现一个数据库引擎要处理存储、索引、事务语义、错误分支,远不是写个函数能糊弄过去的。

再看「为什么逐字节一致」这个标准对 COBOL 迁移特别关键。代码迁移最危险的失败模式不是报错,而是静默地算错:程序照常跑、照常输出,只是数字不对。文中举的定点算术例子正是这类情况的典型——COBOL 默认丢弃多余小数位,如果重写时顺手做了四舍五入,程序不会崩,但每笔金额都可能差一点,累积到财务口径上就是另一回事。所以判定标准定在「可观察输出逐字节一致」,等于把「看起来对」这一类结果排除在成功之外。

第三点是隐藏测试的作用。如果测试随题目一起给出,模型可以针对测试写实现;隐藏测试要求模型真正理解原程序的行为,而不是拟合一组已知输入输出。这也解释了为什么官方强调迁移结果需要专家评审——通过了隐藏测试说明行为被保留了下来,但业务规则与依赖项是否也被正确处理,仍然需要人来确认。

最后说说这类评测对使用方的意义。它给出的不是「某个模型好不好」的结论,而是一张按语言细分的能力地图。你在选模型做 COBOL 或 Fortran 相关的工作时,看平均意义的表现没有意义,要看的正是这种分语言的细分结果——这类细分数据请以官方页面与开源仓库的当期内容为准。

实际体验

这篇不提供第一人称实测,只给出读者可以自己复现的验证步骤。

第一步,先把评测仓库拉下来读一遍题目定义。重点看两件事:一是它到底怎么判定「与 SQLite 兼容」,二是隐藏测试的组织方式。读完你会对「模型在这个评测里拿到什么成绩意味着什么」有一个自己的判断,而不是只看一个数字。

第二步,挑你真正关心的那一门语言,单独看它的细分结果,不要看平均值。如果你的工作负载集中在某一两门低资源语言上,平均表现会掩盖你真正需要知道的信息。

第三步,设计一个小规模的自测。从你的代码库里挑一个规模可控、依赖清晰的模块,用你准备采用的模型跑一遍改写或迁移,再和官方评测的题目规模做对比——评测里的「从零构建一个引擎」是几十到几百行量级的自包含任务,而真实仓库往往有历史包袱与外部依赖,两者的难度不在同一维度。

第四步,专门验一次数值语义。挑一段涉及定点或浮点运算的旧代码,让模型迁到你选定的目标语言,然后逐笔比对两边的输出,不要只看能不能跑通。文中举的定点算术例子就是这一类:能跑通和算得对是两件事。

第五步,把推理强度当作一个变量而不是常量。官方数据是在特定强度下取得的;你在自己的任务上跑一次低强度和高强度的对比,看质量差异是否值得多付的那部分成本。这一步的结论只对你的任务有效,但它是你真正需要的那个结论。

第六步,把专家评审排进流程。既然官方自己写明生产使用仍需专家评审与针对业务规则的测试,就不要把评测结果当成可以省掉这一步的理由——尤其是涉及财务、计费、清算这类差一点就出事的场景。

项目地址与获取方式

官方发布页:https://openai.com/index/low-resource-programming-languages

评测开源仓库:https://github.com/openai/MultiLangBench

模型调用入口与接口文档请以官方平台当期页面为准。

适合谁用

  • 维护 COBOL、Fortran、Visual Basic 等老旧语言系统、正在评估迁移可行性的团队
  • 需要判断「某个模型在某门具体语言上到底行不行」的技术决策者
  • 做代码迁移工具、想复用一套跨语言测试设计的产品与工程人员
  • 关心模型在非主流语言上能力边界的研究与教学场景
  • 不必用的情况:只做主流语言的新项目开发——这个评测量身定做的场景是低资源语言与遗留系统迁移,对日常新写代码参考价值有限

常见问题

为什么题目要选「从零写一个数据库引擎」?

因为它同时覆盖了多种能力:组织代码库、管理状态、处理错误、在不破坏已有功能的前提下添加新功能,而且规模是自包含的——不像真实业务仓库那样牵扯外部依赖与历史包袱。这类题目能在可控规模内逼出真实的工程能力。

二十种语言怎么做到公平比较?

靠把数据库文件当作共享接口。候选程序只做一件事:读入一个数据库文件和一组 SQL 查询,写出修改后的数据库。评测方用 SQLite 参考实现比对结果,不去读候选程序的源码,所以同一套用例可以在二十种语言上原样复用。

「逐字节一致」是不是过于苛刻?

对代码迁移场景并不苛刻。迁移最危险的失败是程序照常运行但算错了数——文中举的 COBOL 定点算术例子就是典型。把标准定在可观察输出逐字节一致,等于把「看起来对」排除在成功之外。当然,通过测试只是必要条件,业务规则与依赖项仍需专家评审。

我能直接用这个评测来给模型排个高低吗?

可以拿来参考,但要小心两点:一是数据是官方在特定推理强度设置下取得的,换设置结果会变;二是看分语言细分,不要看平均值——官方自己指出二十种语言里有明显更难的一门。至于具体数值,请以官方页面与开源仓库的当期内容为准。

评测开源了,那我是不是可以自己改题目?

配置与测试套件都已在 GitHub 公开,可以按自己的场景调整。但要注意,改了题目或判定方式之后得到的分数,与官方公布的结果不再可比——引用时务必说明这一点。

相关工具与内容

Related
快讯 1 小时前

Cloudflare 发布 Clairic:不生成文本、只给带类型值的「提取模型」

Cloudflare 于 2026-10-19 公布 Clairic,这是它提出的 System One 模型家族里的第一个「提取模型」。它不逐字生成文本,而是走单次并行前向传播,直接给出带类型的值:从输入里摘出来的原文片段、算出来的数字与日期、有证据支撑的估计分布、以及对时间序列的预测。每个答案都附带置信度与「这个值不在输入里」的概率。目前以预览形式托管在 Workers AI 上,官方表示打算稍后发布开放权重。

前沿快讯 4 阅读
快讯 1 小时前

Amazon Bedrock 上的 Claude 支持结构化输出:约束解码强制 JSON Schema,工具入参可严格校验

AWS 于 2026-10-19 宣布 Amazon Bedrock 上的全部 Anthropic Claude 模型支持结构化输出,已正式可用。它在生成过程中用约束解码强制 JSON Schema,而不是生成后再校验,因此每个响应都是合法 JSON、字段类型被强制、必填字段始终存在。除响应结构外,工具调用也可开启严格模式校验入参。官方同时列出了一批「接受但不强制」的 Schema 关键字,以及首次调用要编译语法制品这一性能细节。

前沿快讯 2 阅读
快讯 1 小时前

MiniMax M3.1 Flash 上架 Vercel AI Gateway:1M 上下文的开放权重模型,限时免费到 10 月 22 日

Vercel 于 2026-10-19 把 MiniMax M3.1 Flash 加进 AI Gateway,并给出到 10 月 22 日为止的免费期。官方描述它是面向编码与智能体工作的开放权重多模态模型,上下文窗口为 1M token。调用名是 minimax/minimax-m3.1-flash,可通过四种接口调用,也能接到已接入网关的编码智能体上。需要注意的是免费档只在请求由 MiniMax 自己处理时生效,需要用供应方排序把它排到前面。

前沿快讯 2 阅读

继续阅读:Amazon Bedrock 上的 Claude 支持结构化输出:约束解码强制 JSON Schema,工具入参可严格校验 · MiniMax M3.1 Flash 上架 Vercel AI Gateway:1M 上下文的开放权重模型,限时免费到 10 月 22 日

关于本文:本站文章由编辑部独立撰写,评测口径与免责说明见关于我们。想继续找工具,可从分类导航按场景浏览,或回首页搜索。

链接已复制