训练代码生成模型自我调试输出

代码生成——将自然语言描述自动转换为计算机代码——是大语言模型(LLMs)最具前景的应用之一。但随着编程任务复杂度提升,LLMs的出错概率也随之增加。在2024年神经信息处理系统大会(NeurIPS)上发表的论文中,研究者提出了一种新方法,通过同时训练LLMs的调试能力来提升代码生成质量。

方法创新

与传统基于少量样本学习的调试方式不同,该研究采用监督微调(SFT)强化学习(RL)双轨机制。为解决调试训练数据稀缺问题,研究团队利用LLMs生成高质量合成数据:

  1. 从现有代码生成数据集中提取自然语言提示
  2. 生成多组存在缺陷的代码实现(保留未通过单元测试的样本)
  3. 要求LLMs结合错误信息诊断缺陷原因
  4. 基于诊断结果生成修正后的代码(仅保留通过测试的版本)

关键技术

  • 链式思维推理:要求模型先解释修复思路再生成代码
  • 混合奖励函数:结合单元测试结果(离散)与CodeBLEU评分(连续)
  • 两阶段训练:SFT确保基础能力,RL优化调试策略

实验结果

在StarCoder-15B、CodeLlama-7B等模型上的测试显示:

  • 调试环节使代码通过率(pass@k)最高提升39%
  • SFT+RL组合效果优于纯SFT方案
  • 基于单元测试的训练效果优于仅使用规范示例

该方案为代码生成模型提供了可扩展的自我优化路径,显著降低了人工调试成本。完整技术细节可参考 NeurIPS 2024 会议论文《Training LLMs to better self-debug and explain code》。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
公众号二维码

posted @ 2025-08-18 14:05  CodeShare  阅读(17)  评论(0)    收藏  举报