De-Hallucinator: Iterative Grounding for LLM-Based Code Completion

2024年01月03日
  • 简介
    大型语言模型(LLMs)在使用公开可用源代码数据集进行训练后,已经在代码补全方面建立了新的最先进技术。然而,这些模型大多不知道特定项目中已经存在的代码,无法充分利用现有的API。相反,LLMs经常会创造或“幻想”不存在的API,或生成已经存在的代码的变体。虽然API信息对IDEs可用,但LLMs的输入大小限制阻止了代码补全技术将所有相关上下文包含在提示中。本文提出了De-Hallucinator,一种基于LLM的代码补全技术,通过检索适当的API参考和迭代地使用越来越合适的上下文信息查询模型,从而使模型的预测得到了有效的支撑。该方法利用了LLMs经常预测类似于所需补全的代码的观察结果,但这些代码未能正确地引用已经存在的API。De-Hallucinator自动识别与代码前缀和模型初始预测相关的特定于项目的API参考,并将这些参考添加到提示中。我们的评估将该方法应用于预测开源Python项目中的API使用情况的任务。我们展示了De-Hallucinator相对于仅使用光标前的代码查询模型时,与四种最先进的LLMs相比,始终可以改善预测代码。特别是,该方法将预测代码的编辑距离提高了23-51%,正确预测API使用情况的召回率相对于基线提高了24-61%。
  • 作者讲解
  • 图表
  • 解决问题
    如何在代码补全过程中利用已有的API信息,避免模型产生虚构的API或重复已有的API?
  • 关键思路
    De-Hallucinator是一种基于LLM的代码补全技术,通过检索适当的API引用和迭代查询模型,将模型的预测结果与项目特定的API引用相结合,从而改进代码补全结果。
  • 其它亮点
    De-Hallucinator应用于预测Python项目中的API用法,相对于仅使用光标前的代码查询模型,可以将预测代码的编辑距离提高23-51%,正确预测API用法的召回率提高24-61%。该方法可以与四种最先进的LLM相结合,实现更好的代码补全效果。
  • 相关研究
    与此相关的研究包括:1.使用LLM进行代码补全的研究;2.利用上下文信息进行代码补全的研究;3.利用API信息进行代码补全的研究。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

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