Contextual API Completion for Unseen Repositories Using LLMs

2024年05月07日
  • 简介
    大型语言模型在解决各种与代码相关的任务方面取得了实质性进展。然而,它们的应用受到了生成输出不一致的阻碍,这是由于缺乏真实世界、领域特定的信息,例如针对未见过的软件项目的库内 API 调用。我们引入了一种新颖的技术来通过利用代码库内的全局和局部上下文信息来缓解幻觉,以完成 API 任务。我们的方法旨在优化本地 API 完成,我们检查 API 完成过程中的相关导入语句,以了解本地 API,并从其方法签名中获取见解。对于 API 令牌完成,我们分析内联变量并将其与适当的导入模块相关联,从而使我们的方法能够从可用的本地 API 中排名最具上下文相关性的建议。此外,对于对话 API 完成,我们通过跨项目的基于检索的搜索收集与开发人员查询最相关的 API。我们在我们提出的 APIEval 基准框架中使用我们的工具 LANCE,该框架涵盖两种不同的编程语言。我们的评估结果显示,API 令牌完成的平均准确率为 82.6%,对话 API 完成的平均准确率为 76.9%。平均而言,LANCE 在 API 令牌完成和对话 API 完成方面分别比 Copilot 高出 143% 和 142%。我们的研究结果对开发人员具有重要意义,表明我们的轻量级上下文分析可以应用于多语言环境,无需进行语言特定的训练或微调,从而可以在最少的示例和努力下实现高效的实现。
  • 图表
  • 解决问题
    提高代码自动补全任务的准确性,解决模型生成不一致的问题,通过利用代码库中的全局和局部上下文信息进行API自动补全。
  • 关键思路
    利用全局和局部上下文信息来优化API自动补全任务,分析相关的导入语句和内联变量来推断局部API,使用检索式搜索来找到与开发者查询最相关的API。
  • 其它亮点
    使用LANCE工具进行实验,提出了APIEval基准测试框架,涵盖两种不同的编程语言,API token自动补全任务的平均准确率为82.6%,会话式API自动补全任务为76.9%,LANCE的表现超过了Copilot。
  • 相关研究
    与该论文相关的研究包括:1. CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing; 2. Deep API Learning; 3. GPT-2: Language Models are Unsupervised Multitask Learners。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论