← 最新论文
💻 computer science

PROBE: Benchmarking Code Generation in Large Language Models

该论文介绍了 PROBE,一个综合性的基准框架,用于从功能正确性、解法接近度以及代码质量三个维度评估大语言模型的代码生成能力,并揭示了尽管模型展现出了一定的潜力,但它们在处理复杂问题、资源匮乏的语言以及基础性错误方面仍经常面临困难。

原作者: Rodrigo Pato Nogueira, Marco Vieira, João R. Campos

发布于 2026-07-16
📖 1 分钟阅读☕ 轻松阅读

原作者: Rodrigo Pato Nogueira, Marco Vieira, João R. Campos

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在教一个机器人做饭。你不仅希望机器人能遵循食谱,还希望它能理解为什么这些食材要放在一起,能品尝出菜肴是否够咸,并确保它不会不小心把厨房给烧了。这就是软件工程领域中**大语言模型(LLMs)*的世界。把这些模型想象成超级聪明的机器人,它们几乎读过所有写过的“食谱”(代码)。它们可以看一眼像“做一个三明治”这样的描述,然后瞬间写出完成它的指令(代码)。但问题在于:仅仅因为机器人能够*写出指令,并不意味着做出来的三明治会好吃,或者这些指令不会告诉你用电锯代替菜刀。科学家们非常关心这一点,因为随着我们让这些机器人编写越来越多的软件,我们需要知道它们究竟是真正可靠,还是仅仅在凭感觉瞎猜并碰运气。

于是有了 PROBE,一个针对这些写代码机器人的全新、高度组织化的“味觉测试”。在此之前,大多数测试有点像问机器人:“你做好了三明治吗?”然后仅仅检查机器人是否回答了“是”。如果三明治烧焦了或者没放面包,测试也并不在意,只要机器人声称完成了就行。PROBE 背后的研究人员意识到这并不公平。他们构建了一个更严格、更全面的评估系统,检查三件事:代码是否真的有效(功能正确性)?机器人的食谱与完美人类食谱的接近程度如何(接近度)?以及代码是杂乱无章还是优雅精炼(代码质量)?

团队让六个不同的机器人——包括一些小型开源模型和一些大型专有模型——在五种不同的“语言”(Python、C++、Java、C 和 Rust)中接受考验。他们尝试了三种不同的交流方式:直接下达命令、先展示一个示例,或者让机器人尝试、失败,然后根据错误信息进行修复。

以下是他们的发现,其中既有令人兴奋的进展,也有一些非常有趣、非常像人类的错误。首先,规模更大的机器人表现通常更好,但即使是最聪明的模型也不完美。它们解决了大约 70% 的简单问题,但在处理难题时却显得力不从心。其次,先给机器人看一个示例(这种技术称为“上下文学习”)几乎没有任何帮助。这就像在要求厨师做三明治之前先给他看一张照片;他本来就知道怎么做,所以照片并没有改变什么。然而,让机器人尝试、失败,然后将错误信息反馈给它以进行修复(反馈整合)却是一个游戏规则的改变者。它帮助机器人修复了简单的错误,比如忘记导入工具,并将成功率提升了约 5%。

但真正的重点在于那些错误。机器人的失败方式往往出人意料地基础。它们试图用太多的砖块来盖房子(内存错误),忘记带门钥匙(缺失导入),或者陷入循环试图数清沙滩上的每一粒沙子(算法效率低下)。甚至有一个机器人尝试计算一个如此巨大的数字,以至于导致系统崩溃,就像计算器在除以零时死机一样。有趣的是,机器人在 Python 方面表现出色,但在 Rust 方面表现糟糕,而 Rust 是一种对安全性要求极高的语言,这表明它们读过的“Rust 食谱”还不够多。

最重要的是,研究人员发现,即使当机器人让代码“运行起来”时,其代码通常也比人类编写的代码更简单、更短。虽然这听起来不错,但有时这意味着机器人正在采取在现实世界中无法维持的捷径。这项研究得出结论:虽然这些 AI 工具正在变得越来越好,但它们仍然容易犯一些愚蠢且可以避免的错误。它们还没准备好独自留在厨房里;它们需要一位人类主厨在向世界呈上菜肴之前仔细检查一遍食谱。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →