Detecting and Correcting Hallucinations in LLM-Generated Code via Deterministic AST Analysis

📄 arXiv: 2601.19106v1 📥 PDF

作者: Dipin Khati, Daniel Rodriguez-Cardenas, Paul Pantzer, Denys Poshyvanyk

分类: cs.SE, cs.AI

发布日期: 2026-01-27

备注: Accepted to FORGE 2026

DOI: 10.1145/3793655.3793725


💡 一句话要点

提出基于确定性AST分析的代码幻觉检测与纠正框架,提升LLM代码生成可靠性

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

关键词: 代码生成 大型语言模型 知识冲突幻觉 抽象语法树 静态分析

📋 核心要点

  1. LLM代码生成易引入知识冲突幻觉(KCH),即语义错误,现有方法如约束解码等对此类错误修复效果不佳。
  2. 提出确定性静态分析框架,通过解析代码为AST并与动态生成的知识库对比,检测并纠正API和标识符冲突。
  3. 实验表明,该框架在检测KCH时达到100%精度和87.6%召回率,并成功自动纠正了77%的幻觉。

📝 摘要(中文)

大型语言模型(LLM)在代码生成方面提高了生产力,但经常引入知识冲突幻觉(KCH),这是一种微妙的语义错误,例如不存在的API参数,这些错误会逃避代码检查器并导致运行时故障。现有的缓解措施,如约束解码或非确定性的LLM在环修复,对于这些错误通常不可靠。本文研究了确定性的静态分析框架是否可以可靠地检测和自动纠正KCH。我们提出了一个后处理框架,该框架将生成的代码解析为抽象语法树(AST),并根据通过库自省动态生成的知识库(KB)对其进行验证。这种非执行方法使用确定性规则来查找和修复API和标识符级别的冲突。在一个手动策划的包含200个Python代码片段的数据集上,我们的框架以100%的精度和87.6%的召回率(0.934 F1-score)检测到KCH,并成功地自动纠正了所有已识别幻觉中的77.0%。我们的研究结果表明,这种确定性的后处理方法是概率修复的可行且可靠的替代方案,为可信的代码生成提供了一条清晰的道路。

🔬 方法详解

问题定义:论文旨在解决LLM代码生成中存在的知识冲突幻觉(KCH)问题。这些幻觉表现为代码中使用了不存在的API参数或错误的标识符,导致代码无法正常运行。现有方法,如约束解码或LLM在环修复,对于此类错误的检测和修复效果不佳,存在不可靠的问题。

核心思路:论文的核心思路是利用确定性的静态分析方法,对LLM生成的代码进行后处理,通过与动态生成的知识库进行对比,检测并纠正代码中的KCH。这种方法避免了概率性的修复方式,力求提供一种可靠的代码生成方案。

技术框架:该框架主要包含以下几个阶段:1) LLM生成代码片段;2) 将生成的代码解析为抽象语法树(AST);3) 通过库自省动态生成知识库(KB),KB包含了API参数、标识符等信息;4) 将AST与KB进行对比,使用确定性规则检测API和标识符级别的冲突;5) 根据预定义的规则自动纠正检测到的KCH。

关键创新:该方法最重要的创新点在于使用确定性的静态分析方法来检测和纠正LLM生成的代码中的KCH。与现有的概率性修复方法相比,该方法更加可靠,能够提供更可信的代码生成结果。此外,动态生成知识库的方式也保证了框架的通用性和可扩展性。

关键设计:该框架的关键设计在于AST的构建和知识库的动态生成。AST的构建需要选择合适的解析器,并确保能够准确地表示代码的结构。知识库的动态生成需要通过库自省获取API参数、标识符等信息,并将其组织成易于查询和对比的格式。此外,确定性规则的设计也至关重要,需要覆盖各种可能的KCH类型,并确保能够准确地进行检测和纠正。

🖼️ 关键图片

fig_0

📊 实验亮点

该框架在包含200个Python代码片段的手动策划数据集上进行了评估,实现了100%的KCH检测精度和87.6%的召回率(F1-score为0.934)。此外,该框架成功地自动纠正了所有已识别幻觉中的77.0%,证明了其在代码幻觉检测和纠正方面的有效性。

🎯 应用场景

该研究成果可应用于各种需要LLM自动生成代码的场景,例如软件开发、自动化测试、代码教育等。通过提高LLM生成代码的可靠性,可以减少人工干预,提高开发效率,并降低软件错误率。未来,该技术有望集成到IDE或代码审查工具中,实现自动化的代码质量控制。

📄 摘要(原文)

Large Language Models (LLMs) for code generation boost productivity but frequently introduce Knowledge Conflicting Hallucinations (KCHs), subtle, semantic errors, such as non-existent API parameters, that evade linters and cause runtime failures. Existing mitigations like constrained decoding or non-deterministic LLM-in-the-loop repair are often unreliable for these errors. This paper investigates whether a deterministic, static-analysis framework can reliably detect \textit{and} auto-correct KCHs. We propose a post-processing framework that parses generated code into an Abstract Syntax Tree (AST) and validates it against a dynamically-generated Knowledge Base (KB) built via library introspection. This non-executing approach uses deterministic rules to find and fix both API and identifier-level conflicts. On a manually-curated dataset of 200 Python snippets, our framework detected KCHs with 100\% precision and 87.6\% recall (0.934 F1-score), and successfully auto-corrected 77.0\% of all identified hallucinations. Our findings demonstrate that this deterministic post-processing approach is a viable and reliable alternative to probabilistic repair, offering a clear path toward trustworthy code generation.