迈向多语言仓库级别的代码生成:从零开始到指导式任务

【字体: 时间:2026年03月01日 来源:Neurocomputing 6.5

编辑推荐:

  提出ReCode-bench多语言仓库级代码生成基准,涵盖从零开始创建项目及结构/功能导向开发任务,并设计RepoGenesis框架整合结构相似性、语法正确性和功能有效性的三维奖励机制,实验显示经训练的Qwen2.5-Coder-7B表现接近Claude-Sonnet-4。

  
Jingjing Liu|Silin Li|Zeming Liu|Zihao Cheng|Yuhang Guo|Yuanfang Guo|Yunhong Wang|Haifeng Wang

摘要

仓库级别的代码生成是自动化软件开发的基本构建块。因此,已经提出了许多基准测试来评估大型语言模型(LLMs)在这个领域的能力。然而,现有的基准测试主要局限于单一编程语言和固定的粒度级别。为了解决这两个问题,我们引入了ReCode-bench,这是一个多语言基准测试,涵盖了7种广泛使用的编程语言,并包括三个仓库级别的代码生成任务。这些任务围绕不同的需求粒度级别设计,包括从零开始创建整个项目以及基于结构或功能规范的指导性开发。在后者中,故意引入的需求被视为正噪声,以更好地反映真实的开发场景。为了提高LLM在这些任务中的鲁棒性,我们提出了RepoGenesis,这是一个基于GRPO的强化学习框架,它结合了3种不同的奖励信号:与人类编写仓库的结构相似性、通过抽象语法树分析验证的句法正确性,以及通过单元测试执行确认的功能有效性。我们在ReCode-bench上评估了8种LLM,发现即使是目前最强的代码生成模型Claude-Sonnet-4,在这三个任务中的平均通过率也不到4%。然而,在使用RepoGenesi训练后,Qwen2.5-coder-7B-Instruct的性能与Claude-Sonnet-4相当(100B)。

引言

由于仓库级别的代码生成与现实世界的软件开发密切相关,并且具有提高开发效率的潜力[1]、[2]、[3],近年来它受到了越来越多的关注。为了推进这项研究,研究人员提出了各种评估基准测试——例如COMMIT0 [4]、TESTEVAL [5]、DevEval [6]、SWE-bench [7]、RepoBench [8] 和 RepoDebug [9],以评估模型在仓库级别代码生成任务上的表现。然而,大多数现有的基准测试仅限于Python编程语言,这使得难以评估LLM在多语言开发环境中的泛化和适应能力。实际上,软件项目通常涉及多种语言,如Java、Go和Rust。此外,当前的基准测试主要关注函数级别[10]或文件级别[6]的代码生成,缺乏在仓库级别的系统评估。虽然COMMIT0扩展了任务范围,包括从零开始构建代码库,但它仍然忽略了现实世界软件开发中遇到的关键场景。这些场景包括软件生命周期的不同阶段——构思、框架搭建和实现——涉及不同级别的需求粒度,例如带有给定依赖关系的仓库功能结构或详细的函数规范(例如,自然语言注释)。
为了解决这两个关键问题,我们引入了ReCode-bench,这是一个新的基准测试,旨在支持多种语言和不同任务复杂度的仓库级别代码生成,使评估设置更接近实际软件开发中面临的挑战。我们仔细地从GitHub收集了7种广泛使用的编程语言。如图1所示,我们还设计了三种任务类型,模拟真实的软件开发场景,在这些场景中,故意引入的需求变化和开发约束作为正噪声来挑战模型并鼓励其进行鲁棒推理。这些任务包括从零开始生成整个项目(难度较高)、根据项目中每个文件的功能布局生成代码(难度中等),以及根据详细的函数级别描述生成代码(难度较低)。
期望从零开始构建完整项目的自动化代码生成系统生成的输出不仅在语法上正确,而且在结构上连贯、可编译和可测试。尽管强化学习在函数完成[11]、[12]和代码修复[13]等局部任务上取得了进展,但现有方法在生成完整软件仓库方面的能力仍然有限。为了解决这一挑战,我们提出了RepoGenesis,这是一种基于带有程序目标的引导式强化的仓库级别代码生成方法,它通过结构化的奖励函数指导大型语言模型逐步合成完整的软件项目。该框架结合了基于抽象语法树的静态分析和动态测试反馈,以构建多维奖励信号,从而能够在多种编程语言和任务设置中有效评估代码的语义正确性、结构合理性和可执行性。
我们的主要贡献可以总结为以下三点:
  • 据我们所知,我们是第一个引入支持多种语言和不同任务复杂度的仓库级别代码生成基准测试的团队。
  • 为了提高LLM在这些任务中的代码生成能力,我们提出了RepoGenesis,这是一个基于GRPO的强化学习框架,具有3种不同的奖励信号。
  • 实验结果突显了当前LLM的局限性,并证明RepoGenesis使Qwen2.5-Coder-7B的性能与Claude Sonnet 4相当(100B)。
  • 相关工作

    相关工作

    仓库级别代码生成基准测试? 近年来,研究人员为开发更严格和全面的评估框架做出了显著努力,以评估LLMs在代码生成任务中的能力。早期的探索之一是SWE-bench [7],它评估模型在给定代码库和问题描述的情况下修改现有代码以解决特定问题的能力。同样,FEA-Bench [14] 从功能实现的角度来处理这个任务

    ReCode-bench

    为了解决现有基准测试中编程语言覆盖范围有限以及忽略现实世界软件开发中多粒度场景的问题,我们构建了ReCode-bench。

    方法论

    在本文中,我们提出了RepoGenesis,这是一种基于GRPO的仓库级别代码生成方法。设计的生成过程如图2所示。在这个框架中,有两个主要组成部分:代码生成代理和环境。代理Qwen 2.5 Coder将尝试生成新程序,环境将帮助提供标量奖励来评估新程序。为了生成新程序,代理将接收一个表示需求的基字符串

    实验设置

    基线? 根据之前的工作[5]、[41],我们选择了来自开源和闭源模型的几种LLM,旨在提供全面的评估。具体来说,我们选择了Qwen系列(Qwen2.5-coder-7B/14B/32B-Instruct)[42]和Deepseek系列(DeepseekCoder V2-Lite/Deepseek-V3)[43]、[44]来自开源LLM。此外,我们还选择了GPT4(GPT-4o/GPT4.1)[45]、Claude4(Claude sonnet 4)和以推理为导向的模型o3、o4-mini [46]来自闭源LLM。提示可以是

    分析

    在本节中,我们进行了全面分析,旨在回答两个研究问题。RQ1:三种奖励如何影响模型性能?(第6.1节)。RQ2:微调能否提高LLM在我们的任务中的性能?(第第6.2节)。RQ3:文件长度如何影响LLM的性能?(第第6.3节

    讨论

    尽管结果很有希望,但我们的研究也存在一些局限性。从数据角度来看,数据在编程语言和仓库覆盖范围方面的多样性和规模受到限制。特别是,使用结构良好的开源代码仓库和合成构建的任务描述可能会导致模型性能被高估,与现实世界的开发场景不符。从方法论角度来看,长上下文建模和文件

    结论

    我们提出了ReCode-bench,这是一个基准测试,旨在评估7种广泛使用的编程语言和不同任务复杂度下的仓库级别代码生成,包括从零开始创建整个项目以及基于结构或功能规范的指导性开发,其中故意引入的噪声反映了现实世界开发中的挑战。在对八种LLM的系统性评估中,即使是目前最强的代码生成模型Claude-Sonnet-4

    CRediT作者贡献声明

    Jingjing Liu:写作 – 审稿与编辑,撰写原始草稿,数据整理,概念化。Silin Li:写作 – 审稿与编辑,撰写原始草稿,可视化,概念化。Zeming Liu:监督,项目管理。Zihao Cheng:调查。Yuhang Guo:监督。Yuanfang Guo:监督。Yunhong Wang:监督。Haifeng Wang:监督。

    利益冲突声明

    作者声明他们没有已知的财务利益或个人关系可能影响本文报告的工作。

    致谢

    感谢审稿人的深刻评论和反馈。这项工作得到了中国国家重点研发计划(编号2023YFF0725600)和中国国家自然科学基金(编号62406015)的支持。
    Jingjing Liu目前是中国北航大学的博士生。她的研究主要集中在大型语言模型(LLM)上,特别是LLM驱动的代理。
    相关新闻
    生物通微信公众号
    微信
    新浪微博
    • 搜索
    • 国际
    • 国内
    • 人物
    • 产业
    • 热点
    • 科普

    热点排行

      今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

      版权所有 生物通

      Copyright© eBiotrade.com, All Rights Reserved

      联系信箱:

      粤ICP备09063491号