Rtian/DebugBench
收藏数据集概述
数据集简介
名称: DebugBench
类型: 大型语言模型(LLM)调试基准
来源: 论文 DebugBench: Evaluating Debugging Capability of Large Language Models
数据收集: 从 LeetCode 社区收集代码片段,并使用 GPT-4 植入错误
开源项目: GitHub 仓库
数据集特点
- 实例数量: 4,253 个
- 错误类别: 涵盖四大类错误和 18 种小类型
- 编程语言: 包括 C++、Java 和 Python
- 难度级别: 分为简单、中等和困难三个级别
- 发布时间: 所有实例均在 2022 年 6 月之后发布
数据字段
每个实例包含 13 个特征:
| 特征 | 描述 | 示例 |
|---|---|---|
| slug | LeetCode 编程问题的 ID | single-number |
| Category | 错误分类的大类 | logic error |
| subtype | 错误分类的小类 | operation error |
| language | 实例的编程语言 | cpp |
| level | 问题的复杂度级别 | easy |
| release_time | 编程问题发布的 Unix 时间戳 | 1,691,549,090 |
| question | 编程问题的文字描述 | 给定一个非空整数数组 nums,每个元素出现两次,除了一个。找到那个单一的元素。你必须实现一个线性时间复杂度的解决方案,并且只使用常数额外空间。 |
| examples | 目标函数的输入输出示例对 | ["Input: nums = [2,2,1] |
| Output: 1", "Input: nums = [4,1,2,1,2] | ||
| Output: 4", "Input: nums = [1] | ||
| Output: 1"] | ||
| constraints | 输入参数的约束条件 | 1 <= nums.length <= 3 * 104 -3 * 104 <= nums[i] <= 3 * 104 数组中的每个元素出现两次,除了一个元素只出现一次。 |
| solution | 通过所有测试套件的正确解决方案 | class Solution { public: int singleNumber(vector<int>& nums) { unordered_map<int,int> mp; for(int i=0;i<nums.size();i++){ mp[nums[i]]++; } for(auto m:mp){ if(m.second==1){ return m.first; } } return -1; } }; |
| solution explanation | 分享解决方案的原帖 | # 使用 Map |
class Solution { public: int singleNumber(vector<int>& nums) { unordered_map<int,int> mp; for(int i=0;i<nums.size();i++){ mp[nums[i]]++; } for(auto m:mp){ if(m.second==1){ return m.first; } } return -1; } };
使用 XOR
class Solution { public: int singleNumber(vector<int>& nums) { int res=0; for(int i=0;i<nums.size();i++){ res^=nums[i]; } return res; } }; | | buggy_code | 待调试的错误版本解决方案 | class Solution { public: int singleNumber(vector<int>& nums) { unordered_map<int,int> mp; for(int i=0;i<nums.size();i++){ mp[nums[i]] = 1; } for(auto m:mp){ if(m.second==1){ return m.first; } } return -1; } }; | | bug_explanation | 植入错误的解释 | 我们没有增加映射的值,而是每次都将其设置为 1。 |
数据分割
数据集仅包含一个分割,即评估分割,包含 4,253 个实例。
评估
评估基于 LeetCode 的未见测试套件。评估者需要一个 LeetCode 账户来使用测试套件。评估示例代码可在 Hugging Face 仓库中找到。
数据集创建
数据集创建过程包括从 LeetCode 社区收集代码片段,使用 GPT-4 植入错误,并进行质量检查。还评估了两个商业模型和三个开源模型在零样本场景下的表现。
限制
- 实验中的错误实例是合成创建的,可能不完全反映真实世界调试场景的复杂性。
- 对于某些错误子类型,一些错误实例可能与标记的特征有不同的分类性质。例如,响应“未定义方法”提示生成的错误代码可能会触发无限循环,而不是调用未定义的函数。
引用信息
latex @misc{tian2024debugbench, title={DebugBench: Evaluating Debugging Capability of Large Language Models}, author={Runchu Tian and Yining Ye and Yujia Qin and Xin Cong and Yankai Lin and Zhiyuan Liu and Maosong Sun}, year={2024}, eprint={2401.04621}, archivePrefix={arXiv}, primaryClass={cs.SE} }




