Agents in Software Engineering: Survey, Landscape, and Vision
作者: Yanlin Wang, Wanjun Zhong, Yanxian Huang, Ensheng Shi, Min Yang, Jiachi Chen, Hui Li, Yuchi Ma, Qianxiang Wang, Zibin Zheng
分类: cs.SE, cs.AI, cs.CL
发布日期: 2024-09-13 (更新: 2024-09-23)
备注: 12 pages, 4 figures
🔗 代码/项目: GITHUB
💡 一句话要点
首个LLM Agent在软件工程领域应用的综述,提出包含感知、记忆和行动的关键模块框架。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 大型语言模型 软件工程 Agent 综述 感知 记忆 行动 自动化软件开发
📋 核心要点
- 现有研究缺乏对LLM Agent在软件工程领域应用的系统性综述,难以把握领域发展脉络。
- 论文提出一个包含感知、记忆和行动三大模块的LLM Agent框架,用于指导软件工程任务的优化。
- 论文总结了当前LLM Agent与软件工程结合的挑战,并展望了未来的研究方向和潜在机遇。
📝 摘要(中文)
近年来,大型语言模型(LLMs)取得了显著的成功,并被广泛应用于各种下游任务,尤其是在软件工程(SE)领域。我们发现,许多将LLMs与SE相结合的研究都明确或隐含地采用了Agent的概念。然而,目前缺乏深入的综述来梳理现有工作的发展背景,分析现有工作如何结合基于LLM的Agent技术来优化各种任务,并阐明基于LLM的Agent在SE中的框架。在本文中,我们对基于LLM的Agent与SE相结合的研究进行了首次综述,并提出了一个基于LLM的Agent在SE中的框架,该框架包括三个关键模块:感知、记忆和行动。我们还总结了当前将这两个领域结合起来的挑战,并针对现有挑战提出了未来的机遇。我们在GitHub上维护了一个相关论文的仓库:https://github.com/DeepSoftwareAnalytics/Awesome-Agent4SE。
🔬 方法详解
问题定义:现有方法缺乏对大型语言模型(LLMs)驱动的Agent在软件工程(SE)领域应用的系统性梳理。虽然许多研究已经将LLMs与SE任务结合,并采用了Agent的概念,但缺乏一个统一的框架来理解和组织这些工作。这使得研究人员难以把握领域的发展趋势,也阻碍了LLM Agent在SE领域更广泛的应用。
核心思路:论文的核心思路是通过对现有文献的系统性回顾和分析,提炼出一个通用的LLM Agent框架,该框架能够涵盖当前SE领域中基于LLM Agent的各种应用。通过将不同的应用场景映射到该框架的不同模块,可以更好地理解LLM Agent在SE中的作用和潜力。
技术框架:论文提出的LLM Agent框架包含三个关键模块:感知(Perception)、记忆(Memory)和行动(Action)。感知模块负责接收和理解外部信息,例如代码、需求文档、用户反馈等。记忆模块负责存储和管理Agent的知识和经验,包括长期记忆和短期记忆。行动模块负责根据感知模块的输入和记忆模块的知识,执行相应的操作,例如代码生成、测试、调试等。
关键创新:该综述的关键创新在于首次系统性地梳理了LLM Agent在软件工程领域的应用,并提出了一个通用的框架。该框架不仅可以帮助研究人员更好地理解现有工作,还可以指导未来的研究方向。此外,论文还总结了当前面临的挑战,并提出了未来的机遇,为领域发展提供了有价值的参考。
关键设计:论文没有涉及具体的参数设置、损失函数或网络结构等技术细节,因为它是一篇综述文章,主要关注的是对现有研究的整理和分析。未来的研究可以基于该框架,针对具体的软件工程任务,设计更有效的LLM Agent,并优化其各个模块的性能。
🖼️ 关键图片
📊 实验亮点
该论文是首个针对LLM Agent在软件工程领域应用的综述,系统性地梳理了现有研究,并提出了一个包含感知、记忆和行动三大模块的通用框架。该框架为理解和组织现有工作提供了一个有价值的视角,并为未来的研究方向提供了指导。
🎯 应用场景
该研究成果可应用于软件开发的各个阶段,例如需求分析、代码生成、测试和维护。通过引入LLM Agent,可以提高软件开发的效率和质量,降低开发成本。未来,LLM Agent有望成为软件工程师的得力助手,甚至可以实现软件开发的自动化。
📄 摘要(原文)
In recent years, Large Language Models (LLMs) have achieved remarkable success and have been widely used in various downstream tasks, especially in the tasks of the software engineering (SE) field. We find that many studies combining LLMs with SE have employed the concept of agents either explicitly or implicitly. However, there is a lack of an in-depth survey to sort out the development context of existing works, analyze how existing works combine the LLM-based agent technologies to optimize various tasks, and clarify the framework of LLM-based agents in SE. In this paper, we conduct the first survey of the studies on combining LLM-based agents with SE and present a framework of LLM-based agents in SE which includes three key modules: perception, memory, and action. We also summarize the current challenges in combining the two fields and propose future opportunities in response to existing challenges. We maintain a GitHub repository of the related papers at: https://github.com/DeepSoftwareAnalytics/Awesome-Agent4SE.