中文

基于大语言模型的知识感知代码生成

软件工程 2024-02-02 v3

摘要

大语言模型 (LLM) 在基础编程问题上表现良好。然而,在处理涉及多种算法和数据结构技能的复杂任务,特别是编程竞赛级别的问题时,它们遇到了挑战。值得注意的是,ChatGPT 在其预训练阶段遇到过的问题上表现出出色的性能,但在面对新颖问题时,这种性能会下降。因此,增强 LLM 解决陌生问题的能力已成为一个关键的研究重点。LLM 的问题解决过程在一定程度上反映了人类程序员的方法。面对新的编程任务时,人类程序员会利用先前获得的算法和数据结构知识进行任务规划和代码编写。尽管 LLM 已经学习了此类知识,但在面对特定的新问题时,它们难以有效地应用这些知识。为了解决这个问题,我们构建了一个新的数据集 CodeF,其中包含一部分 ChatGPT 以前未遇到的编程问题。此外,我们开发了一个专为 Python 编程竞赛问题定制的知识库,并引入了知识感知代码生成 (KareCoder) 的概念。KareCoder 通过将提示和来自知识库的知识整合到 LLM 的代码生成推理过程中,增强了模型的理解和解决问题的能力,尤其是在 Pass@1 指标上。在 CodeF 和 APPS 数据集上的测试表明,KareCoder 在处理 LLM 以前未遇到过的新问题方面表现出色。与 ChatGPT 直接生成的代码相比,KareCoder 在 CodeF post2021-9 数据集上的 Pass@1 指标实现了 23.3% 的相对提升。此外,在处理 LLM 以前遇到过的问题时,与其他方法相比,它也表现良好。

关键词

引用

@article{arxiv.2401.15940,
  title  = {Knowledge-Aware Code Generation with Large Language Models},
  author = {Tao Huang and Zhihong Sun and Zhi Jin and Ge Li and Chen Lyu},
  journal= {arXiv preprint arXiv:2401.15940},
  year   = {2024}
}

备注

Accepted in ICPC 2024