Is ChatGPT a Good Software Librarian? An Exploratory Study on the Use of ChatGPT for Software Library Recommendations

📄 arXiv: 2408.05128v1 📥 PDF

作者: Jasmine Latendresse, SayedHassan Khatoonabadi, Ahmad Abdellatif, Emad Shihab

分类: cs.SE, cs.AI, cs.LG

发布日期: 2024-08-09

备注: Submitted


💡 一句话要点

评估ChatGPT作为软件库推荐工具的有效性,揭示其优势与局限

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 软件库推荐 大型语言模型 ChatGPT 代码生成 许可证分析

📋 核心要点

  1. 开发者依赖LLM简化编码,但LLM在软件库推荐方面的有效性尚不明确,存在潜在风险。
  2. 通过分析ChatGPT在Stack Overflow问题上的代码生成,评估其软件库推荐的优缺点。
  3. ChatGPT倾向于推荐流行库,但存在许可证限制和无法直接使用的问题,需改进信息披露。

📝 摘要(中文)

软件库在软件系统的功能、效率和可维护性方面起着关键作用。随着开发者越来越依赖大型语言模型(LLMs)来简化编码流程,这些模型在推荐合适的库方面的有效性变得至关重要,但目前尚未得到充分探索。本文评估了ChatGPT作为软件库推荐工具的有效性,并确定了需要改进的领域。我们使用GPT-3.5 Turbo对10,000个Stack Overflow问题生成Python代码,进行了一项实证研究。研究结果表明,ChatGPT使用第三方库的频率比人类开发者高出近10%,并且偏爱广泛采用和成熟的选项。然而,14.2%的推荐库具有限制性的copyleft许可证,ChatGPT没有明确说明。此外,6.5%的库无法直接使用,导致开发者可能感到困惑并浪费时间。虽然ChatGPT可以成为一个有效的软件库推荐工具,但应通过提供更明确的可维护性指标和许可信息来改进。我们建议开发者在将LLM生成的代码集成到项目中之前,实施严格的依赖管理实践并仔细检查库许可证。

🔬 方法详解

问题定义:论文旨在评估ChatGPT作为软件库推荐工具的有效性。现有方法,即人工选择软件库,耗时且易出错。而直接使用LLM生成的代码,开发者可能忽略库的许可证限制和兼容性问题,导致潜在的法律风险和开发困难。

核心思路:论文的核心思路是通过实证研究,分析ChatGPT在实际编程场景中(Stack Overflow问题)的软件库推荐行为,量化其推荐库的质量、许可证类型和可用性,从而揭示其优势和局限性。

技术框架:该研究主要包含以下几个阶段:1) 从Stack Overflow收集10,000个Python编程问题;2) 使用GPT-3.5 Turbo为每个问题生成Python代码;3) 提取生成的代码中使用的第三方库;4) 分析这些库的流行度、许可证类型(如MIT, GPL)和可用性(是否可以直接运行);5) 将ChatGPT的推荐结果与人类开发者的选择进行比较。

关键创新:该研究的关键创新在于首次系统性地评估了LLM(特别是ChatGPT)在软件库推荐方面的表现,并量化了其潜在的风险。以往的研究主要集中在LLM的代码生成能力,而忽略了其在软件生态系统中的角色。

关键设计:研究的关键设计包括:1) 使用Stack Overflow问题作为真实世界的编程场景,保证研究的实用性;2) 采用GPT-3.5 Turbo作为研究对象,代表了当前主流的LLM技术水平;3) 关注库的许可证类型和可用性,这些是开发者在选择库时需要考虑的重要因素。

🖼️ 关键图片

fig_0

📊 实验亮点

研究发现,ChatGPT使用第三方库的频率比人类开发者高出近10%,但14.2%的推荐库具有限制性的copyleft许可证,且6.5%的库无法直接使用。这表明ChatGPT在软件库推荐方面存在一定的风险,需要进一步改进。

🎯 应用场景

该研究成果可应用于改进LLM的代码生成能力,使其在推荐软件库时更加智能和安全。开发者可以利用这些发现,在集成LLM生成的代码时更加谨慎,避免潜在的法律风险和技术问题。此外,该研究也为软件库推荐系统的设计提供了新的思路,例如可以考虑将许可证信息和可用性指标纳入推荐算法中。

📄 摘要(原文)

Software libraries play a critical role in the functionality, efficiency, and maintainability of software systems. As developers increasingly rely on Large Language Models (LLMs) to streamline their coding processes, the effectiveness of these models in recommending appropriate libraries becomes crucial yet remains largely unexplored. In this paper, we assess the effectiveness of ChatGPT as a software librarian and identify areas for improvement. We conducted an empirical study using GPT-3.5 Turbo to generate Python code for 10,000 Stack Overflow questions. Our findings show that ChatGPT uses third-party libraries nearly 10% more often than human developers, favoring widely adopted and well-established options. However, 14.2% of the recommended libraries had restrictive copyleft licenses, which were not explicitly communicated by ChatGPT. Additionally, 6.5% of the libraries did not work out of the box, leading to potential developer confusion and wasted time. While ChatGPT can be an effective software librarian, it should be improved by providing more explicit information on maintainability metrics and licensing. We recommend that developers implement rigorous dependency management practices and double-check library licenses before integrating LLM-generated code into their projects.