Library Hallucinations in LLMs: Risk Analysis Grounded in Developer Queries
作者: Lukas Twist, Jie M. Zhang, Mark Harman, Helen Yannakoudakis
分类: cs.SE, cs.CL
发布日期: 2025-09-26
备注: 23 pages, 5 tables
💡 一句话要点
系统性分析开发者查询对LLM代码库幻觉的影响,揭示潜在安全风险。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 大型语言模型 代码生成 库幻觉 提示工程 安全风险
📋 核心要点
- 现有LLM在代码生成中存在库幻觉问题,可能导致安全风险,但缺乏对用户提示变化影响的系统研究。
- 该研究通过分析真实开发者查询和错误提示,评估不同LLM在库名和成员幻觉方面的表现。
- 实验揭示LLM对细微提示变化的脆弱性,强调了提示工程在缓解幻觉方面的局限性,并呼吁加强安全防护。
📝 摘要(中文)
大型语言模型(LLM)越来越多地用于生成代码,但它们仍然存在幻觉问题,经常会虚构不存在的库。这种库幻觉不仅仅是无害的错误,它们可能会误导开发者,破坏构建过程,并将系统暴露于供应链威胁,例如域名抢注。尽管人们越来越意识到这些风险,但对于真实世界的提示变化如何影响幻觉率知之甚少。因此,我们首次系统地研究了用户级别的提示变化如何影响LLM生成的代码中的库幻觉。我们评估了六个不同的LLM,涵盖两种幻觉类型:库名幻觉(无效导入)和库成员幻觉(来自有效库的无效调用)。我们调查了从开发者论坛中提取的真实用户语言,以及不同程度的用户错误(单字符或多字符拼写错误以及完全虚构的名称/成员)如何影响LLM的幻觉率。我们的研究结果揭示了系统性漏洞:库名中的单字符拼写错误在高达26%的任务中触发幻觉,虚构的库名在高达99%的任务中被接受,与时间相关的提示在高达84%的任务中导致幻觉。提示工程显示了缓解幻觉的希望,但仍然不一致且依赖于LLM。我们的结果强调了LLM对自然提示变化的脆弱性,并强调迫切需要针对与库相关的幻觉及其潜在利用采取保护措施。
🔬 方法详解
问题定义:论文旨在解决LLM在代码生成过程中出现的库幻觉问题,即生成不存在的库或库成员。现有方法缺乏对用户实际使用场景中各种提示变化(例如拼写错误、虚构名称)影响的系统性分析,难以有效评估和缓解此类幻觉带来的风险。
核心思路:论文的核心思路是通过模拟真实开发者在论坛中提出的各种查询和错误,系统性地评估不同LLM在面对这些提示变化时产生库幻觉的概率。通过分析幻觉产生的模式,揭示LLM的脆弱性,并为后续的幻觉缓解策略提供依据。
技术框架:该研究的技术框架主要包括以下几个步骤:1) 从开发者论坛收集真实的用户查询;2) 模拟用户在库名和库成员上的各种错误(例如单字符拼写错误、多字符拼写错误、完全虚构的名称);3) 使用这些带有变化的提示,输入到不同的LLM中生成代码;4) 分析生成的代码,判断是否存在库幻觉(无效的库导入或库成员调用);5) 统计不同提示变化下LLM的幻觉率,并进行对比分析。
关键创新:该研究的关键创新在于:1) 首次系统性地研究了用户级别的提示变化对LLM代码库幻觉的影响;2) 使用了从开发者论坛中提取的真实用户查询,更贴近实际应用场景;3) 评估了不同类型的用户错误(拼写错误、虚构名称)对幻觉率的影响,揭示了LLM对细微变化的脆弱性。
关键设计:论文的关键设计包括:1) 选择了六个具有代表性的LLM进行评估;2) 区分了库名幻觉和库成员幻觉两种类型;3) 设计了多种类型的用户错误,例如单字符拼写错误、多字符拼写错误、完全虚构的名称,以模拟真实场景;4) 使用幻觉率作为评估指标,量化了不同提示变化对LLM的影响。
📊 实验亮点
实验结果表明,LLM对细微的提示变化非常敏感。例如,库名中一个字符的拼写错误可能导致高达26%的任务中出现幻觉。更令人担忧的是,LLM在高达99%的任务中接受虚构的库名。与时间相关的提示也会导致高达84%的任务中出现幻觉。这些结果突显了LLM在代码生成方面存在的安全隐患。
🎯 应用场景
该研究成果可应用于提升代码生成工具的安全性,降低因库幻觉导致的安全风险。开发者可以利用研究结果,设计更有效的提示工程策略,减少LLM生成错误代码的可能性。此外,该研究也为LLM的开发者提供了改进方向,例如增强模型对拼写错误的鲁棒性,提高对虚构库的识别能力。
📄 摘要(原文)
Large language models (LLMs) are increasingly used to generate code, yet they continue to hallucinate, often inventing non-existent libraries. Such library hallucinations are not just benign errors: they can mislead developers, break builds, and expose systems to supply chain threats such as slopsquatting. Despite increasing awareness of these risks, little is known about how real-world prompt variations affect hallucination rates. Therefore, we present the first systematic study of how user-level prompt variations impact library hallucinations in LLM-generated code. We evaluate six diverse LLMs across two hallucination types: library name hallucinations (invalid imports) and library member hallucinations (invalid calls from valid libraries). We investigate how realistic user language extracted from developer forums and how user errors of varying degrees (one- or multi-character misspellings and completely fake names/members) affect LLM hallucination rates. Our findings reveal systemic vulnerabilities: one-character misspellings in library names trigger hallucinations in up to 26% of tasks, fake library names are accepted in up to 99% of tasks, and time-related prompts lead to hallucinations in up to 84% of tasks. Prompt engineering shows promise for mitigating hallucinations, but remains inconsistent and LLM-dependent. Our results underscore the fragility of LLMs to natural prompt variation and highlight the urgent need for safeguards against library-related hallucinations and their potential exploitation.