← 最新论文
🤖 AI

Evaluating Inference-Time Defenses Against Package Hallucination in LLM-Generated Code

本文通过纠正评估偏差,系统地评估了多种模型和语言下的七种推理时防御机制,并证明了虽然贪婪解码(Greedy decoding)提供了最佳的效用权衡,但 RAG 和自我修正(Self-Refine)对于抵御对抗性提示至关重要,从而解决了大语言模型生成的代码幻觉出不存在的软件包这一关键问题。

原作者: Alberick Euraste Djire, Iyiola E. Olatunji, Melissa Tessa, Earl T. Barr, Jacques Klein, Tegawendé F. Bissyandé

发布于 2026-08-25
📖 1 分钟阅读☕ 轻松阅读

原作者: Alberick Euraste Djire, Iyiola E. Olatunji, Melissa Tessa, Earl T. Barr, Jacques Klein, Tegawendé F. Bissyandé

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

在现代软件开发领域,程序员经常依赖人工智能助手来编写代码。这些被称为大型语言模型的系统充当了不知疲倦的伙伴,能够快速建议整个函数或修复错误。为了让这些建议生效,这些模型经常会建议添加外部软件包——即处理特定任务(如连接数据库或创建图表)的预写代码集合。问题在于,人工智能可能会发明一个听起来非常真实、但实际上并不存在于任何官方软件库中的包名。这种现象被称为“软件包幻觉”。如果开发者盲目信任该建议并尝试安装这个不存在的软件包,他们可能会在无意中下载到由黑客注册虚假名称而创建的恶意文件。这为软件供应链创造了一个危险的后门,允许攻击者将有害代码注入到可能被数百万人使用的应用程序中。

一个研究小组致力于了解这些幻觉发生的频率,以及特定的技术是否可以在代码完成之前阻止它们。他们专注于较小的开源人工智能模型,这些模型因运行成本较低而被广泛使用,尽管它们比大型对应模型更容易出错。研究人员在四种不同的编程语言中测试了这些模型:Python、JavaScript、Ruby 和 Rust。他们发现,以往衡量这些错误的方法存在缺陷。许多早期的研究将编程语言自带的标准内置工具误计为幻觉,仅仅因为这些工具未列在外部软件包库中。通过纠正这一计数错误,该团队发现 Python 的幻觉率实际上比之前认为的要低,尽管仍然显著。

他们工作的核心在于测试七种不同的策略,以观察是否能减少模型生成的虚假软件包名称。其中一些策略涉及改变模型选择下一个词的方式,而另一些则要求模型检查自己的工作,或在回答前查阅经过验证的数据库中的信息。研究人员发现,没有哪种单一方法能在所有情况下都表现最好。一种被称为“检索增强生成”(Retrieval-Augmented Generation)的技术被证明对大多数语言都非常有效,它强制模型在说话前咨询真实的软件包数据库,从而显著降低了错误率。然而,同样的技术有时会让 JavaScript 的情况变得更糟,这表明解决方案在很大程度上取决于所使用的特定语言。另一种方法是让模型对自己的建议进行批判和重写,这种方法对大型模型效果良好,但对最小的模型却失败了,因为小模型往往无法识别自己的错误。

该团队还引入了一种新的衡量方式,用于判断模型的建议是否真的有用,而不仅仅是正确。他们发现,一些成功阻止了幻觉的策略同时也阻止了模型提出任何软件包建议,导致开发者无药可用。最平衡的方法是一种简单的做法,即模型每次都简单地选择概率最高的下一个词,而不是尝试不太可能的选项。这种“贪婪”方法在他们测试的模型中,在安全性与实用性之间提供了最佳的权衡。

当研究人员在敌对环境下测试这些防御措施时,出现了或许是最令人震惊的发现。他们创建了一些提示词,通过将虚假名称直接嵌入指令中,试图诱导模型推荐虚假的软件包。在这种对抗性条件下,错误率飙升,比正常请求高出了多达 45 个百分点。在这种敌对设置下,改变模型选词的简单技巧完全失效。只有那些依赖于核实外部真实数据库或强制模型进行自我检查的方法才能抵御攻击。研究人员得出结论,虽然简单的调整可以在正常使用中有所帮助,但要保护软件免受蓄意攻击者的侵害,需要一个能够针对外部世界验证事实或严格检查自身逻辑的系统。这项研究强调,最好的防御并非一劳永逸的通用方案,而是要根据具体的威胁和所涉及的编程语言进行仔细匹配的选择。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →