From LLMs to LLM-based Agents for Software Engineering: A Survey of Current, Challenges and Future
作者: Haolin Jin, Linghan Huang, Haipeng Cai, Jun Yan, Bo Li, Huaming Chen
分类: cs.SE, cs.AI, cs.CL
发布日期: 2024-08-05 (更新: 2025-04-13)
💡 一句话要点
综述LLM与LLM-based Agent在软件工程中的应用、挑战与未来方向
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 大型语言模型 软件工程 LLM-based Agent 代码生成 自主决策
📋 核心要点
- 现有LLM在软件工程领域应用广泛,但缺乏自主性和自学习能力,难以应对复杂任务。
- 论文调研了基于LLM的Agent,其以LLM为核心进行决策和行动,旨在弥补LLM的不足。
- 论文对需求工程、代码生成等六个关键主题进行了综述,区分了LLM和Agent的异同。
📝 摘要(中文)
随着大型语言模型(LLM)的兴起,研究人员越来越多地探索其在软件工程等各个垂直领域的应用。LLM在代码生成和漏洞检测等领域取得了显著成功。然而,它们也表现出许多局限性和缺点。基于LLM的Agent是一种具有通用人工智能(AGI)潜力的新技术,它将LLM作为决策和行动的核心,解决了LLM的一些固有局限性,例如缺乏自主性和自我改进能力。尽管有大量的研究和调查探讨了在软件工程中使用LLM的可能性,但LLM和基于LLM的Agent之间缺乏明确的区分。对于统一的标准和基准来将LLM解决方案定义为领域内的基于LLM的Agent,仍处于早期阶段。在本调查中,我们广泛地研究了LLM和基于LLM的Agent在软件工程中的当前实践和解决方案。特别是,我们总结了六个关键主题:需求工程、代码生成、自主决策、软件设计、测试生成和软件维护。我们回顾并区分了LLM和基于LLM的Agent在这六个主题中的工作,检查它们在任务、基准和评估指标上的异同。最后,我们讨论了所使用的模型和基准,并全面分析了它们在软件工程中的应用和有效性。我们预计这项工作将为推动基于LLM的Agent在软件工程中的未来研究提供一些启示。
🔬 方法详解
问题定义:论文旨在解决大型语言模型(LLM)在软件工程领域应用时存在的局限性,例如缺乏自主性和自我改进能力。现有方法通常直接使用LLM进行代码生成、漏洞检测等任务,但难以处理需要长期规划和复杂决策的任务。此外,缺乏统一的标准和基准来评估LLM解决方案作为基于LLM的Agent的有效性。
核心思路:论文的核心思路是研究基于LLM的Agent,该Agent以LLM为核心,通过集成外部工具和环境反馈,实现自主决策和行动。这种Agent能够克服LLM的局限性,更好地适应软件工程中的复杂任务。论文通过综述现有研究,区分LLM和基于LLM的Agent在不同软件工程任务中的应用,并分析其优缺点。
技术框架:论文采用综述研究的方法,对现有文献进行整理和分析。其框架主要包括:1) 介绍LLM和基于LLM的Agent的基本概念;2) 总结LLM和基于LLM的Agent在需求工程、代码生成、自主决策、软件设计、测试生成和软件维护六个关键主题中的应用;3) 比较LLM和基于LLM的Agent在任务、基准和评估指标上的异同;4) 讨论所使用的模型和基准,并分析其有效性;5) 展望未来研究方向。
关键创新:论文的主要创新在于对LLM和基于LLM的Agent在软件工程领域的应用进行了系统性的综述和比较,明确区分了两者的概念和应用场景。此外,论文还指出了当前研究的不足之处,并提出了未来研究方向,为该领域的研究提供了指导。
关键设计:论文没有提出新的模型或算法,而是对现有研究进行了整理和分析。其关键设计在于对六个关键主题的划分,以及对LLM和基于LLM的Agent的区分。论文通过对不同任务、基准和评估指标的比较,揭示了两者的优缺点,为研究人员提供了有价值的参考。
🖼️ 关键图片
📊 实验亮点
该论文是一篇综述性文章,没有具体的实验结果。其亮点在于对LLM和LLM-based Agent在软件工程领域的应用进行了全面的梳理和分析,为研究人员提供了有价值的参考。
🎯 应用场景
该研究成果可应用于软件开发的各个阶段,例如需求分析、代码生成、测试和维护。基于LLM的Agent有望实现软件开发的自动化和智能化,提高开发效率和软件质量。未来,该技术还可能应用于软件工程教育和研究,促进相关领域的发展。
📄 摘要(原文)
With the rise of large language models (LLMs), researchers are increasingly exploring their applications in var ious vertical domains, such as software engineering. LLMs have achieved remarkable success in areas including code generation and vulnerability detection. However, they also exhibit numerous limitations and shortcomings. LLM-based agents, a novel tech nology with the potential for Artificial General Intelligence (AGI), combine LLMs as the core for decision-making and action-taking, addressing some of the inherent limitations of LLMs such as lack of autonomy and self-improvement. Despite numerous studies and surveys exploring the possibility of using LLMs in software engineering, it lacks a clear distinction between LLMs and LLM based agents. It is still in its early stage for a unified standard and benchmarking to qualify an LLM solution as an LLM-based agent in its domain. In this survey, we broadly investigate the current practice and solutions for LLMs and LLM-based agents for software engineering. In particular we summarise six key topics: requirement engineering, code generation, autonomous decision-making, software design, test generation, and software maintenance. We review and differentiate the work of LLMs and LLM-based agents from these six topics, examining their differences and similarities in tasks, benchmarks, and evaluation metrics. Finally, we discuss the models and benchmarks used, providing a comprehensive analysis of their applications and effectiveness in software engineering. We anticipate this work will shed some lights on pushing the boundaries of LLM-based agents in software engineering for future research.