Evaluating LLMs on Java Code Snippet Adaptation Using a Mutation-Injection Framework
本文提出了一种变异注入框架,用于评估大语言模型在无指令 Java 代码片段适配方面的表现,通过研究基于具有强测试覆盖率的开源仓库数据集,探讨性能如何随不同的适配类型、复杂度水平和上下文粒度而变化。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你是一位大厨,在一本旧食谱中发现了一份美味的“培根蛋酱意面(Spaghetti Carbonara)”食谱。你想为朋友们做这道菜,但问题是,你的朋友们对鸡蛋过敏,而且你只有一个小锅,容量很小。你不能直接照抄食谱;你必须进行改编(adapt)。你得把鸡蛋换成别的食材,改变烹饪时间,甚至可能要跳过某个步骤。
在计算机编程的世界里,开发者们做着完全相同的事情。他们找到一段别人写的、可以运行的代码(称为“代码片段”),然后复制它,再根据自己的项目进行微调。
这篇论文是一个计划,旨在测试人工智能(AI)在没有被明确告知要修改什么的情况下,独立完成这种“食谱改编”工作的能力。
以下是使用简单类比对该论文计划进行的拆解:
1. 问题所在:“沉默的大厨”测试
目前,当我们要求 AI 修复代码时,我们通常会给它非常具体的指令,比如:“将变量名从 'x' 改为 'y',并更换库文件。”
但在现实世界中,开发者并不会写出这样的清单。他们只会说:“这是我复制的代码;请让它在我的新项目中运行起来。” AI 必须观察代码及其所在的全新环境,并自行找出需要进行的更改。作者们想要知道:AI 能否在没有逐步说明书的情况下,自行推断出这些更改?
2. 解决方案:“变异机器”
为了公平地进行测试,作者们不能直接使用互联网上的随机代码,因为那样他们就无法准确知道 AI 应该 做了哪些更改。
因此,他们正在构建一台**“变异机器”**(他们称之为 Mutation-Injection 框架)。其工作原理如下:
- 第一步: 他们从一段已经过测试、完美的、可运行的代码开始(就像一份完美的食谱)。
- 第二步: 他们使用一个机器人,有目的地以特定且受控的方式“破坏”或“搞乱”代码。例如,他们可能会重命名变量、改变数字,或者用另一种工具替换现有的工具。
- 第三步: 他们将这段“损坏”的代码交给 AI,并说:“修复它,让它重新运行。”
- 第四步: 如果 AI 修复了它,并且代码通过了所有测试,那么 AI 就获得一分。
因为这些“破坏”是由他们亲自创造的,所以他们完全知道 AI 本该做什么。这就像一位老师出一道已知错误的数学题给学生,检查学生是否找到了并修复了那个特定的错误。
3. 三个核心问题(“菜单”)
研究人员主要在三个方面测试 AI:
- 问题 1:哪些“食材”最难替换?
有些更改很容易,比如重命名变量(把“面粉”改为“糖”)。而有些更改很难,比如改变整个烹饪方式(从烘焙改为煎炸)。他们想看看哪些类型的更改最让 AI 感到困惑。 - 问题 2:如果同时破坏更多东西,难度会增加吗?
如果 AI 能修复一个损坏的部分,它能同时修复三个损坏的部分吗?他们正在测试难度是线性增加,还是当多个问题同时发生时,AI 会彻底陷入混乱。 - 问题 3:AI 需要多少“上下文”?
想象一下你在修复一份食谱。- 场景 A: 你只能看到那张食谱卡。
- 场景 B: 你看到了食谱卡,以及你储藏室里的食材清单。
- 场景 C: 你看到了食谱卡、储藏室,以及整个厨房的布局。
研究人员想知道:AI 是否需要看到整个“厨房”(周围的代码)才能做好工作,还是仅仅看那张食谱卡就足够了?
4. 游戏规则
- 语言: 他们将使用 Java 来进行这项测试,这是一种非常通用的编程语言。
- “不给提示”原则: 不允许告诉 AI 要修改什么。它只能得到一个通用的提示:“请根据上下文适配此片段。”
- 安全网: 他们使用了具有强大“测试套件(test suites)”的真实开源项目。你可以把这些测试看作是“安全检查员”。如果 AI 修改了代码,而安全检查员说:“这仍然运行完美”,那么 AI 就通过了。
5. 为什么这很重要
目前,我们并不真正了解 AI 在这种特定的“复制-粘贴-并修复”技能方面表现如何。现有的测试要么太简单、太笼统,要么只关注整个函数(就像一整顿饭),而不是细小的片段(比如单一的食材)。
这项研究旨在建立一个庞大且公平的“游乐场”,用来精确衡量 AI 在适配代码时何时成功、何时失败。如果他们发现 AI 擅长“更换工具”但拙于“重命名食材”,那么未来的工具就可以针对这些难点进行专门的开发。
简而言之: 作者正在构建一个受控的“障碍赛场”,以观察 AI 在没有“作弊纸”的情况下,能否自主修复损坏的代码。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。