Learning from 53.6K Real-World Developer Edits of AI-Generated Code
本文介绍了 DECODE,这是一个包含来自 1,000 多名开发者的 53,600 次真实 IDE 内 AI 生成代码编辑的数据集,该数据集揭示了大多数修改都发生在接受后的 15 分钟内,并证明了在此数据上进行微调的小型模型在预测代码编辑方面显著优于前沿大语言模型。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下你正在教一个机器人做饭。你给它展示一本食谱,它尝试做一道菜。有时,它做得非常完美。但经常,它会放太多盐、忘了加蒜,或者用勺子而不是搅拌器。在计算机科学的世界里,这个机器人就是一个“AI 编程助手”,而那些菜肴就是代码行。长期以来,科学家们试图通过向这些机器人展示完成好的食谱(称为“Git commit”)来教它们——即那些最终进入食谱中的完美成品。但这就像仅仅通过观察盘子里的食物来学习烹饪一样,忽略了混乱的厨房、烤焦的面包以及厨师慌乱的修正。
真正的魔力(以及真正的混乱)发生在中间过程。当人类厨师尝了一口汤并说:“不,这需要再加点胡椒,”或者“实际上,把这个扔掉重新开始吧,”这就是一次“代码编辑”。直到现在,我们还没有好的方法来观察厨师是如何进行这些操作的。此前,我们只能看到最终的结果。这篇论文深入研究了这个混乱而美丽的厨房。它提出了疑问:人类究竟是如何修复 AI 错误的?他们是进行微调,还是直接把它扔进垃圾桶?我们能否教会机器人预测这些修复行为,甚至在它们发生之前就预判出来?
伟大的代码侦探:DECODE
这项研究背后的研究人员意识到,要让 AI 更擅长编写代码,他们必须停止只看成品,而是开始观察过程。他们创建了一个庞大的新数据集,名为 DECODE(开发者代码编辑数据集)。把 DECODE 想象成安装在 1,000 多名真实开发者 IDE(数字工作空间)中的一套大型高清监控系统。该系统不仅保存最终的代码,还记录了开发者在接受一段 AI 建议后所做的每一次点击、删除和重写。
他们收集了 53,600 次这类真实的编辑会话,主要涉及 Python、TypeScript 和 JavaScript。这就像拥有一个由 53,600 个关于人类与机器人如何争论、妥协以及协作构建软件的故事组成的图书馆。
他们的发现:“15 分钟法则”与“垃圾桶”
当团队分析数据时,他们发现了关于人类如何对待 AI 建议的一些惊人模式。
首先,他们发现了一个严格的 15 分钟法则。大多数编辑都发生得非常快。如果开发者打算修改 AI 的代码,他们通常会在接受建议后的前 15 分钟内完成。在那之后,代码通常就不会再被改动了。
其次,他们发现人类出奇地严苛。在约 31% 的案例中,开发者并不仅仅是微调代码,而是直接删除了 AI 的整个建议并从头开始。这就像 AI 递给你一个三明治,而你立刻把它扔进了垃圾桶,因为面包稍微有点不对劲。数据表明,如果 AI 的建议不能立即完美契合开发者的意图,它往往注定会被放弃。
然而,当人类 保留 这些代码时,他们改动并不大。数据表明,对于那些幸存下来的代码,开发者通常会保留原 AI 建议中约 63% 的内容。他们倾向于添加极少的原创代码(人类新添加的内容仅占最终代码的约 20%)。这意味着开发者高度依赖 AI,但他们对初始质量的要求非常挑剔。
研究人员还注意到人们修复事物的特定顺序。这就像一份清单:
- “这玩意儿能用吗?”检查: 首先,他们决定是否要保留这段代码。如果不想保留,就删除它。
- “修复 Bug”阶段: 接下来,他们修复语法错误或可读性问题。
- “把它变成我的”阶段: 然后,他们重命名变量或更改数值以适应特定的需求。
- “改变计划”阶段: 最后,如果他们仍在继续处理,可能会改变代码实际执行的功能。
教会机器人读心术
论文的第二个重点是一个测试:我们能否教会一个较小的开源 AI 模型,使其比那些巨大的、超级智能的“前沿”模型更好地预测这些编辑行为?
通常,最大的、最昂贵的 AI 模型被认为是全能的。但在本研究中,研究人员拿出了一个较小的模型(拥有 30 亿个参数,与那些巨头相比微不足道),并专门针对 DECODE 数据集对其进行了训练。他们教这个小模型观察一段 AI 建议,并进行猜测:“人类会删除它吗?他们会微调它吗?还是会 그대로 留下它?”
结果令人震惊。经过真实世界编辑数据的学习,这个小模型的表现变得显著更好,甚至超过了从未见过此类特定数据的庞大、最先进的模型。
- 对于预测最终代码会是什么样子的,该小模型的准确度提升了 0.17(这在这一领域是一个巨大的飞跃)。
- 对于预测代码是否会被修改,它的表现也提升了 0.17。
这表明,拥有正确的“经验”(真实世界的编辑数据)比单纯拥有更大的大脑更为重要。这就像一位看过数千场烹饪节目的年轻厨师,可能比一位只在实验室里烹饪完美餐点的名厨更懂得如何改进一道菜。
总结:核心在于人,而非仅仅是代码
论文得出结论,我们不应再将 AI 代码生成视为一个只追求“正确性”的数学问题。真正的目标是“对齐(Alignment)”。代码需要符合人类的意图,否则人类就会直接把它扔掉。
作者建议,未来的 AI 助手不应仅仅尝试在第一次尝试时就写出完美的代码。相反,它们应该被训练去理解“编辑的过程”。它们需要明白人类通常会快速删除内容,会在改变功能之前先修复错误,并且更容易接受那些易于微调的代码。
通过使用像 DECODE 这样的数据集,我们可以构建出不仅仅是编写代码,而且是编写“人类真正想要保留的代码”的 AI。这是一种从询问“这段代码是否正确?”到询问“这段代码是否能让一个人类轻松将其变为己用?”的转变。数据表明,如果我们教会 AI 理解那段混乱的、15 分钟的编辑窗口期,我们或许终于能得到一个能做出让我们满意享用的佳肴的机器人。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。