SWE-agent:帮助 LM 智能体解决软件工程任务的系统
论文提出 SWE-agent,一个帮助 LM 智能体自主使用计算机解决软件工程任务的系统。
核验日期
定义
论文提出 SWE-agent,这是一个帮助 LM 智能体自主使用计算机来解决软件工程任务的系统。论文研究接口设计如何影响语言模型智能体的性能。论文把 LM 智能体用来与计算机交互的接口称为智能体-计算机接口(ACI)。
论文提出的 SWE-agent 是由 LM 和 ACI 组成的智能体,可以与计算机交互,解决真实世界的软件工程问题,例如 SWE-bench 中提出的问题。论文认为 LM 智能体代表一类新的终端用户,有自己的需求和能力。论文称,SWE-agent 的定制 ACI 显著增强了智能体创建和编辑代码文件、浏览整个仓库以及执行测试和其他程序的能力。
一图看懂
论文称,ACI 包含若干主要组件,包括搜索/导航、文件查看器、文件编辑器和上下文管理。论文说明,SWE-agent 是通过 ACI 与计算机交互的 LM,ACI 包含智能体使用的命令以及来自计算机的反馈格式。
- 搜索与导航:find_file 命令在仓库中搜索文件名,search_file 和 search_dir 在子目录的文件中定位字符串。
- 文件查看器:编辑应用后,文件查看器自动显示更新后的内容。
- 文件编辑器:edit 命令与文件查看器配合,让智能体替换打开文件中指定范围的行。
- 代码检查:论文把代码 linter 集成进编辑功能,在智能体可能引入错误时提醒它。
- 上下文管理:SWE-agent 系统使用信息丰富的提示、错误消息和历史处理器,使智能体上下文保持简洁且信息充分。
原文没有明确这些要点的先后顺序,因此按要点列出,不画先后箭头。
工作原理
论文称,SWE-agent 在每一步生成一个思考和一个命令,然后纳入该命令在环境中执行的反馈。SWE-agent 构建在 Linux shell 之上,需要时还允许访问常用的 Linux 命令和实用工具。ACI 规定了 LM 可用的命令,以及环境状态如何传回给 LM。
论文称,SWE-agent 的 ACI 提供一小组用于查看、搜索和编辑文件的简单动作。论文称,ACI 使用护栏防止常见错误,智能体在每一轮都会收到关于命令效果的具体、简明的反馈。论文称,在智能体直接与 Linux shell 交互的设置中,LM 智能体可能难以可靠地执行动作。
论文称,在该设置中,Linux shell 未能提供编辑小文件片段的简单命令,也不会在用户进行无效编辑时提供反馈。论文表明,为 LM 专门定制的 ACI 优于为人类用户设计的现有用户界面,例如 Linux shell。论文列出的一条设计原则是,动作应当简单且易于智能体理解。
论文列出的另一条设计原则是,动作应当紧凑且高效。论文列出的设计原则还包括,环境反馈应当信息丰富但简明。论文列出的设计原则还包括,护栏可以减轻错误传播并加快恢复。
论文主要在 SWE-bench 数据集上进行评估。论文还用 HumanEvalFix 这一短篇代码调试基准测试 SWE-agent 的基本代码编辑能力。论文表明,其 ACI 虽然是为 GPT-4 Turbo 开发的,但可以移植到另一种 LM 上。
论文描述了一个基线:BM25 检索系统以问题为查询,检索最相关的代码库文件。论文描述了另一个基线系统:它沿用 InterCode 环境,让 LM 通过与 Linux 上的 shell 进程交互来解决问题。
例子
在论文的一个案例研究中,智能体的任务是解决 requests 库中的一个问题。在该案例中,智能体先是在 requests 库目录中找到了 sessions.py 文件。智能体打开 sessions.py,并使用 search_file 命令定位 builtin_str 函数调用。
智能体编辑 sessions.py 文件,检查 method 是否为 bytes 对象,若是则在应用 builtin_str 函数之前将其解码为 ASCII。论文称,经评估,智能体提出的修改成功通过了该实例的单元测试。
来源
本页内容整理自以下官方来源,点击可核对原文。
核验日期 ·
本页由 AI 依据上述官方来源整理,并经自动核对,未经本站实测。 发现错误?告诉我们。