遇见数据集

scandukuri/humaneval-patch

收藏
Hugging Face2024-01-24 更新2024-03-04 收录
官方服务:

资源简介:

openai_humaneval数据集包含各种形式的单行错误代码解决方案。这些错误是通过Python中的抽象语法树(AST)随机替换函数体中的变量、函数和表达式生成的。数据集包含两个子集:control和print。control子集通过随机替换生成316个错误解决方案,而print子集则是在control子集的基础上,通过手动添加和GPT-4生成的打印语句来帮助调试错误代码,并选择修复准确率最高的打印语句。

openai_humaneval数据集包含各种形式的单行错误代码解决方案。这些错误是通过Python中的抽象语法树(AST)随机替换函数体中的变量、函数和表达式生成的。数据集包含两个子集:control和print。control子集通过随机替换生成316个错误解决方案,而print子集则是在control子集的基础上,通过手动添加和GPT-4生成的打印语句来帮助调试错误代码,并选择修复准确率最高的打印语句。

提供机构:
scandukuri
原始信息汇总

openai_humaneval 数据集概述

数据集描述

openai_humaneval 数据集包含在解决方案中引入的各种形式的一行错误。这些错误是通过使用Python的抽象语法树(ASTs)随机采样函数体中的变量、函数和表达式,并将它们分别替换为其他变量、函数和表达式而生成的。

数据集结构

数据集包含两个部分:controlprint

control 部分

  • 生成过程
    1. 从 openai_humaneval 数据集中选择一个解决方案 i 和一个扰动类型 t({variable, expression, function})。
    2. 构建解决方案 i 的抽象语法树。
    3. 通过随机替换类型为 t 的节点 n 为另一个类型为 t 的节点 n,生成一个错误的解决方案 i
    4. 如果 i 是一个新的不正确解决方案且评估无误,则将其添加到数据集中,并处理下一个问题。
    5. 重复步骤2至3,最多尝试100次,如果未找到有效解决方案,则跳过该对 (i, t)。
  • 结果:最终生成316个新的错误解决方案,构成 control 部分。

print 部分

  • 生成过程
    1. control 部分选择30个错误解决方案(每种类型 t 10个)。
    2. 为每个错误解决方案 j 从30个手动打印语句中采样3个专家打印语句。
    3. 使用GPT-4为每个错误解决方案 j 插入类似的打印语句。
    4. 为每个问题生成20个不同的打印插入 p
    5. 使用 mistralai/Mixtral-8x7B-Instruct-v0.1 选择修复准确率最高的打印插入 p
    6. 保留与最高修复准确率关联的打印插入 p
  • 结果:最终生成316个错误解决方案,每个解决方案都插入了一个 mixtral-optimal 打印语句,构成 print 部分。
搜集汇总
数据集介绍
构建方式
在代码修复与语言模型能力探究的交叉领域中,数据集构建的严谨性至关重要。scandukuri/humaneval-patch 数据集基于 OpenAI 的 HumanEval 基准,通过抽象语法树(AST)技术系统性地引入单行错误。具体而言,针对 HumanEval 中 164 个问题-解决方案对,研究者首先为每个正确解构建 AST,随后随机选取变量、函数或表达式类型的节点,并用同类型的其他节点替换,生成一个语法正确但逻辑错误的变体。若该变体在未评估错误的前提下构成新解,则被收录。每个问题-类型对最多尝试 100 次,最终获得 316 个错误解,构成 control 分割。进一步,从 control 中选取 30 个代表性错误解,由专家手动编写调试打印语句,并利用 GPT-4 生成 20 个变体,再通过 Mixtral-8x7B 模型筛选出修复准确率最高的打印插入,形成 print 分割。
特点
该数据集的核心特色在于其结构化的错误注入与双层验证机制。错误类型精准覆盖变量、表达式和函数三类常见编程失误,确保了多样性与现实相关性。control 分割提供了纯净的错误解集合,而 print 分割则嵌入了经模型优化的调试打印语句,为探究打印语句对代码修复的影响提供了天然实验平台。此外,数据集规模适中(316 个样本),便于进行快速迭代实验,且每个错误解均源自 HumanEval 的标准问题,保证了与现有基准的可比性。这种从基础错误到修复辅助的递进设计,使其成为评估语言模型调试能力的理想工具。
使用方法
使用者可轻松通过 HuggingFace 数据集库加载 scandukuri/humaneval-patch,并访问 control 与 print 两个分割。在代码修复任务中,可将 control 分割中的错误解作为输入,评估模型在不含辅助信息时的修复能力;而 print 分割则允许研究者对比模型在获得最优打印语句前后的性能差异。具体实验流程包括:加载问题描述与错误代码,调用目标语言模型生成修复补丁,并通过与原始正确解比对验证修复正确性。对于 print 分割,还可进一步分析打印语句的插入位置与内容对修复成功率的影响,从而深入理解模型如何利用调试信息进行逻辑推理。
背景与挑战
背景概述
在代码智能与程序修复领域,语言模型对缺陷代码的定位与修复能力一直是研究的热点。HumanEval-Patch数据集由Jan Philipp Franken等研究者于2023年创建,作为PrintLLaMA项目的一部分,旨在系统性地探究语言模型如何利用打印语句辅助调试。该数据集以OpenAI的HumanEval基准为基础,通过抽象语法树(AST)随机替换变量、函数或表达式,生成包含单行缺陷的316个错误解决方案,并进一步为其中30个问题构建了专家级打印语句,最终形成一个包含控制组(仅含缺陷代码)和打印组(含最优打印语句)的对照数据集。HumanEval-Patch填补了现有代码修复数据集在结构化错误生成与调试辅助信息方面的空白,为评估和提升语言模型在程序修复中的推理能力提供了标准化测试平台。
当前挑战
HumanEval-Patch数据集所面临的挑战主要体现在两个层面。在领域问题层面,它聚焦于语言模型对代码中语义等价但逻辑错误的单行缺陷的修复能力,这一任务要求模型不仅理解代码语法,还需具备对变量作用域、函数调用关系及表达式求值顺序的深度推理,其难度远超简单的语法错误检测。在构建过程层面,挑战包括:通过AST随机替换生成有效错误解决方案时,需确保新代码无运行时错误且与原解语义不同,这一过程在100次尝试内可能失败;此外,从30个专家打印语句中为每个缺陷代码选择最优打印插入点时,需依赖Mixtral-8x7B模型进行20次修复尝试并计算准确率,计算成本高且结果受模型能力局限。这些挑战共同构成了数据集在促进代码修复研究中的核心难点。
常用场景
经典使用场景
在代码智能与程序修复领域,Humaneval-Patch数据集为评估大语言模型在调试任务中的表现提供了基准平台。其经典使用方式聚焦于将含有一行语义错误的程序作为输入,考察模型能否借助插入的打印语句精准定位并修复缺陷。该数据集通过抽象语法树随机替换变量、函数或表达式生成变异错误,并分别构建无辅助信息的控制集与嵌入最优打印语句的打印集,从而模拟真实开发中程序员依赖日志信息进行排错的核心场景。研究者通常利用该数据集对比不同模型在控制条件下与打印辅助条件下的修复准确率,以此量化模型对程序运行时状态的推理能力。
衍生相关工作
Humaneval-Patch数据集催生了一系列探究语言模型调试能力的经典工作。其中,PrintLLaMA项目基于该数据集验证了通过插入打印语句修复代码的有效性,并提出了利用模型自身生成的打印信息进行迭代修复的框架。后续研究进一步扩展了其设计思想,如将AST变异策略应用于其他编程语言数据集以构建多语言调试基准,或结合强化学习优化打印语句的插入位置与内容。此外,该数据集启发了“调试即推理”的理论方向,促使学者探索如何将程序修复任务分解为错误定位、状态跟踪与补丁生成等子问题,并推动了针对大模型推理链可解释性的评估方法研究。
数据集最近研究
最新研究方向
在代码生成与自动修复领域,HumanEval-Patch数据集通过抽象语法树扰动技术,系统性地构造了包含变量、表达式和函数替换的细粒度缺陷样本,为评估与提升大语言模型(如GPT-4、Mixtral)的调试能力提供了标准化基准。该数据集创新性地引入print语句优化策略,通过专家构建的打印提示与模型自主选择机制,探索了利用上下文调试信息辅助代码修复的前沿路径。这一工作紧密关联当前大模型在软件工程中的热点应用——即从静态代码生成向动态缺陷诊断的范式延伸,其意义在于揭示了模型通过有限交互信息(如print输出)实现高效错误定位的潜力,为构建更鲁棒的自动编程助手奠定了数据基础。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务