Hierarchical Context Pruning: Optimizing Real-World Code Completion with Repository-Level Pretrained Code LLMs

2024年06月26日
  • 简介
    最近开发的一些大型语言模型(Code LLMs)已经在代码库级别的代码数据(Repo-Code LLMs)上进行了预训练,使得这些模型能够识别代码库结构并利用跨文件信息进行代码补全。然而,在实际的开发场景中,简单地将整个代码库连接起来往往超出了这些Repo-Code LLMs的上下文窗口限制,导致性能显著下降。在本研究中,我们对六个Repo-Code LLMs进行了广泛的初步实验和分析。结果表明,保持文件的拓扑依赖关系并增加完成提示中的代码文件内容可以提高完成准确性;在所有相关文件中修剪特定函数的具体实现并不会显著降低完成的准确性。基于这些发现,我们提出了一种名为分层上下文修剪(HCP)的策略,以构建具有高信息代码内容的完成提示。HCP在函数级别上建模代码库,保持代码文件之间的拓扑依赖关系,同时删除大量无关的代码内容,从而显著减少了用于代码库级别完成的输入长度。我们在六个Repo-Code LLMs的实验中应用了HCP策略,结果表明我们提出的方法可以显著提高完成准确性,同时大大减少输入长度。我们的代码和数据可在https://github.com/Hambaobao/HCP-Coder上获得。
  • 图表
  • 解决问题
    本论文旨在解决Repo-Code LLMs在实际开发场景中无法处理整个代码仓库的问题,提出了一种名为Hierarchical Context Pruning(HCP)的策略,用于构建高信息代码内容的完成提示。
  • 关键思路
    论文的关键思路是在函数级别上维护代码库的拓扑依赖关系,同时去除大量无关的代码内容,从而显著减少了代码输入长度,提高了完成准确性。
  • 其它亮点
    论文通过对六个Repo-Code LLMs进行广泛的实验和分析,发现维护文件的拓扑依赖关系和增加代码文件内容可以提高完成准确性;同时,去除所有相关文件中特定函数的具体实现并不会显著降低完成准确性。论文提出的HCP策略在六个Repo-Code LLMs的实验中得到了验证,显著提高了完成准确性,同时大大减少了输入长度。论文提供了开源代码和数据集。
  • 相关研究
    最近在这个领域中,也有一些相关研究,如CodeBERT、GraphCodeBERT等。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问