Strategies for Guiding LLMs to Use Software Design Patterns: A Case of Singleton

📄 arXiv: 2605.26898v1 📥 PDF

作者: Viktor Kjellberg, Farnaz Fotrousi, Miroslaw Staron

分类: cs.SE, cs.AI

发布日期: 2026-05-26

备注: Accepted at PROMISE 2026

DOI: 10.1145/3803846.3807469


💡 一句话要点

探索引导LLM应用Singleton设计模式的策略,提升代码质量与一致性

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

关键词: 大型语言模型 软件设计模式 Singleton模式 代码生成 提示工程

📋 核心要点

  1. 现有LLM在代码生成中难以始终如一地应用设计模式,影响软件质量和可维护性。
  2. 论文探索多种提示策略,引导LLM在代码生成中应用Singleton设计模式。
  3. 实验表明,迭代二元反馈是引导LLM应用Singleton模式的有效策略,可提升代码功能。

📝 摘要(中文)

大型语言模型(LLM)能够从自然语言提示生成功能性源代码,但常常无法始终如一地遵循更高层次的架构结构或设计模式。由于LLM在软件工程中的应用日益广泛,其将既定设计原则应用于生成代码的能力对于软件产品的长期成功至关重要。因此,本文旨在确定引导LLM将设计模式融入生成源代码的策略。我们设计了一个计算实验,评估了13个LLM使用四种提示策略(指令、二元自动反馈、广泛自动反馈以及带有少量样本提示的广泛反馈)生成遵循Singleton设计模式的代码的能力,实验基于HumanEval-X中的164个Java编码挑战。结果表明,引导LLM包含设计模式的最佳策略很大程度上取决于模型的类型。但总体而言,迭代二元反馈在保持或提高代码功能的同时,提供了与Singleton的最佳对齐。通过指令引导,Llama 3.3在100%的情况下生成了Singleton类,并提高了代码功能,使通过的测试数量增加了34.1个百分点。Qwen 3 (8B)使用二元反馈将与Singleton的对齐提高到99.2%,功能提高到58.6%。我们的结果表明,即使是简单的策略也可以用来引导LLM使用设计模式。

🔬 方法详解

问题定义:论文旨在解决大型语言模型(LLM)在代码生成过程中难以一致应用软件设计模式的问题。现有方法生成的代码往往缺乏高级架构结构和设计模式,导致代码质量下降,可维护性降低。因此,如何引导LLM生成符合特定设计模式的代码成为一个重要的研究问题。

核心思路:论文的核心思路是通过不同的提示策略来引导LLM生成符合Singleton设计模式的代码。通过比较不同策略的效果,找到最有效的引导方法。核心在于探索如何利用提示工程,使LLM能够更好地理解和应用设计模式。

技术框架:论文采用计算实验的方法,评估13个LLM在不同提示策略下的表现。实验流程包括:1) 设计四种提示策略:指令、二元自动反馈、广泛自动反馈以及带有少量样本提示的广泛反馈;2) 使用HumanEval-X中的164个Java编码挑战作为测试用例;3) 评估LLM生成的代码是否符合Singleton设计模式,并测试代码的功能性。

关键创新:论文的关键创新在于系统性地研究了多种提示策略对LLM应用设计模式的影响。通过实验对比,揭示了不同策略的优缺点,并找到了在特定模型上表现最佳的策略。此外,论文还强调了迭代反馈的重要性,即使是简单的二元反馈也能显著提升LLM应用设计模式的能力。

关键设计:四种提示策略的设计是关键。指令策略直接指示LLM使用Singleton模式;二元自动反馈提供简单的“是/否”反馈,告知LLM生成的代码是否符合Singleton模式;广泛自动反馈提供更详细的反馈信息;带有少量样本提示的广泛反馈则提供一些示例代码,帮助LLM理解Singleton模式。实验中,使用HumanEval-X评估代码的功能性,并设计指标评估代码与Singleton模式的对齐程度。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,迭代二元反馈是引导LLM应用Singleton设计模式的有效策略。例如,使用二元反馈,Qwen 3 (8B)模型与Singleton的对齐度提高到99.2%,代码功能性提高到58.6%。Llama 3.3通过指令引导,在100%的情况下生成了Singleton类,并通过的测试数量增加了34.1个百分点。这些数据表明,简单的提示策略也能显著提升LLM应用设计模式的能力。

🎯 应用场景

该研究成果可应用于软件开发的自动化代码生成,提高生成代码的质量和一致性。通过引导LLM应用设计模式,可以减少人工干预,提升开发效率,并降低软件维护成本。未来,该方法可以推广到其他设计模式的应用,构建更健壮、可维护的软件系统。

📄 摘要(原文)

Large Language Models (LLMs) can generate functional source code from natural-language prompts, but often fail to consistently follow higher-level architectural structures or design patterns. Since LLMs are increasingly used in software engineering, their ability to apply established design principles to generated code is crucial to the long-term success of software products. Therefore, the goal of this paper is to identify strategies for guiding LLMs to incorporate design patterns into the generated source code. We designed a computational experiment to evaluate the ability of 13 LLMs to generate code that follows the Singleton design pattern, using four prompting strategies: instructions, binary automated feedback, extensive automated feedback, and extensive feedback with few-shot prompts, in 164 Java coding challenges from HumanEval-X. Our results shows that the optimal strategy to guide LLMs to include design patterns depends heavily on the type of model. Still, overall, iterative binary feedback provides the best alignment with Singleton while preserving or improving the code's functionality. With guiding with instructions, Llama 3.3 generated Singleton classes in 100% of cases and improved code functionality, increasing the number of tests passed by 34.1 percentage points. It achieved a similar result with guidance through instructions and binary feedback. Qwen 3 (8B) increased the alignment with Singleton to 99.2% and the functionality to 58.6% using binary feedback. Our result suggests that even simple strategies can be used to guide LLMs to use design patterns.