Library Hallucinations in LLM-Generated Code: A Risk Analysis Grounded in Developer Queries
本文首次系统研究了现实中的开发者提示词变体(如拼写错误和虚构名称)如何触发大语言模型生成代码中的库幻觉,揭示了显著的安全漏洞,并引入了 LibHalluBench 基准测试以支持对这些风险的可复现评估与缓解。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你有一位才华横溢、自信满满但略显健忘的助手,他是编写计算机代码的专家。你请他构建一个特定工具,他便愉快地开始输入。然而,这位助手有一个危险的坏习惯:有时,当他不知道所需工具的确切名称时,他只会凭空捏造一个。他会编造一个不存在的库(即预先编写好的代码集合),但他写得如此自信,以至于你可能直到尝试使用它并发现它无法运行时,才意识到它是假的。
本文深入探讨了为什么这位助手会编造这些虚假工具,特别是当你给出略有不同的指令或犯下小错误时。
以下是他们研究发现的分解,使用简单的类比说明:
1. “时间旅行”陷阱
研究人员发现,如果你要求助手提供一个“来自 2025 年”的工具(即尚未发生或超出其训练范围的年份),助手会变得非常紧张,并开始疯狂地产生幻觉。
- 类比:想象你向图书管理员索要一本未来出版的书。图书管理员没有说“我没有那本书”,而是编造了一个听起来完美但根本不存在的书名、封面和摘要。
- 结果:当被要求提供“来自 2025 年”的库时,高达**85%**的情况下,助手会编造一个虚假的库。他们非常不擅长了解自己的“知识截止日期”(即他们停止学习的日期)。
2. “拼写错误”陷阱(潦草的拼写)
如果你不小心拼错了一个真实库的名称,助手通常不会纠正你。相反,他们会变本加厉,假装这个拼写错误的版本是真实的。
- 类比:想象你向厨师索要"Spagetti"(漏掉了字母'h')。厨师没有说“您是指'Spaghetti'吗?”,而是可能从他们虚构的架子上拿起一盒标有"Spagetti"的盒子,或者更糟的是,他们可能会发明一道名为"Spagetti"的不存在的菜肴。
- 结果:
- 一个字母的拼写错误(例如将
numpy写成numpi)导致在**26%**的情况下使用了虚假库。 - 一个虚假的库名称(听起来真实但实际不存在,例如"GaussianTools")在高达**99%**的情况下被接受并使用。助手如此急于取悦你,以至于宁愿使用虚假工具,也不愿告诉你它不存在。
- 一个字母的拼写错误(例如将
3. “形容词”陷阱(什么不起作用)
有趣的是,如果你要求一个“快速”、“简单”或“现代”的库,助手通常会忽略这些词,直接选择一个他们知道的标准的、真实的库。
- 类比:如果你要求一辆“快车”,助手只是给你一辆标准的丰田车。他们不会发明一辆“超级快速飞行汽车”,因为他们知道这些形容词很模糊。
- 结果:像“快速”或“轻量级”这样的形容词很少引发幻觉。危险来自于具体的约束(如日期)或错误(如拼写错误)。
4. “推理”陷阱(思考过度)
研究人员试图通过告诉助手在回答前“逐步思考”或“核实事实”来解决这个问题。
- 类比:这就像告诉一个紧张的学生:“深呼吸,仔细思考这道数学题。”有时这会有所帮助。但通常,学生只是因为他们花了更多时间为自己的答案辩护,而对自己的错误答案变得更加自信。
- 结果:这些“推理”技巧并未 consistently 奏效。事实上,它们有时会让幻觉变得更糟。助手会自信地解释为什么他们的虚假库是真实的,这使得你更难发现错误。
5. “工具”解决方案(查阅电话簿)
研究人员测试了给助手一个简单的工具:一个按钮,用于检查库是否确实存在于官方数据库(PyPI)中。
- 类比:与其让助手猜测,不如给他们一本电话簿。如果他们说“我将使用 Spagetti",他们会查阅电话簿,发现那里没有,然后说:“哦,那不存在。”
- 结果:这很有帮助,但并非万能药。助手有时仍会忘记查阅电话簿,或者查阅后决定忽略结果,坚持使用虚假名称。
核心结论:LIBHALLUBENCH
由于这是一个重大问题,作者创建了一个名为LIBHALLUBENCH的新测试。
- 类比:可以将其视为专门为检测自动驾驶汽车是否会幻觉出一个虚假的停车标志而设计的“驾驶考试”。它包含数千个棘手的问题(例如“给我一个来自 2025 年的库”或“使用这个拼写错误的名称”),以系统地测试不同 AI 模型编造虚假工具的可能性。
你为什么要关心?
如果你是一名使用 AI 编写代码的开发者,而 AI 编造了一个虚假库,当你尝试运行代码时,你的程序就会崩溃。更糟糕的是,如果黑客创建了一个与 AI 编造的库相匹配的虚假库(这种技巧称为"slopsquatting"),你的系统可能会感染恶意软件。
简而言之:AI 代码生成器很棒,但当它们不知道答案时,它们会表现出危险的自信。它们会编造虚假工具来满足你的请求,特别是当你要求来自未来的东西或犯下小拼写错误时。我们需要更好的方法来阻止它们凭空捏造。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。