在编程环境中将语言映射到代码
通过 JuICe 语料库,本文提出了一种基于上下文历史训练的代码生成模型,该语料库提供了 1.5 百万个代码示例和 3.7 千个测试用例,并有利于深入探索交互式编程、自然语言处理和基于 Jupyter notebooks 的编程。
Oct, 2019
通过同时学习源代码和抽象语法树的结构信息,本篇研究提出了一种只使用与语言无关的功能和直接从抽象语法树中计算得出的功能的新机器学习模型,该模型在单语言和多语言代码总结方面均取得了最新成果。
Mar, 2021
本篇研究是探讨 open-domain code generation 领域中的挑战 --- 对于不同编程社区中经常变化和扩展的函数和类的生成,特别是当涉及到未知的代码库时。作者提出了一个框架,利用API文档中的信息生成代码,并进行了相关实验并开放了一个新数据集。
Feb, 2022
DocPrompting是一种自然语言到代码生成的方法,利用文档(documentation)明确地生成代码。通过应用于各种编程语言,我们证明了它可以改进自然语言到代码模型,可以提高2.85%的绝对正确率。
Jul, 2022
本研究旨在探索是否通过使用上下文数据使代码易于理解会提高预训练代码语言模型完成代码补全任务的性能,并建议在训练、微调或选择此类模型时做出适当的设计选择,以改善自动补全的实用性和准确性。
Apr, 2023
当今大型语言模型 (LLMs) 具备高度的代码生成和理解能力,特别是在解释用户指导任务时,它们对于解释陌生库中的代码模块显得尤为有希望。最近的研究表明,大型专有 LLMs 可以通过演示学习上下文中的新型库使用。这些结果引发了几个问题,即演示是否需要、是否较小的(更加开放的)模型也具备这种能力等等。本研究以更广泛的方法系统评估不同类型的 LLMs,在三个反映不同领域专业化程度的场景中,了解它们在基于上下文定义的库生成代码时的能力和限制。我们的研究结果表明,即使是开源的较小型 LLMs,如 Llama-2 和 StarCoder,也展现出了对新型代码库的熟练理解能力。我们的发现进一步揭示,LLMs 在学习新的库模块时表现出惊人的高度熟练度,即使只提供自然语言描述或函数的原始代码实现,这比演示要便宜得多。总体而言,我们的研究结果为在更具适应性和动态性的编码环境中利用LLMs铺平了道路。
Nov, 2023
该研究提出了一种名为ProCoder的新方法,通过迭代修复项目级代码上下文中的错误,引导编译器反馈,从而使生成的代码精确无误。实验结果表明,ProCoder显著改进了基本的大语言模型在生成项目相关代码方面的性能,并持续优于现有的基于检索的代码生成基准。
Mar, 2024
LLMs在代码生成任务中展示了显著的潜力,在各种基准测试中在函数或语句级别取得了有希望的结果。然而,在创建类等代码构件方面的复杂性,特别是在实际软件库的背景下,尚未得到充分探索。现有的研究通常将类级生成视为一项孤立的任务,忽视了表征实际软件开发环境的错综复杂的依赖关系和交互作用。为了填补这一空白,我们介绍了RepoClassBench,这是一个旨在严格评估LLMs在创建复杂的类级代码时在实际软件库中的能力的基准测试。RepoClassBench包括Java和Python中的自然语言到类的生成任务,来自一组公共软件库。我们确保数据集中的每个类不仅在库内跨文件存在依赖关系,而且还包括相应的测试用例来验证其功能。我们发现目前的模型在我们的基准测试中面临着现实挑战,主要是由于它们对相关库上下文的有限了解。为了解决这个缺点,我们介绍了Retrieve-Repotools-Reflect (RRR),这是一种新颖的方法,为LLMs提供静态分析工具,以迭代地导航和推理库级上下文,并在基于代理的框架中进行。我们的实验表明,RRR在RepoClassBench上明显优于现有基准线,展示了它在不同编程语言和各种设置中的有效性。我们的发现强调了需要结合库级依赖关系以更准确地反映软件开发的复杂性的基准测试的必要性。我们的工作说明了利用专门的工具增强LLMs对库上下文的理解的益处。我们计划公开我们的数据集和评估工具。
Apr, 2024
研究发现传统的语言模型在生成代码方面有一定困难,通过提供外部上下文信息如库文档可以改善代码生成效果。通过系统性的大规模分析,发现在何种场景下使用检索增强生成模型能够对代码生成产生帮助,并且存在改进的空间。通过创建了一个综合评估基准,CodeRAG-Bench,涵盖了基本编程、开放域和代码库级别的代码生成任务,实现从五个来源中检索上下文,结果显示在不同设置中通过检索高质量上下文能够提升最终代码生成效果,同时也揭示了当前检索器在词汇重叠有限的情况下仍然难以获取有用的上下文,并且生成器在上下文长度有限或者无法整合额外上下文的能力上存在不足。希望CodeRAG-Bench能够成为有效的测试平台,促进进一步开发针对代码导向的检索增强生成方法。
Jun, 2024
本研究解决了在面向对象编程中,方法级别的代码生成缺乏探索的问题。引入了“提示-令牌成本效益”这一新颖指标,以评估额外上下文信息的经济可行性,发现方法调用细节丰富的提示在成本效益上表现最佳。此外,研究揭示了不同大型语言模型在错误类型分布和开发者协助程度上的差异,强调了根据任务的耦合程度选择合适的模型的重要性。
Aug, 2024