RepoBench:评估代码自动完成系统的存储库水平性能
基于大型语言模型的 R2C2-Coder 方法增强和评估了真实世界的代码仓库级代码补全能力,其中 R2C2-Coder 包括 R2C2-Enhance 方法和 R2C2-Bench 基准测试。
Jun, 2024
RepoCoder 是一个简单,通用且有效的框架,它通过结合基于相似度的检索器和预训练的代码语言模型来简化存储库级代码完成流程,并允许在不同的粒度级别生成代码。同时,它还利用一种新的迭代检索 - 生成范式来弥合检索上下文和完成目标之间的差距。此外,我们通过对 RepoEval 的测试表明,在各种设置中,RepoCoder 显著提高了零样本代码完成基线,始终优于普通的增强检索式代码完成方法。
Mar, 2023
LLMs 在代码生成任务中展示了显著的潜力,在各种基准测试中在函数或语句级别取得了有希望的结果。然而,在创建类等代码构件方面的复杂性,特别是在实际软件库的背景下,尚未得到充分探索。现有的研究通常将类级生成视为一项孤立的任务,忽视了表征实际软件开发环境的错综复杂的依赖关系和交互作用。为了填补这一空白,我们介绍了 RepoClassBench,这是一个旨在严格评估 LLMs 在创建复杂的类级代码时在实际软件库中的能力的基准测试。RepoClassBench 包括 Java 和 Python 中的自然语言到类的生成任务,来自一组公共软件库。我们确保数据集中的每个类不仅在库内跨文件存在依赖关系,而且还包括相应的测试用例来验证其功能。我们发现目前的模型在我们的基准测试中面临着现实挑战,主要是由于它们对相关库上下文的有限了解。为了解决这个缺点,我们介绍了 Retrieve-Repotools-Reflect (RRR),这是一种新颖的方法,为 LLMs 提供静态分析工具,以迭代地导航和推理库级上下文,并在基于代理的框架中进行。我们的实验表明,RRR 在 RepoClassBench 上明显优于现有基准线,展示了它在不同编程语言和各种设置中的有效性。我们的发现强调了需要结合库级依赖关系以更准确地反映软件开发的复杂性的基准测试的必要性。我们的工作说明了利用专门的工具增强 LLMs 对库上下文的理解的益处。我们计划公开我们的数据集和评估工具。
Apr, 2024
最近的大型语言模型 (LLMs) 的进展显著增强了它们的编码能力。然而,现有的基准主要关注编程的简化或隔离方面,如单文件代码生成或存储库问题调试,无法全面衡量真实世界编程活动引发的各种挑战。为此,我们提出了 DevBench,这是一个全面的基准,评估 LLMs 在软件开发生命周期的各个阶段,包括软件设计、环境设置、实施、验收测试和单元测试。DevBench 涵盖了广泛的编程语言和领域,具备高质量的数据收集,并为每个任务设计和验证了仔细设计的指标。经验证实证研究表明,包括 GPT-4-Turbo 在内的当前 LLMs 未能解决 DevBench 中提出的挑战。分析显示,模型在理解存储库中的复杂结构、管理编译过程和掌握高级编程概念方面存在困难。我们的发现为未来 LLMs 的真实世界编程应用的发展提供了可行的洞察。我们的基准可以在此 https URL 获取。
Mar, 2024
评估大型语言模型在代码生成中的方法是一个开放性问题。本文提出了一个新的基准测试 - EvoCodeBench,用于解决现有基准测试与实际代码仓库的对接不足以及评估 LLMs 的编码能力不足的问题。
Mar, 2024
Code Large Language Models (CodeLLMs) often lack contextual understanding of project repositories, but the RepoHyper framework addresses this limitation by introducing a Repo-level Semantic Graph (RSG) and leveraging graph expansion and link prediction algorithms to improve repository-level code completion accuracy.
Mar, 2024
该研究提出了 RTL-Repo 基准,并通过评估多个先进模型在该基准上的表现,比较了它们在生成复杂 RTL 项目的 Verilog 代码方面的性能。RTL-Repo 基准为硬件设计社区提供了一个有价值的资源,用于评估和比较大型语言模型在真实 RTL 设计场景中的性能,并专门为复杂的多文件 RTL 项目的 Verilog 代码生成训练大型语言模型。RTL-Repo 是一个开源项目,可在 Github 上公开获取。
May, 2024
这篇综述研究了大型语言模型在编码生成任务中的有效提示方法,探讨了从个别编码问题到仓库规模解决方案的转变,旨在推进开发者生产力,为商业应用场景提供有用且适用的黑盒语言模型方法,并介绍了基于仓库级提示生成技术与 RepoCoder 的迭代检索与生成方法之间的权衡,以确立最佳实践,为尖端编码基准提供改进路径。
Dec, 2023
利用大型语言模型自动生成软件开发者库 (Code Repository) 的简单而有效的框架 CodeS 在自然语言到代码库转换任务上显示出了其有效性和实用性。
Mar, 2024
本文介绍了一个名为 RepoFusion 的新型框架,其可以训练模型根据相关的代码库上下文以提供更加准确的代码自动补全建议,并且在单行代码完成任务中展示出比训练数据规模大 70 倍的模型表现 F1 分数更加优秀。我们还发布了一个 Java 代码库数据集 Stack-Repo 和模型检查点及源代码,以便进一步的研究。
Jun, 2023