five

RepoST-Train and RepoST-Eval

收藏
github2025-03-11 更新2025-03-15 收录
下载链接:
https://github.com/yiqingxyq/RepoST
下载链接
链接失效反馈
官方服务:
资源简介:
RepoST-Train和RepoST-Eval数据集包含一组GitHub仓库(具有特定的提交ID)、每个仓库中的一组目标函数以及可以在docker环境中执行的每个目标函数的评估脚本。

The RepoST-Train and RepoST-Eval datasets consist of a collection of GitHub repositories with specific commit IDs, a set of target functions within each repository, and evaluation scripts for each target function that can be executed in a Docker environment.
创建时间:
2025-03-10
原始信息汇总

RepoST: Scalable Repository-Level Coding Environment Construction with Sandbox Testing

数据集结构

RepoST-Train和RepoST-Eval数据集具有相同的结构。它们都包括:

  • 一组GitHub仓库(具有特定的提交ID)
  • 每个仓库中的一组目标函数
  • 每个目标函数的一个评估脚本,可以在我们的docker环境中执行

数据文件以列表的形式存储在data/ExecTrain/checked_test_set_final.json(和data/ExecEval/checked_test_set_final.json)中。每个列表项是一个字典,代表一个示例,格式如下:

json { "func_name": "VNetwork.forward", "idx": "708", "repo_name": "seakers___sacTransformerEOS", "commit_id": "669fb18ee47ae5947b578e392be25c1517f6d73b", "func_path": "scripts/sac.py", "orig_context": "python

scripts/sac.py

import torch ...", "eval_script": "## scripts/sac.py import torch

import torch.nn as nn ...", "coverage_rate": 1.0, "sandbox_ast_check": true, "sandbox_functionality_check": ..., "test_correctness_check": ... }

评估流程

环境搭建与安装

创建新环境: bash conda env create -n repost python=3.11 -y conda activate repost

安装依赖: bash pip install -r requirements.txt

指定代码和数据路径: bash source setup_eval.sh

加载RepoST-Eval Docker镜像

提供RepoST-Eval docker镜像

使用镜像: bash docker load -i repost_eval_image.tar

创建docker容器: bash docker run --name=execeval -v ${final_dataset_DIR}:${docker_final_dataset_DIR} -it repost_eval:v0

运行代码生成

代码生成脚本位于generation/目录下。

运行示例: bash cd generation bash scripts/ExecEval_gpt4o_generation.sh bash scripts/ExecEval_qwen_generation.sh

结果保存路径: bash data/ExecEval/results/

执行基于Docker的评估

在docker容器中执行: bash

在docker容器内

cd RepoST source setup_eval.sh python RepoST/execution.py --input_file ../ExecEval/results/ExecEval_gpt4o_context_top1.json --script_key generation_script

结果保存路径: bash data/ExecEval/results/ExecEval_gpt4o_context_top1_exec.json

训练流程

模型训练环境搭建与安装

创建新环境: bash conda env create -n llama python=3.11 -y conda activate llama

安装依赖: bash cd LLaMA-Factory pip install -e .

指定代码和数据路径: bash source setup_train.sh

数据处理

处理数据脚本位于get_training_data/目录下。

运行示例: bash cd get_training_data bash scripts/get_full_sft_data.sh

处理后的数据文件保存路径: bash LLaMA-Factory/data/

模型训练

LLaMA-Factory/data/dataset_info.json中添加数据信息,然后编写配置文件,最后运行训练。

训练示例: bash cd LLaMA-Factory bash scripts/sft_ExecTrain_exec_qwencoder.sh

公共数据集评估

提供在公共基准上进行评估的代码,位于CodeRAGBench_evaluation/目录下。

请参考CodeRAGBench_evaluation/README.md中的说明。

构建自己的可执行代码生成环境

提供从GitHub抓取仓库、函数和上下文的代码,位于get_github_input/目录下,以及构建评估脚本的代码,位于RepoST/目录下。

环境搭建与安装

创建新环境: bash conda env create -n repost python=3.11 -y conda activate repost

安装依赖: bash pip install -r requirements.txt

指定代码和数据路径: bash source setup_eval.sh

Docker搭建

创建Dockerfile,并运行docker build命令。

运行docker容器: bash docker run --name=exec_eval_test -v ${dataset_generation_DIR}:${docker_dataset_generation_DIR} -it exec_eval

在docker容器中创建受限用户: bash adduser --disabled-password --gecos "" restricted_user chown restricted_user:restricted_user /home/user/ExecEval chown restricted_user:restricted_user /home/user/tmp

采样GitHub仓库、函数和上下文

编写配置文件,运行脚本进行采样和上下文提取。

示例脚本: bash cd get_github_input bash scripts/ExecEval_scrape_repos.sh bash scripts/ExecEval_obtain_functions.sh

沙盒化

调用LLM聚合目标函数及其上下文(包括跨文件)到单独的脚本中。

示例脚本: bash cd RepoST python sandboxing.py --input_file cleaned_python_test.json --model_name "claude-3-5-sonnet-20240620"

测试生成

调用LLM为目标函数在沙盒化脚本中创建测试。

示例脚本: bash cd RepoST python test_generation.py --input_file cleaned_python_test_sandboxed.json --model_name "claude-3-5-sonnet-20240620"

迭代执行与调试

执行沙盒化脚本,使用LLM调试(如果需要)。

示例脚本: bash

在docker容器内

python RepoST/execution.py --input_file /home/user/ExecEval/cleaned_python_test_tests.json --script_key full_script --test_gt python RepoST/execution.py --input_file /home/user/ExecEval/cleaned_python_test_tests_exec.json --script_key full_script --test_gt --check_coverage_mode

调试脚本: bash cd RepoST python debug.py --input_file cleaned_python_test_tests_exec_coverage.json --model_name "claude-3-5-sonnet-20240620"

后期检查

运行后期处理脚本,然后使用LLM检查功能等价性和测试正确性。

示例脚本: bash cd RepoST python post_processing.py --input_file cleaned_python_test_debug_round0_exec_coverage.json --script_key full_script_debug_round0 --output_file test_set_final.json python llm_check.py --input_file test_set_final.json --model_name gpt-4o --mode sandbox python llm_check.py --input_file test_set_final.json --model_name gpt-4o --mode test python llm_check.py --input_file test_set_final.json --model_name gpt-4o --mode combine

结果文件格式请参考数据集结构部分。

搜集汇总
数据集介绍
main_image_url
构建方式
RepoST-Train和RepoST-Eval数据集的构建方式包括从GitHub仓库中选取特定提交id的代码,针对每个仓库中的目标函数构建沙盒环境,并生成相应的测试脚本。数据集由一系列GitHub仓库、每个仓库中的目标函数以及对应的评估脚本组成,评估脚本可以在我们的docker环境中执行。
使用方法
使用该数据集时,首先需要设置和安装相应的环境,包括加载RepoST-Train和RepoST-Eval的Docker镜像,并创建一个容器来执行代码。之后,可以运行代码生成和评估脚本,执行基于沙盒的评估,并获取Pass@k分数。对于训练,可以使用提供的代码处理训练数据,并使用LLaMA-Factory框架进行模型训练。
背景与挑战
背景概述
RepoST数据集是一套旨在构建可扩展的代码库级别编码环境的数据集,由Yiqing Xie、Alex Xie等研究人员于2025年创建。该数据集的核心研究问题是实现代码库级别的编码环境构建,并通过沙盒测试来确保代码的正确性。RepoST数据集的构建基于GitHub代码库,包含特定提交ID的代码库集合、目标函数以及对应的评估脚本。该数据集对编程环境构建和代码生成领域产生了显著影响,为相关研究提供了重要的实验基础。
当前挑战
在构建RepoST数据集的过程中,研究人员面临了多个挑战。首先,如何从GitHub上选取合适的代码库并提取目标函数是一个挑战。其次,构建沙盒环境以执行和评估生成的代码同样具有挑战性,需要确保执行的正确性和效率。此外,生成有效的测试用例以评估目标函数的正确性,以及迭代执行和调试过程以改善代码生成质量,也是数据集构建中的关键挑战。
常用场景
经典使用场景
RepoST-Train和RepoST-Eval数据集的设计旨在构建可扩展的代码生成环境,并通过沙盒测试进行验证。其经典使用场景包括在编码环境中自动生成目标函数的代码,并确保这些生成的代码能够在特定环境中正确执行。数据集通过提供GitHub仓库、目标函数以及相应的评估脚本来实现这一目的,使得研究者可以在一个控制的环境中测试和评估代码生成模型的效果。
解决学术问题
该数据集解决了自动化代码生成中的关键问题,包括如何生成符合预期的代码,以及如何确保生成的代码在真实环境中能够正确运行。通过提供一系列的评估脚本和沙盒测试环境,数据集帮助研究者验证生成代码的正确性和功能性,从而推动了代码生成技术在学术研究和工业应用中的发展。
实际应用
在实际应用中,RepoST数据集可以被用来训练和测试代码生成模型,以便在软件开发过程中自动生成代码片段。这对于提高软件开发效率、减少人工编码错误以及加速软件迭代更新具有重要意义。此外,该数据集还可以用于教育领域,帮助学生和初学者通过实践学习编程和代码生成技术。
数据集最近研究
最新研究方向
RepoST数据集近期研究方向主要集中在可扩展的代码库级别编码环境构建上,通过沙箱测试来实现。该研究旨在为代码生成任务创建一个包含特定commit id的GitHub仓库集合,以及每个仓库中的目标函数和相应的评估脚本。研究的前沿方向包括使用LLaMA-Factory框架进行模型训练,以及采用拒绝采样和地面真实函数作为目标的 vanilla SFT方法。这些研究对于提升代码生成模型的准确性和鲁棒性具有重要意义,有助于推动自动化编程和软件工程领域的进展。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作