中文

通过执行反馈对生成的代码候选列表进行筛选

软件工程 2024-09-20 v3

摘要

大型语言模型(LLM)如GPT-4、StarCoder和CodeLlama正在通过自动生成基于给定自然语言描述的代码来改变开发人员的编程方式。尽管取得了进展,但对于复杂的编程任务仍然具有生成语法和语义正确代码的挑战。现有方法通常使用LLM生成多个候选解决方案以提高产生正确代码的可能性。然而,从这些候选代码中选择正确代码——即代码排序——仍是一个主要挑战。当前对代码排序的研究可分为基于执行的方法和基于非执行的方法。虽然基于执行的方法有效,但面临诸多限制,如缺乏高质量单元测试和安全风险。基于非执行的方法如CodeRanker,它们仅依赖分类标签来训练代码排序器,但难以捕捉细微错误并提供详细的错误见解。鉴于两种方法的优势和局限性,我们提出了一种新方法。本文的关键见解是,有效的代码排序器有望真正理解错误代码的根本原因,因为仅依赖分类标签不足。灵感来自这一点,本文提出了RankEF,一种创新的代码排序方法,利用执行反馈。RankEF采用多任务学习来整合代码分类与执行反馈生成。这一方法使模型能够理解错误代码背后的原因,在无需在排序阶段执行代码的情况下区分正确与错误的解决方案。在三个代码生成基准测试上的实验表明,RankEF显著优于最先进的CodeRanker。

关键词

引用

@article{arxiv.2408.13976,
  title  = {Sifting through the Chaff: On Utilizing Execution Feedback for Ranking the Generated Code Candidates},
  author = {Zhihong Sun and Yao Wan and Jia Li and Hongyu Zhang and Zhi Jin and Ge Li and Chen Lyu},
  journal= {arXiv preprint arXiv:2408.13976},
  year   = {2024}
}

备注

Accepted by the 39th IEEE/ACM International Conference on Automated Software Engineering (ASE 2024)