CoSQA+: Pioneering the Multi-Choice Code Search Benchmark with Test-Driven Agents
本文介绍了 CoSQA+,这是一个高质量的多选题代码搜索基准测试,其特点是包含 412,080 个经由一种新型测试驱动智能体系统验证的智能体标注对,该基准测试展示了优于现有数据集的卓越性能,并显著提升了代码搜索模型的表现。
原始论文根据 CC0 1.0(http://creativecommons.org/publicdomain/zero/1.0/)发布到公有领域。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在一本庞大且混乱的食谱中寻找特定的菜谱。你输入了一个模糊的请求,比如“做点甜的面粉制品”,结果书里只吐出了一个页面。但如果这个页面并不是唯一正确的答案呢?如果制作甜面粉制品有五种不同的方法,而你想看到所有的方案以便挑选出最好的那一个呢?
这就是这篇论文的作者们试图解决的问题——CoSQA+。他们正在为那些利用自然语言(人类语言)来搜索代码(计算机指令)的计算机构建一个更好的“测试”。
以下是他们工作的简明类比拆解:
1. 问题所在:“唯一正确答案”的陷阱
目前的计算机代码搜索系统大多是在进行一种“多选题”式的训练,即每个问题只有一个正确答案。
- 现实情况: 在现实世界中,程序员经常会提出模糊的问题(例如,“如何删除坏字符?”)。实现这一目标并不只有一种方法;可能有十种不同的有效代码片段,它们以略微不同的方式解决问题。
- 缺陷: 现有的数据集强迫计算机只选出一个“胜出者”,从而忽略了其他有效的解决方案。这就像是通过只接受一种特定的句子结构来给学生的作文评分,即使学生用另一种结构写出了同样优秀的段落。
2. 解决方案:CoSQA+(“多项选择”图书馆)
作者创建了一个名为 CoSQA+ 的新数据集。他们没有采用“一问一答”的模式,而是构建了一个一个问题可以对应多个可能正确答案的库。
- 规模: 他们收集了超过 412,000 对问题和代码片段。
- 目标: 旨在教会计算机,当人类提出一个问题时,可能会有一个完整的代码选项菜单,而不只是单一的一道菜肴。
3. 挑战:如何评判 40 万个答案?
如果你有 40 多个问题,你不可能雇佣 40 万名人类专家去阅读每一个代码片段并检查它是否有效。那将耗时极长且成本高昂。
- 旧方法: 人类阅读代码并根据其外观猜测其是否有效。这就像一位老师仅仅通过观察数字来给数学测试评分,而没有实际进行计算。他们可能会错过细微的错误。
- 新方法(“测试驱动型智能体”): 作者构建了一个 AI 机器人团队(智能体),它们不仅是阅读代码,还会运行代码。
- 厨师类比: 想象你有一份食谱(代码)。机器人不仅仅是阅读配料表,而是真正走进厨房,烹饪这道菜并品尝味道。
- 流程:
- 筛选器 (The Screener): 一个机器人快速检查代码是明显有效还是明显失效。
- 生成器 (The Generator): 如果情况不明,另一个机器人会编写一个“品尝测试”(一个测试程序),以查看代码是否实现了人类的要求。
- 执行器 (The Executor): 一个机器人会在一个安全的、隔离的厨房(Docker 容器)中运行代码。
- 纠错器 (The Bug Fixer): 如果厨房起火了(出现错误),这个机器人会尝试修复食谱或配料,以便能再次运行。
- 仲裁者 (The Arbiter): 最后一个机器人观察烹饪结果,并决定:“这真的解决了问题吗?”
- 结果: 机器人团队通过实际运行代码来证明其有效性,而不是仅仅靠猜。
4. 结果:机器人 vs. 人类
作者将他们的机器人团队与人类专家以及其他 AI 模型进行了对比测试。
- 得分: 机器人团队达到了 93.9% 的准确率。
- 对比: 仅通过阅读代码(不进行运行测试)的人类专家准确率约为 89%。其他 AI 模型的得分甚至更低。
- 原因: 因为机器人实际上测试了代码。它们不是在猜测,而是通过运行代码来证明代码确实有效。这就像是猜测一辆车看起来很漂亮就能说明它能跑,与实际驾驶它看引擎是否启动之间的区别。
5. 为什么这很重要
- 更好的训练: 当他们使用这个新的“多项选择”数据集来训练计算机模型时,这些模型在寻找代码方面变得更加出色。它们学会了解决一个问题有很多种方法。
- 跨语言: 他们的机器人团队不仅适用于 Python(一种流行的编程语言),在 Java、Go 和 PHP 上也表现良好。这表明他们的“运行并测试”方法是一种通用的检查代码的方法,无论使用哪种语言。
总结
这篇论文介绍了 CoSQA+,这是一个大规模的新数据集,它将代码搜索视为一种现实场景,即一个问题拥有许多正确答案。为了在不雇佣大量人类的情况下构建这个数据集,他们创建了一个 AI 机器人团队,这些机器人能够编写自己的测试、运行代码并评判结果。这些机器人证明了自己比仅通过阅读代码的人类专家更准确,从而为未来的代码搜索计算机创造了一个更高质量的“教科书”。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。