通过本地集成 IDE 导出的静态上下文增强 LLM 编码工具
该研究工作提出了基于预训练代码语言模型的跨文件语境学习框架 CoCoMIC,通过有效地定位和检索最相关的跨文件语境,成功提高了代码完成的准确性。
Dec, 2022
CatCoder 是一种新颖的代码生成框架,扩展了库级代码生成的能力,通过整合相关代码和类型上下文,利用静态分析器提取类型依赖并将其与检索到的代码合并,创建综合提示;实验证明 CatCoder 在各种 LLMs 中表现良好,提供了一致的性能改进。
Jun, 2024
维护文件之间的拓扑依赖性和增加代码文件内容可提高完成准确性,修剪所有相关文件中函数的特定实现并不会显著降低完成准确性。基于这些发现,我们提出了一种名为 Hierarchical Context Pruning (HCP) 的策略,以高信息代码内容构建完成提示,该策略在函数级别模拟代码存储库,减少了用于代码完成的输入长度。实验结果表明,我们的方法可以显著提高完成准确性,并大大减少输入长度。
Jun, 2024
当今大型语言模型 (LLMs) 具备高度的代码生成和理解能力,特别是在解释用户指导任务时,它们对于解释陌生库中的代码模块显得尤为有希望。最近的研究表明,大型专有 LLMs 可以通过演示学习上下文中的新型库使用。这些结果引发了几个问题,即演示是否需要、是否较小的(更加开放的)模型也具备这种能力等等。本研究以更广泛的方法系统评估不同类型的 LLMs,在三个反映不同领域专业化程度的场景中,了解它们在基于上下文定义的库生成代码时的能力和限制。我们的研究结果表明,即使是开源的较小型 LLMs,如 Llama-2 和 StarCoder,也展现出了对新型代码库的熟练理解能力。我们的发现进一步揭示,LLMs 在学习新的库模块时表现出惊人的高度熟练度,即使只提供自然语言描述或函数的原始代码实现,这比演示要便宜得多。总体而言,我们的研究结果为在更具适应性和动态性的编码环境中利用 LLMs 铺平了道路。
Nov, 2023
本文介绍了一种基于多任务学习的预训练语言模型,采用 Transformer 神经网络架构,通过混合目标函数进行预训练,可以更好地理解和生成代码;在实验中证明了该模型相比现有的方法更为有效,尤其在完成标识符的任务上效果显著。
Dec, 2020
该研究提出了一种名为 ProCoder 的新方法,通过迭代修复项目级代码上下文中的错误,引导编译器反馈,从而使生成的代码精确无误。实验结果表明,ProCoder 显著改进了基本的大语言模型在生成项目相关代码方面的性能,并持续优于现有的基于检索的代码生成基准。
Mar, 2024
这篇综述研究了大型语言模型在编码生成任务中的有效提示方法,探讨了从个别编码问题到仓库规模解决方案的转变,旨在推进开发者生产力,为商业应用场景提供有用且适用的黑盒语言模型方法,并介绍了基于仓库级提示生成技术与 RepoCoder 的迭代检索与生成方法之间的权衡,以确立最佳实践,为尖端编码基准提供改进路径。
Dec, 2023
介绍和研究有潜在 bug 的代码补全问题,引入两个数据集,发现潜在 bug 显著降低 Code-LLMs 的性能,调查了几种后处理方法,但效果有限。
Jun, 2023
本文提出一种使用静态分析的策略,称作监视器,以指导解码器生成包含正确类型的标识符代码。通过将检索引入解码过程中提高模型的性能,实验结果表明,在指导下,一些较小的 LMs 的编译率和正确性要优于一些较大的 LMs。
Jun, 2023
通过对多文件、多语言代码完成任务进行深入研究,提出了一个多样化的、多语言的、需要深入理解跨文件上下文的代码完成基准,通过静态分析来准确定位需要跨文件上下文的实例,并证明跨文件上下文对于完整代码的准确性有着显著的影响。此外,还对检索跨文件上下文的各种方法进行了评估,并且展示了该基准的能力在衡量代码检索器的能力方面。
Oct, 2023