通过指令感知的 Fill-in-the-Middle 范式桥接开发者指令与代码补全
软件工程
2025-10-14 v2
摘要
大型语言模型(LLM)显著推进了代码补全,但当开发者的意图在代码上下文中未明确说明时,它们通常会失败。为了解决这个问题,开发者通常在代码上下文中添加自然语言指令(例如注释)以明确其意图。然而,应用于代码补全系统的现有代码 LLM 仅经历了 fill-in-the-middle(FIM)预训练,由于缺乏类似指令的训练数据,这使其难以有效利用这些信息。现有的指令微调技术虽然提高了通用代码生成中的指令遵循能力,但反常地降低了 FIM 性能,迫使在指令遵循和填充能力之间进行权衡。为了填补这一空白,我们引入了 Instruction-aware Fill-in-the-Middle(IFIM),一种专门设计用于增强 FIM 代码补全模型的指令微调方法。IFIM 通过在输入中引入显式指令部分来扩展传统的 FIM 训练目标,使模型能够从(前缀,指令,后缀)三元组中学习。这种方法允许模型有效利用开发者提供的指令,同时在不存在指令时保留其核心补全能力。为此,我们通过使用 GPT-4o 为代码填充示例生成简洁、聚焦意图的指令,构建了一个大规模数据集。我们将 IFIM 应用于两个流行的基础模型 Deepseek-Coder 和 Qwen2.5-Coder,并在源自 HumanEval-infilling 和 RepoMasterEval 的基准上进行了评估。结果表明,IFIM 显著提高了指令遵循能力,将 Pass@1 得分从 84.6% 提升至 93.6%。此外,这种增强并未影响模型在没有提供指令的 FIM 代码补全任务上的原始性能。
引用
@article{arxiv.2509.24637,
title = {Bridging Developer Instructions and Code Completion Through Instruction-Aware Fill-in-the-Middle Paradigm},
author = {Zhensu Sun and Chengran Yang and Chao Peng and Pengfei Gao and Xiaoning Du and Li Li and David Lo},
journal= {arXiv preprint arXiv:2509.24637},
year = {2025}
}