Do Prompt Patterns Affect Code Quality? A First Empirical Assessment of ChatGPT-Generated Code

📄 arXiv: 2504.13656v1 📥 PDF

作者: Antonio Della Porta, Stefano Lambiase, Fabio Palomba

分类: cs.SE, cs.AI

发布日期: 2025-04-18


💡 一句话要点

评估提示模式对ChatGPT生成代码质量的影响:一项初步实证研究

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

关键词: 代码生成 大型语言模型 提示工程 代码质量 实证研究

📋 核心要点

  1. 大型语言模型在代码生成中表现出潜力,但其生成代码的质量和一致性仍面临挑战,影响软件的可理解性和维护。
  2. 该研究旨在评估不同提示模式(如零样本、思维链和少样本提示)对ChatGPT生成代码质量的影响,以期优化LLM在代码生成中的应用。
  3. 通过分析Dev-GPT数据集中的7583个代码文件,研究发现不同的提示模式对代码的可维护性、安全性和可靠性没有显著影响。

📝 摘要(中文)

大型语言模型(LLMs)正在迅速改变软件开发,尤其是在代码生成方面。然而,它们不一致的性能,容易出现幻觉和质量问题,使得程序理解变得复杂,并阻碍了可维护性。研究表明,提示工程——设计输入以引导LLMs生成相关输出的实践——可能有助于应对这些挑战。在这方面,研究人员引入了提示模式,即旨在指导用户制定请求的结构化模板。然而,提示模式对代码质量的影响尚未得到彻底研究。更好地理解这种关系对于增进我们关于如何有效使用LLMs进行代码生成的集体知识至关重要,从而提高它们在当代软件开发中的可理解性。本文使用Dev-GPT数据集,实证研究了提示模式对代码质量(特别是可维护性、安全性和可靠性)的影响。结果表明,零样本提示是最常见的,其次是带有思维链的零样本提示和少样本提示。对跨质量指标的7583个代码文件的分析显示,问题极少,Kruskal-Wallis检验表明模式之间没有显着差异,这表明提示结构可能不会显着影响ChatGPT辅助代码生成中的这些质量指标。

🔬 方法详解

问题定义:论文旨在研究在使用ChatGPT进行代码生成时,不同的提示模式(prompt patterns)是否会对生成的代码质量产生影响。现有方法在使用LLM生成代码时,由于LLM的性能不稳定,容易产生幻觉和质量问题,从而影响代码的可理解性和可维护性。因此,如何通过优化提示来提高代码质量是一个重要的研究问题。

核心思路:论文的核心思路是通过实证研究,分析不同的提示模式(例如零样本提示、带有思维链的零样本提示和少样本提示)对ChatGPT生成代码的质量指标(可维护性、安全性和可靠性)的影响。通过比较不同提示模式下生成的代码的质量,来判断提示模式是否对代码质量有显著影响。

技术框架:该研究使用Dev-GPT数据集,该数据集包含使用不同提示模式生成的代码。研究首先对数据集中的代码文件进行质量评估,然后使用Kruskal-Wallis检验来比较不同提示模式下生成的代码在质量指标上的差异。整个流程包括数据收集、代码质量评估和统计分析三个主要阶段。

关键创新:该研究的创新之处在于首次对提示模式对ChatGPT生成代码质量的影响进行了系统的实证研究。虽然提示工程在LLM应用中越来越重要,但很少有研究关注提示模式对代码质量的直接影响。该研究填补了这一空白,为更好地利用LLM进行代码生成提供了经验证据。

关键设计:研究中使用了三种主要的提示模式:零样本提示(直接给出任务描述)、带有思维链的零样本提示(要求LLM逐步推理)和少样本提示(提供一些示例代码)。代码质量的评估指标包括可维护性、安全性和可靠性。Kruskal-Wallis检验用于比较不同提示模式下代码质量指标的差异,显著性水平设置为0.05。

🖼️ 关键图片

img_0

📊 实验亮点

研究分析了Dev-GPT数据集中7583个代码文件,发现零样本提示是最常用的模式。Kruskal-Wallis检验表明,不同的提示模式对代码的可维护性、安全性和可靠性没有显著影响,提示结构的改变可能不会显著提升ChatGPT辅助代码生成的质量。

🎯 应用场景

该研究成果可应用于软件开发领域,帮助开发者更好地利用大型语言模型生成高质量的代码。通过了解不同提示模式对代码质量的影响,开发者可以选择合适的提示策略,提高代码的可维护性、安全性和可靠性,从而降低开发成本,提高软件质量。未来的研究可以进一步探索更复杂的提示模式和更细粒度的代码质量指标。

📄 摘要(原文)

Large Language Models (LLMs) have rapidly transformed software development, especially in code generation. However, their inconsistent performance, prone to hallucinations and quality issues, complicates program comprehension and hinders maintainability. Research indicates that prompt engineering-the practice of designing inputs to direct LLMs toward generating relevant outputs-may help address these challenges. In this regard, researchers have introduced prompt patterns, structured templates intended to guide users in formulating their requests. However, the influence of prompt patterns on code quality has yet to be thoroughly investigated. An improved understanding of this relationship would be essential to advancing our collective knowledge on how to effectively use LLMs for code generation, thereby enhancing their understandability in contemporary software development. This paper empirically investigates the impact of prompt patterns on code quality, specifically maintainability, security, and reliability, using the Dev-GPT dataset. Results show that Zero-Shot prompting is most common, followed by Zero-Shot with Chain-of-Thought and Few-Shot. Analysis of 7583 code files across quality metrics revealed minimal issues, with Kruskal-Wallis tests indicating no significant differences among patterns, suggesting that prompt structure may not substantially impact these quality metrics in ChatGPT-assisted code generation.