论文

评估 LLM 生成的代码中针对包幻觉的推理时间防御

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

模型评测安全与风险评测

摘要

LLM 越来越多地用于代码生成,但它们经常产生不存在的软件包的幻觉,从而在软件供应链中创建可利用的入口点。我们对这个问题做出了四点贡献。首先,我们表明,先前的评估方法通过将标准库模块错误分类为某些语言中的幻觉,系统性地提高了幻觉率。对于Python来说,高估达到了9.4个百分点。其次,我们评估了七种用于减轻包幻觉的推理时间防御,包括五种引导解码策略(贪婪、对比、DoLa、助推和活动层对比解码)、迭代自我细化方法(Self-Refine)和基于检索增强生成(RAG)的防御。跨越五个系列和四种编程语言(Python、JavaScript、Ruby、 Rust),RAG 降低了 32 种模型语言配置中 18 种的包幻觉率 (PHR)。第三,我们引入包实用程序(PU)来评估防御是否保留有效且与任务相关的建议。在评估的策略中,贪婪解码提供了最强的平均缓解——效用权衡。第四,我们在使用伪造的包名称的对抗性提示下对所有策略进行压力测试,发现 PHR 相对于标准提示激增高达 45 个百分点,其中 Ruby 始终是最容易受到攻击的语言 (80.9--95.2\%)。在对抗条件下,RAG 和 Self-Refine 优于所有仅解码策略,这表明当提示具有积极敌意时,稳健的防御需要外部证据核验或迭代自我验证。我们的结果将包幻觉重新定义为测量问题和解码时间控制问题,并且它们表明防御的选择必须与威胁模型和推荐实用程序相匹配。