← 最新论文
💻 computer science

From Discussion to Execution: Replicating Buggy and Correct Data Science Code

本文介绍了 Reprodgen,这是一个基于大语言模型(LLM)的框架,它通过通过结构化意图表示和评审反馈迭代地优化代码,从而从非结构化的问答论坛讨论中自动重构出可执行的有缺陷及修复后的数据科学代码对,并最终在一个涵盖七个主要数据科学库的新基准测试上进行了验证。

原作者: Ragib Shahariar Ayon, Mohammad Wardat, Shibbir Ahmed

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

原作者: Ragib Shahariar Ayon, Mohammad Wardat, Shibbir Ahmed

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

想象一下,你正试图破解一个谜团,但你仅有的线索只是几张随手涂鸦在餐巾纸上的笔记,以及一位朋友讲述的一个模糊故事。你知道有人犯了一个错误,你也知道他们最终修复了它,但你没有原始的故障机器,没有他们使用的特定工具,甚至没有用来构建复制品的正确原料。这就是现代数据科学的日常挣扎。科学家和程序员经常在像 Stack Overflow 这样的公共论坛上分享他们的难题和解决方案,但这些讨论非常混乱。它们充满了“如果……会怎样”的假设和缺失的细节,使得计算机几乎不可能自动重现那个精确的故障代码和完美的修复方案。这就像是尝试根据一份只说“加入一些面粉”却没告诉你加多少、也没说用什么烤箱的食谱来烤蛋糕。

为了理解解决方案,我们首先需要知道在这个世界里什么是“漏洞”(bug)。把一个数据科学程序想象成一道数字菜肴的复杂食谱。漏洞就是指令中的一个小错误——也许是你忘了预热烤箱,或者你把糖和盐搞混了。当这种情况发生时,菜肴的味道就会出错。通常,需要人类品尝出错误,找出哪里出了问题,然后重写食谱。但如果我们能教会一个超级聪明的机器人,让它观察那些凌乱的笔记,猜出缺失的原料,故意做出那道出错的菜肴,然后向我们展示究竟该如何修复它呢?这正是这篇论文要解决的大问题:我们能否建立一个系统,将关于编码错误的模糊、非正式的故事,转化为我们可以实际运行并测试的真实、可工作的代码?

欢迎来到 Reprodgen,由德州州立大学和奥克兰大学的研究人员创造的一个全新的数字侦探。把 Reprodgen 想象成一对在高级厨房里协同工作的机器人厨师。其中一个机器人是生成器(Generator),它是富有创造力的厨师。它阅读凌乱的论坛帖子,并尝试构建出错的食谱(有缺陷的代码)和修复后的食谱(补丁代码)。但生成器容易白日做梦;它可能会发明不存在的食材,或者忘记打开炉灶。这就是为什么它有一个搭档:评审员(Reviewer)。评审员是严格的行政总厨,负责品尝生成器制作的每一道菜。如果菜肴还没熟,评审员就会把它退回厨房,并附上一张便条说:“你忘了放鸡蛋,”或者“味道不对,再试一次。”它们在一个循环中工作,不断烹饪与品尝,直到菜肴完美为止。

这篇论文的主要发现是,这种“共同烹饪”的方法效果出奇地好。研究人员在来自热门数据科学论坛(涵盖了 pandas 和 NumPy 等著名工具)的 176 个真实案例上测试了 Reprodgen。他们发现,对于漏洞,Reprodgen 能成功重现出错代码和修复方案的概率约为 60%;对于修复方案,成功率约为 52%。这是一个了不起的成就,因为以往其他智能系统的尝试往往无法生成可以运行的代码;它们写的代码在纸面上看起来是对的,但一旦你尝试使用,就会崩溃。然而,Reprodgen 却成功构建了“可执行”的代码——这意味着它可以在计算机上实际运行而不会报错。

然而,论文谨慎地指出,这并不是一个解决一切问题的万能钥匙。研究人员明确反对仅仅要求一台聪明的计算机“编写代码”就足够了的观点。他们测试了其他顶尖系统,如 AutoCodeRover 和 ArchCode,发现当论坛帖子缺失细节时,这些系统往往会放弃。它们要么产生无法运行的代码,要么会直接跳过出错的部分而只给出解决方案。Reprodgen 表明,你必须拥有那种严格的评审循环,并且你需要发明“模拟数据”(假原料)来填补论坛帖子留下的空白。

这项研究还揭示了关于这些机器人厨师的一些有趣特征。研究人员测试了几个不同的“大脑”(大语言模型),以看看哪一个是最好的厨师。他们发现 Qwen 2.5Gemma 3 模型最为可靠,而其他模型则表现得更为吃力。有趣的是,机器人重现出错版本代码的能力比重现修复版本代码的能力要强。猜出错误在哪里更容易(因为论坛帖子通常会对问题描述得很清楚),而猜出完美的解决方案则更难(这需要更多的创造性推理)。

在速度方面,该系统解决每个问题平均耗时 35 秒,对于如此复杂的任务来说,这已经相当快了。但研究人员也注意到,机器人有时会对需要哪些特定的工具或“库”(libraries)感到困惑,这表明虽然系统很聪明,但在确定精确环境方面仍需帮助。

最终,这篇论文表明,我们正越来越接近一个计算机可以自动从人类错误中学习并进行修复的未来。研究人员不仅开发了一个工具,还创建了一个新的“测试厨房”——ReprodgenBench-V,这是一个包含 176 个真实问题的集合,其他科学家可以用它来测试他们自己的机器人厨师。他们还设立了一个公开排行榜,让所有人都能看到哪些模型在完成这项任务时表现最佳。虽然该系统尚不完美——它仍然会错过大约一半的修复方案——但它能够将一个凌乱、不完整的描述转化为一个可运行、可执行的程序,这本身就是一个重大的进步。它证明了通过结合创造力与严格的检查,我们可以教会机器理解人类编码错误中那混乱的现实。

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

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

试用 Digest →