摘要
近年来,Python 和 JavaScript 等流行编程语言对集中式软件包仓库和开源软件的依赖,再加上代码生成大型语言模型 (LLMs) 的出现,给软件供应链带来了新型威胁:软件包幻觉。这些幻觉源于使用 LLMs 生成代码时出现的与事实冲突的错误,代表了一种新型的软件包混淆攻击,对软件供应链的完整性构成严重威胁。本文对不同编程语言、设置和参数下的软件包幻觉进行了严格而全面的评估,探讨了各种模型和配置如何影响生成错误软件包推荐的可能性,并确定了这种现象的根本原因。我们使用 16 种流行的代码生成 LLMs 和两个独特的提示数据集,在两种编程语言中生成了 576,000 个代码样本,并分析了软件包幻觉。我们的发现表明,商业模型的平均幻觉软件包比例至少为 5.2%,开源模型的比例为 21.7%,其中包括 205,474 个独特的幻觉软件包名称,进一步突出了这种威胁的严重性和普遍性。为了克服这个问题,我们实施了几种幻觉缓解策略,并证明这些策略能够显著减少软件包幻觉的数量,同时保持代码质量。我们的实验和发现表明,在使用最先进的 LLMs 生成代码时,软件包幻觉是一种持续且系统性的现象,也是一个需要研究界紧急关注的重大挑战。