How Robust are LLM-Generated Library Imports? An Empirical Study using Stack Overflow
作者: Jasmine Latendresse, SayedHassan Khatoonabadi, Emad Shihab
分类: cs.SE, cs.AI, cs.LG
发布日期: 2025-07-14
💡 一句话要点
评估LLM生成代码中库导入的鲁棒性:基于Stack Overflow的实证研究
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 大型语言模型 代码生成 软件库 依赖管理 实证研究
📋 核心要点
- 现代软件依赖于库,但LLM在代码生成中如何选择和使用库仍然缺乏深入理解。
- 通过分析LLM在解决Stack Overflow问题时导入库的行为,揭示其偏好和潜在问题。
- 研究发现LLM偏好第三方库,但存在依赖解析和安装指导方面的不足,影响代码的即用性。
📝 摘要(中文)
本文针对大型语言模型(LLM)在软件库推荐方面的表现进行了实证研究。研究选取了六个先进的LLM(包括商业和开源模型),并要求它们解决来自Stack Overflow的真实Python编程问题。分析了LLM导入的库类型、库的特征以及推荐的即用性。结果表明,LLM倾向于选择第三方库而非标准库,并且通常推荐成熟、流行和许可宽松的依赖项。然而,研究也发现可用性方面存在差距:4.6%的库由于导入名称和可安装包之间的结构不匹配而无法自动解析,并且只有两个模型提供了安装指导。虽然生成的代码在技术上有效,但缺乏上下文支持将手动解决依赖关系的负担转移给了用户。研究结果为开发者和研究人员提供了可操作的见解,并强调了在软件依赖关系上下文中提高LLM生成代码的可靠性和可用性的机会。
🔬 方法详解
问题定义:论文旨在评估大型语言模型(LLM)在生成代码时,对于软件库导入的鲁棒性。现有方法缺乏对LLM如何选择、推荐和使用软件库的系统性评估,尤其是在实际编程场景中,LLM推荐的库可能存在可用性问题,例如无法自动解析依赖关系或缺乏安装指导,这增加了开发者的负担。
核心思路:论文的核心思路是通过实证研究,分析LLM在解决真实编程问题时对软件库的选择和使用行为。通过分析LLM生成的代码中导入的库类型、库的特征(如流行度、许可类型)以及代码的即用性,来评估LLM在库导入方面的鲁棒性。
技术框架:研究框架主要包括以下几个步骤:1) 从Stack Overflow收集真实的Python编程问题;2) 选择六个代表性的LLM(包括商业和开源模型);3) 使用这些LLM解决收集到的编程问题,并记录它们生成的代码;4) 分析生成的代码中导入的库,包括库的类型(标准库或第三方库)、特征(如流行度、许可类型)以及是否能够自动解析依赖关系;5) 评估LLM是否提供了安装指导。
关键创新:论文的关键创新在于对LLM生成代码中库导入行为的系统性实证分析。与以往研究主要关注LLM的代码生成能力不同,本文重点关注LLM如何选择和使用软件库,并揭示了LLM在库导入方面存在的潜在问题,例如依赖解析失败和缺乏安装指导。
关键设计:研究中,选择了Stack Overflow作为编程问题的来源,以保证问题的真实性和代表性。选择了六个具有代表性的LLM,包括商业模型(如GPT-3)和开源模型(如CodeGen),以保证研究结果的广泛适用性。在分析库的特征时,考虑了库的流行度(通过下载量衡量)和许可类型(如MIT、Apache 2.0),以评估LLM对不同类型库的偏好。
🖼️ 关键图片
📊 实验亮点
研究发现LLM倾向于选择第三方库而非标准库,并且通常推荐成熟、流行和许可宽松的依赖项。然而,4.6%的库由于导入名称和可安装包之间的结构不匹配而无法自动解析。只有两个模型提供了安装指导,表明LLM在依赖管理方面仍有改进空间。
🎯 应用场景
该研究结果可应用于改进LLM的代码生成能力,使其能够更智能地选择和使用软件库,并提供更完善的依赖管理和安装指导。这有助于提高LLM生成代码的可用性和可靠性,降低开发者的负担,并促进LLM在软件开发领域的更广泛应用。
📄 摘要(原文)
Software libraries are central to the functionality, security, and maintainability of modern code. As developers increasingly turn to Large Language Models (LLMs) to assist with programming tasks, understanding how these models recommend libraries is essential. In this paper, we conduct an empirical study of six state-of-the-art LLMs, both proprietary and open-source, by prompting them to solve real-world Python problems sourced from Stack Overflow. We analyze the types of libraries they import, the characteristics of those libraries, and the extent to which the recommendations are usable out of the box. Our results show that LLMs predominantly favour third-party libraries over standard ones, and often recommend mature, popular, and permissively licensed dependencies. However, we also identify gaps in usability: 4.6% of the libraries could not be resolved automatically due to structural mismatches between import names and installable packages, and only two models (out of six) provided installation guidance. While the generated code is technically valid, the lack of contextual support places the burden of manually resolving dependencies on the user. Our findings offer actionable insights for both developers and researchers, and highlight opportunities to improve the reliability and usability of LLM-generated code in the context of software dependencies.