YABLoCo
收藏arXiv2025-05-07 更新2025-05-09 收录
下载链接:
https://github.com/yabloco-codegen/yabloco-benchmark
下载链接
链接失效反馈官方服务:
资源简介:
YABLoCo是一个用于评估大型代码库中长上下文代码生成的大语言模型基准数据集。该数据集包含从四个大型代码库中选取的215个函数,每个函数均包含元数据、不同依赖级别的上下文、文档字符串、函数体和调用图。数据集旨在评估C/C++编程语言中大型代码库的代码生成模型,并包含200K至2,000K行代码的大型代码库。此外,数据集还提供了一个可扩展的评估流程,用于高效计算目标指标,并提供了生成代码的可视化分析工具。
YABLoCo is a benchmark dataset for large language models (LLMs) that evaluates long-context code generation in large-scale codebases. This dataset includes 215 functions selected from four large-scale codebases, with each function containing metadata, context at different dependency levels, docstrings, function bodies, and call graphs. The dataset is designed to evaluate code generation models for large-scale codebases written in C and C++, covering codebases with 200,000 to 2,000,000 lines of code. Additionally, the dataset provides an extensible evaluation workflow for efficiently calculating target metrics, as well as a visualization analysis tool for generated code.
提供机构:
俄罗斯Innopolis大学人工智能学院研究中心
创建时间:
2025-05-07
原始信息汇总
yabloco-benchmark 数据集概述
数据集目录结构
bench
- 包含测试集和开发集的基准测试表。
- 附带json文件,记录每个函数到其调用函数的链接(
next)。
data_extraction
- 用于收集基准测试的流水线。
tables:包含测试覆盖率表、函数调用图的json文件、仓库统计数据和文档字符串标签判断。commit_dates.py:从仓库中提取函数的提交日期。db_stat.py:从函数调用图中收集函数表。merge_commits.py:将提交日期合并到表中。pipeline.sh:运行上述步骤以生成仓库表。merge_test_cov.py:将测试覆盖率命中合并到表中。generate_benchmark.py:生成基准测试和开发表。
finetune
- 包含用于在训练集上微调模型的Notebook和Dockerfile。
- 训练脚本基于fsdp_qlora项目。
streamlit_app
- 一个用于评估模型、可视化生成代码和原始代码以及结果表的Streamlit工具。
- 包含单独的README文件,提供运行说明。
train_data
prev:包含从函数调用图生成的json文件,记录每个函数到调用它的函数的链接。train_functions:包含所有训练函数的表(类似于bench中的表),用于微调。db_stat_prev.py:生成prev表。generate.py:生成训练表。
引用
YABLoCo: Yet Another Benchmark for Long Context Code Generation
搜集汇总
数据集介绍

构建方式
在代码生成领域,评估大型语言模型(LLMs)在真实场景中的表现需要充分考虑代码库的复杂性和规模。YABLoCo数据集的构建过程严格遵循了这一原则,从四个大型C/C++代码库(llvm-project、bullet3、openssl和redis)中精心筛选了215个函数样本。通过clang工具构建函数调用图,并依据依赖关系将函数划分为五个层级('none'、'stdlib'、'file'、'package'和'project')。采用多阶段过滤策略,包括代码长度控制(2-15行)、去重处理、测试覆盖率和最后提交日期排序,最终由三名程序员对文档字符串质量进行人工评估,确保样本的多样性和代表性。
使用方法
该数据集支持通过标准化流程评估代码生成模型的性能。研究者可采用'上下文学习'(ICL)范式,将目标函数的名称、描述和可选上下文信息组合为提示模板,生成多个候选函数。评估阶段提供三类核心指标:衡量功能正确性的pass@k、检测记忆现象的精确匹配(EM)以及基于编辑距离的相似度评分(ES)。配套的Docker化测试环境确保编译和测试过程的可复现性,而可视化分析工具则支持生成结果的细粒度比较。值得注意的是,数据集特别适合探索检索增强生成(RAG)等上下文利用技术,通过提供的'oracle'上下文可验证模型在完整依赖信息下的性能上限。
背景与挑战
背景概述
YABLoCo(Yet Another Benchmark for Long Context Code Generation)是由Innopolis大学人工智能研究所的研究团队于2025年提出的一个专注于长上下文代码生成的基准数据集。该数据集旨在解决大型语言模型(LLMs)在真实世界软件项目中处理大规模代码库时的性能评估问题。YABLoCo特别关注C和C++两种编程语言,填补了现有基准数据集在这两种语言上的空白。数据集包含来自四个大型开源仓库(llvm-project、bullet3、openssl和redis)的215个函数样本,每个样本均附有函数元数据、依赖上下文、文档字符串、函数体及调用图等详细信息。YABLoCo的推出为评估LLMs在百万行代码级别的仓库环境中的代码生成能力提供了重要工具。
当前挑战
YABLoCo面临的挑战主要包括两个方面:领域问题的挑战和构建过程中的挑战。在领域问题方面,YABLoCo致力于解决长上下文代码生成中的关键问题,如跨文件依赖、跨仓库上下文理解以及C/C++语言的复杂语法和语义处理。这些问题的复杂性使得现有LLMs在生成功能正确且符合上下文的代码时表现不佳。在构建过程中,研究团队需克服数据选择的复杂性,确保所选仓库具有足够的代码规模和代码质量;同时,还需解决函数样本的多样性问题,包括不同依赖级别的函数选择、文档字符串的质量评估以及测试覆盖率的验证。此外,数据泄露风险和评估效率问题也是构建过程中需要重点考虑的挑战。
常用场景
经典使用场景
YABLoCo数据集专为评估大型语言模型(LLMs)在C/C++大型代码仓库中的代码生成能力而设计。该数据集通过提供包含数千至数百万行代码的真实项目环境,填补了现有基准测试在小规模上下文窗口评估中的不足。其经典使用场景包括测试模型在复杂依赖关系下的函数体生成能力,特别是在跨文件、跨包及项目级依赖的情境中。数据集中的215个函数样本覆盖了不同级别的上下文依赖,为研究者提供了丰富的实验材料。
解决学术问题
YABLoCo解决了当前代码生成研究中的关键问题:缺乏针对大规模代码仓库的评估基准。传统基准如HumanEval和MBPP仅关注独立函数,而YABLoCo通过引入真实项目中的复杂依赖关系,使研究者能够评估模型在长上下文环境下的表现。此外,该数据集首次涵盖了C/C++语言,弥补了现有基准以Python/Java为主的局限性。其提供的pass@k、Exact Match和Edit Similarity等多维度指标,为量化模型性能提供了科学依据。
实际应用
在实际应用中,YABLoCo可显著提升代码辅助工具(如GitHub Copilot)在大型项目中的实用性。通过评估模型在真实仓库环境下的生成能力,开发者能够优化上下文检索策略,增强跨文件代码补全的准确性。例如,在LLVM或Redis等开源项目中,模型可利用数据集中提取的函数依赖关系,生成符合项目规范的可编译代码。此外,其可视化分析工具支持生成结果的快速验证,加速了工业级代码生成系统的迭代。
数据集最近研究
最新研究方向
近年来,YABLoCo数据集在长上下文代码生成领域引起了广泛关注,特别是在C/C++语言环境下的大规模代码库生成任务中。随着大型语言模型(LLMs)在代码生成任务中的广泛应用,如何评估其在真实世界复杂项目中的表现成为一个关键问题。YABLoCo通过提供包含215个函数的测试集,覆盖了从20万到200万行代码的仓库,填补了现有基准在C/C++语言和大规模上下文评估上的空白。研究热点集中在如何利用检索增强生成(Retrieval-Augmented Generation)技术优化上下文提取,以及如何通过多维度指标(如Pass@k、Exact Match和Edit Similarity)全面评估生成代码的功能正确性和语义一致性。该数据集的推出为探索跨文件、跨仓库的代码生成依赖关系提供了实验基础,同时也推动了针对工业级代码库的模型优化研究。
相关研究论文
- 1YABLoCo: Yet Another Benchmark for Long Context Code Generation俄罗斯Innopolis大学人工智能学院研究中心 · 2025年
以上内容由遇见数据集搜集并总结生成



