论文
MRCoder:一种用于存储库级代码生成的高效上下文选择方法
MRCoder: An Efficient Context Selecting Approach for Repository-Level Code Generation
摘要
大语言模型(LLM)在代码生成方面表现出了强大的能力。然而,存储库级代码生成仍然具有挑战性,因为它需要有效地识别和利用存储库特定的上下文。虽然检索增强生成 (RAG) 包含相关代码片段,但它通常会引入冗余上下文,干扰 LLM 利用相关信息的能力,导致生成质量下降并增加计算成本。此外,现有的上下文选择和压缩方法难以平衡效率和质量,要么引入额外的计算开销,要么无法有效地选择有效的上下文。在本文中,我们提出了 MRCoder,一种高效的上下文选择框架,可以提高存储库级代码生成的有效性和效率。 MRCoder采用Map-Reduce范式:在Map阶段,轻量级草稿模型在分区上下文上生成草稿,结构感知草稿引导选择(SADGS)通过API一致性和逻辑相似性根据草稿选择信息丰富的上下文;在Reduce阶段,精炼后的上下文被聚合以进行最终生成,并行验证策略进一步加速解码。我们使用 Qwen2.5-Coder 和 DeepSeek-Coder 作为主干 LLM,在两个广泛使用的存储库级代码生成基准 CoderEval 和 DevEval 上评估 MRCoder。实验结果表明,与强基线相比,MRCoder 提高了代码生成准确性,同时将词元消耗减少了 30% 至 50%,推理时间减少了高达 52%。这些结果表明,我们提出的结构化和草稿引导的上下文选择策略对于提高存储库级代码生成的质量和效率至关重要