大型语言模型在面向对象编程中的战略优化与挑战
本研究旨在探索是否通过使用上下文数据使代码易于理解会提高预训练代码语言模型完成代码补全任务的性能,并建议在训练、微调或选择此类模型时做出适当的设计选择,以改善自动补全的实用性和准确性。
Apr, 2023
本文提出了一种名为TiP的方法,该方法将代码生成分解为两个步骤,逐步引导大型语言模型(LLMs)在编程逻辑中分析和实现要求,并在三个公共基准测试中进行了广泛的实验,结果表明TiP在多个指标上优于现有的基线(ChatGPT),且对于不同的LLMs具有有效性。
May, 2023
该研究探讨了大型语言模型在编程问题中的应用,发现最新技术如InstructGPT和ChatGPT在处理指令时表现优异,而早期使用变量名如Codex的模型的性能受描述问题时表浅的指标较大影响。
Jun, 2023
基于因果分析的方法用于系统地分析大语言模型(LLMs)输入提示与生成代码之间的因果关系,研究结果展示了该技术在提供LLMs有效性方面的潜力,并帮助最终用户理解预测,同时提供改进LLMs生成代码质量的可操作见解。
Oct, 2023
当今大型语言模型 (LLMs) 具备高度的代码生成和理解能力,特别是在解释用户指导任务时,它们对于解释陌生库中的代码模块显得尤为有希望。最近的研究表明,大型专有 LLMs 可以通过演示学习上下文中的新型库使用。这些结果引发了几个问题,即演示是否需要、是否较小的(更加开放的)模型也具备这种能力等等。本研究以更广泛的方法系统评估不同类型的 LLMs,在三个反映不同领域专业化程度的场景中,了解它们在基于上下文定义的库生成代码时的能力和限制。我们的研究结果表明,即使是开源的较小型 LLMs,如 Llama-2 和 StarCoder,也展现出了对新型代码库的熟练理解能力。我们的发现进一步揭示,LLMs 在学习新的库模块时表现出惊人的高度熟练度,即使只提供自然语言描述或函数的原始代码实现,这比演示要便宜得多。总体而言,我们的研究结果为在更具适应性和动态性的编码环境中利用LLMs铺平了道路。
Nov, 2023
通过提出一个与开发者在实践项目中的经验相一致的新基准DevEval,我们评估了五个热门的大型语言模型在代码生成方面的实际能力,揭示了它们的实际表现,并讨论了在实践项目中代码生成的挑战和未来发展方向。
Jan, 2024
推动自动化编程需要强大和全面的代码生成基准,然而当前的评估框架在功能编程 (FP) 方面相对而言忽视了面向对象编程 (OOP),本研究引入了一个面向对象编程的开创性基准,包含了431个涵盖关键的OOP概念和特性的Python程序,并提出了一个新的针对OOP的评估指标pass@o,改进了传统的pass@k度量,研究结果表明pass@o为OOP代码生成提供了更相关和全面的评估,专注于代码的语言模型在功能编程方面表现出色,但在OOP方面则不及ChatGPT等模型,对所有高级代码语言模型在面向对象编程基准上的不良表现突显了这一领域需要的改进。
Jan, 2024
该研究评估了GitHub Copilot在OpenAPI完成度方面的性能,并提出了一组针对任务的特定优化,利用了Meta的开源模型Code Llama。该研究还提出了一种语义感知的OpenAPI完成度基准方法,并通过一系列实验分析了各种提示工程和微调技术对Code Llama模型性能的影响。经过微调的Code Llama模型在参数数量比商业解决方案Codex模型的基础下少25倍的情况下,将正确性改进达到了55.2%的峰值。此外,该研究还提出了一种改进的代码插入训练技术,解决了模型在提示上下文大小小于训练时使用的大小时性能不佳的问题。
May, 2024
基于大型语言模型(LLMs)的自动化软件工程在最近的进展中得到了极大的增强。尽管当前的基准测试表明LLMs可以完成各种软件工程任务,如人类开发人员一样,但它们的大多数评估仅限于简短的、自包含的算法任务。解决具有挑战性和实际意义的编程任务需要利用多种函数调用作为工具,以有效地实现数据分析和Web开发等功能。此外,使用多个工具来解决一个任务需要通过准确理解复杂的指令来进行组合推理。同时实现这两个特征对于LLMs来说是一个巨大的挑战。为了评估LLMs解决具有挑战性和实际意义的编程任务的能力,我们引入了一个基准测试集Bench,其中挑战LLMs以从139个库和7个领域中选择1,140个细粒度的编程任务中调用多个函数调用作为工具。为了对LLMs进行严格评估,每个编程任务包括5.6个测试用例,平均分支覆盖率达到99%。此外,我们提出了Bench的自然语言导向变体Benchi,它将原始的文档字符串自动转换为仅具有基本信息的简短指令。我们对60个LLMs进行了广泛评估,结果显示LLMs还不能准确地遵循复杂指令来使用函数调用,得分最高仅为60%,明显低于人类的97%。这些结果强调了在这个领域进一步改进的需要。
Jun, 2024
使用大型语言模型进行代码生成的能力仍具有一定限制,代码生成的结果通常较为复杂且存在错误,通过研究相关的问题和推导出的漏洞类型,提出了一个训练自由的迭代方法来减少错误并增加合格率。
Jul, 2024