伊利诺伊大学香槟分校的研究人员推出AGENTLESS系统,它是一种基于大语言模型的软件工程自动化方法,旨在简化软件开发任务,如代码合成、程序修复和测试生成。AGENTLESS的核心思想是去掉复杂的自主软件代理(agents),这些代理过去被用来执行端到端的软件开发任务,包括使用工具、运行命令、观察环境反馈和规划未来行动。
- GitHub:https://github.com/OpenAutoCoder/Agentless
论文还提到,AGENTLESS在开源的SWE-bench Lite基准测试中表现出色,并且在成本效益上优于现有的所有开源软件代理。此外,作者通过对SWE-bench Lite的问题进行手动分类,发现其中一些问题描述中包含了确切的补丁或信息不足/误导性的问题描述,并据此构建了SWE-bench Lite-S,以进行更严格的评估和比较。作者希望AGENTLESS能够为自主软件开发提供一个简单的、可解释的技术方向,并激发未来的研究工作。
例如,你有一个能够编写代码、修复程序中的错误并且能够自我学习的智能助手。这个助手过去可能是非常复杂的,需要自己决定使用哪些工具,如何一步步解决问题。但AGENTLESS系统提出了一种更简单直接的方法:它不需要智能助手去自主决策,而是通过一个两阶段的流程——定位问题和修复问题——来自动化软件开发任务。
主要功能
- 定位:AGENTLESS首先确定代码中需要修改的具体位置。
- 修复:然后,它生成多个可能的补丁(修补代码的片段),选择最合适的一个来解决问题。
主要特点
- 无代理:与需要复杂工具和自主决策的代理方法不同,AGENTLESS不使用任何复杂的代理。
- 简单高效:AGENTLESS采用简单的两阶段流程,减少了决策复杂性和成本。
- 高性能:在SWE-bench Lite基准测试中,AGENTLESS达到了最高的性能和最低的成本。
工作原理
- 定位阶段:AGENTLESS将项目代码库转换成树状结构,然后使用大型语言模型(LLMs)来识别出问题所在最可疑的文件、类或函数。
- 修复阶段:AGENTLESS生成多个候选补丁,并使用简单的过滤方法去除那些有语法错误或不能通过现有测试的补丁。然后,它使用多数投票方法重新排列剩余的补丁,并选择排名最高的补丁提交。
具体应用场景
- 代码修复:在项目中发现bug时,AGENTLESS可以自动定位并修复代码。
- 新功能开发:当需要在现有项目中添加新功能时,AGENTLESS可以帮助快速定位需要修改的代码区域,并生成相应的代码补丁。
- 自动化测试:在测试生成阶段,AGENTLESS可以辅助生成测试用例,确保新修改的代码不会破坏现有功能。
0条评论