CodeMirage: Hallucinations in Code Generated by Large Language Models

📄 arXiv: 2408.08333v2 📥 PDF

作者: Vibhor Agarwal, Yulong Pei, Salwa Alamir, Xiaomo Liu

分类: cs.SE, cs.AI, cs.CL

发布日期: 2024-08-14 (更新: 2025-07-08)

备注: Accepted at AutoMates @ IJCAI 2024


💡 一句话要点

CodeMirage:研究大型语言模型在代码生成中的幻觉现象,并提出基准数据集。

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码生成 大型语言模型 幻觉 基准数据集 代码质量

📋 核心要点

  1. 现有大型语言模型在代码生成中存在幻觉问题,导致生成的代码包含语法、逻辑错误甚至安全漏洞。
  2. 论文通过定义代码幻觉类型,构建CodeMirage基准数据集,并提出代码幻觉检测方法,系统性地研究了该问题。
  3. 实验结果表明,GPT-4在HumanEval数据集上表现最佳,并在MBPP数据集上与微调的CodeBERT基线相当。

📝 摘要(中文)

大型语言模型(LLM)在程序生成和无代码自动化方面显示出巨大的潜力。然而,LLM容易产生幻觉,即生成听起来合理但不正确的文本。尽管最近对LLM在文本生成中的幻觉现象的研究激增,但类似幻觉现象也会发生在代码生成中。生成的代码有时可能存在语法或逻辑错误,以及更高级的问题,如安全漏洞、内存泄漏等。鉴于LLM被广泛应用于提高代码生成和开发的效率,研究代码生成中的幻觉现象势在必行。据我们所知,这是首次尝试研究LLM生成的代码中的幻觉现象。我们首先介绍了代码幻觉的定义和代码幻觉类型的综合分类。我们提出了第一个用于代码幻觉的基准数据集CodeMirage。该基准包含1,137个GPT-3.5生成的Python编程问题的幻觉代码片段,这些问题来自两个基础数据集——HumanEval和MBPP。然后,我们提出了代码幻觉检测的方法,并使用单次提示对开源LLM(如CodeLLaMA)以及OpenAI的GPT-3.5和GPT-4模型进行了实验。我们发现GPT-4在HumanEval数据集上表现最佳,并在MBPP数据集上给出了与微调的CodeBERT基线相当的结果。最后,我们讨论了代码幻觉的各种缓解策略,并总结了我们的工作。

🔬 方法详解

问题定义:论文旨在解决大型语言模型(LLM)在代码生成过程中产生的幻觉问题。现有方法缺乏对代码幻觉的系统性研究和有效检测手段,导致生成的代码质量难以保证,可能存在语法错误、逻辑错误、安全漏洞等问题。

核心思路:论文的核心思路是首先定义代码幻觉的概念和类型,然后构建一个包含幻觉代码片段的基准数据集,最后基于该数据集评估现有LLM的代码幻觉程度,并提出检测方法。通过这种方式,可以系统地研究和解决代码幻觉问题。

技术框架:论文的技术框架主要包含三个部分:1)代码幻觉定义和分类;2)CodeMirage基准数据集构建;3)代码幻觉检测方法。首先,论文定义了代码幻觉,并对其进行了分类。然后,利用GPT-3.5生成了包含幻觉代码片段的数据集CodeMirage,该数据集基于HumanEval和MBPP两个现有数据集。最后,论文使用CodeMirage数据集评估了CodeLLaMA、GPT-3.5和GPT-4等模型,并提出了代码幻觉检测方法。

关键创新:论文的主要创新在于:1)首次系统性地研究了LLM在代码生成中的幻觉现象;2)提出了代码幻觉的定义和分类;3)构建了首个用于代码幻觉的基准数据集CodeMirage。这些创新为后续研究代码幻觉问题奠定了基础。

关键设计:CodeMirage数据集的构建基于GPT-3.5生成,并针对HumanEval和MBPP数据集中的Python编程问题,生成包含幻觉的代码片段。论文采用one-shot prompt的方式评估LLM的代码生成能力,并使用准确率等指标评估代码幻觉检测方法的性能。

📊 实验亮点

实验结果表明,GPT-4在HumanEval数据集上表现最佳,并在MBPP数据集上给出了与微调的CodeBERT基线相当的结果。这表明GPT-4在一定程度上能够缓解代码幻觉问题。然而,所有模型都存在不同程度的代码幻觉,表明该问题仍然具有挑战性,需要进一步研究。

🎯 应用场景

该研究成果可应用于提升代码生成工具的可靠性和安全性,例如集成到IDE或代码审查工具中,自动检测和修复LLM生成的代码中的幻觉。这有助于提高软件开发效率,降低安全风险,并促进LLM在软件工程领域的更广泛应用。

📄 摘要(原文)

Large Language Models (LLMs) have shown promising potentials in program generation and no-code automation. However, LLMs are prone to generate hallucinations, i.e., they generate text which sounds plausible but is incorrect. Although there has been a recent surge in research on LLM hallucinations for text generation, similar hallucination phenomenon can happen in code generation. Sometimes the generated code can have syntactical or logical errors as well as more advanced issues like security vulnerabilities, memory leaks, etc. Given the wide adaptation of LLMs to enhance efficiency in code generation and development in general, it becomes imperative to investigate hallucinations in code generation. To the best of our knowledge, this is the first attempt at studying hallucinations in the code generated by LLMs. We start by introducing the code hallucination definition and a comprehensive taxonomy of code hallucination types. We propose the first benchmark CodeMirage dataset for code hallucinations. The benchmark contains 1,137 GPT-3.5 generated hallucinated code snippets for Python programming problems from two base datasets - HumanEval and MBPP. We then propose the methodology for code hallucination detection and experiment with open source LLMs such as CodeLLaMA as well as OpenAI's GPT-3.5 and GPT-4 models using one-shot prompt. We find that GPT-4 performs the best on HumanEval dataset and gives comparable results to the fine-tuned CodeBERT baseline on MBPP dataset. Towards the end, we discuss various mitigation strategies for code hallucinations and conclude our work.