XYZNOT

论文 · arXiv 2407.16741

OpenHands:面向通用智能体 AI 软件开发者的开源平台

OpenHands: An Open Platform for AI Software Developers as Generalist Agents

发表于 cs.SEcs.AIcs.CL arXivPDF

用 XYZNOT 阅读(全文翻译与 AI 讲解)

三句话总结

  1. 🎯 在多样化的代码和网络任务中构建、维护和安全评估 AI 软件智能体,需要标准化的沙盒、工具和可复现的基准。
  2. 🔧 OpenHands 将事件流架构与 Docker 沙盒、可扩展的 AgentSkills 库、基于 BrowserGym 的导航、多智能体委托以及使用模拟 LLM 的集成测试结合在一起。
  3. 📈 在不针对基准进行提示词微调的情况下,使用 Claude 3.5 Sonnet 的 CodeActAgent 在 SWE-Bench Lite 上达到了 26.0% 的解决率,在 WebArena 上为 15.3%,在 GPQA Diamond 上为 52.0%。

摘要

软件是人类掌握的最强大工具之一;它使熟练的程序员能够以复杂而深刻的方式与世界进行交互。与此同时,得益于大型语言模型(LLM)的进步,能够与周围环境交互并促成变化的 AI 智能体也迎来了飞速发展。在本文中,我们介绍了 OpenHands(前身为 OpenDevin),这是一个用于开发强大且灵活的 AI 智能体的平台,这些智能体能够以类似于人类开发者的方式与世界交互:编写代码、与命令行交互以及浏览网页。我们阐述了该平台如何支持新智能体的实现、如何安全地与用于代码执行的沙盒环境交互、如何协调多个智能体以及如何整合评估基准。基于目前整合的基准测试,我们在 15 项具有挑战性的任务上对智能体进行了评估,其中包括软件工程(例如 SWE-BENCH)和网页浏览(例如 WEBARENA)等。OpenHands 在宽松的 MIT 许可下发布,是一个跨越学术界和工业界的社区项目,汇集了来自 188 多位贡献者的 2100 多次贡献。

英文原文摘要

Software is one of the most powerful tools that we humans have at our disposal; it allows a skilled programmer to interact with the world in complex and profound ways. At the same time, thanks to improvements in large language models (LLMs), there has also been a rapid development in AI agents that interact with and affect change in their surrounding environments. In this paper, we introduce OpenHands (f.k.a. OpenDevin), a platform for the development of powerful and flexible AI agents that interact with the world in similar ways to those of a human developer: by writing code, interacting with a command line, and browsing the web. We describe how the platform allows for the implementation of new agents, safe interaction with sandboxed environments for code execution, coordination between multiple agents, and incorporation of evaluation benchmarks. Based on our currently incorporated benchmarks, we perform an evaluation of agents over 15 challenging tasks, including software engineering (e.g., SWE-BENCH) and web browsing (e.g., WEBARENA), among others. Released under the permissive MIT license, OpenHands is a community project spanning academia and industry with more than 2.1K contributions from over 188 contributors.

论文解读

问题与动机

软件开发是人类与数字世界交互最具表现力的接口之一。虽然大型语言模型(LLM)能够生成孤立的代码片段,但现实世界的软件工程需要长时间跨度的交互:浏览代码仓库、修改多文件架构、执行 bash 命令、通过网络浏览器阅读文档,以及利用执行反馈进行自我调试。

先前的智能体框架往往存在关键的架构缺陷:缺乏隔离的执行环境、无状态的代码运行器、缺少多模态网页浏览能力,或者在异构领域之间缺乏标准化的评估工具。OpenHands(前身为 OpenDevin)通过一个开源平台(MIT 许可)解决了这一需求,提供了沙盒运行时环境、可扩展的智能体-计算机接口(ACI)、多智能体协调以及标准化的基准测试。

核心理念

  • 事件流架构(Event Stream Architecture):用户指令、智能体动作和运行时观察结果按时间顺序记录在事件流中,从而统一了前端、智能体和沙盒运行时之间的通信。
  • 编程语言(PL)原语:放弃脆弱的自定义 API,智能体的交互建立在通用动作之上:IPythonRunCellAction、CmdRunAction 和 BrowseInteractiveAction(通过 BrowserGym 实现)。
  • 可扩展的 AgentSkills:预加载到 IPython 内核中的模块化 Python 包提供了高级实用工具(例如基于 AST 的行级编辑 edit_file、PDF 解析、多模态图像提取),无需重复造轮子。
  • 智能体委托(Agent Delegation):专家智能体负责处理特定领域的工作流程(例如,通过 AgentDelegateAction 将网络任务委托给专用的 BrowsingAgent)。
  • 通过模拟测试进行质量控制:例行持续集成测试通过确定性的提示-响应缓存来测试提示词回归、动作和沙盒稳定性,而非依赖昂贵的实时 API 调用。

方法(包含核心公式)

OpenHands 的执行周期运行在一个离散步进函数上,其中智能体将环境状态 映射为一个动作 : 在此,状态封装了先前动作和观察结果的时间序列历史记录: 其中 用于跟踪辅助状态元数据(累积 LLM 成本、活动的多智能体委托栈、配置参数)。

动作空间 包括:

  • CmdRunAction(command):在目标 Linux shell 中运行任意 bash 命令。
  • IPythonRunCellAction(code):在持久化 Jupyter 内核中执行有状态的 Python 代码,暴露 AgentSkills。
  • BrowseInteractiveAction(code):执行由 Playwright 驱动的 BrowserGym 原语(click(bid)、fill(bid, val)、goto(url) 等)。
  • AgentDelegateAction(subtask, agent_name):将子目标推入智能体栈以召唤专家智能体。
  • AgentFinishAction():结束执行。

执行过程在安全的客户端-服务器 Docker 沙盒中进行。基础 Docker 容器通过 OpenHands REST API 服务器(runtime.py)进行扩展,并使用双重标记机制进行标记:用于严格可复现性的内容 MD5 哈希(target_image_repo:target_image_hash_tag),以及用于缓存基础层构建的语义通用标签(runtime:oh_v{VERSION}_{BASE_IMAGE}_tag_{IMAGE_TAG})。

结果(包含核心数据)

OpenHands 在涵盖软件工程、网页浏览和通用助手的 15 项基准测试中对通用智能体进行了评估,无需针对具体基准定制提示词:

  • SWE-Bench Lite(300 个实例,无提示):搭载 claude-3-5-sonnet@20240620 的 CodeActAgent v1.8 实现了 的解决率(每个实例平均成本 1.10 美元),优于 SWE-Agent()和 AutoCodeRover(),接近 Aider()。
  • HumanEvalFix(164 个实例):搭载 gpt-4o-2024-05-13 的 CodeActAgent v1.5 在 0-shot 自我调试设置下解决了 (相比之下 StarCoder2-15B 为 )。
  • WebArena(812 个实例):BrowsingAgent v1.0 使用 claude-3-5-sonnet 达到 ,使用 gpt-4o 达到 ,而通过委托的 CodeActAgent v1.8 达到 。
  • MiniWoB++(125 个环境):搭载 gpt-4o 的零样本 BrowsingAgent v1.0 达到了 。
  • 通用助手与推理:
    • GPQA Diamond:CodeActAgent v1.8 + claude-3-5-sonnet 得分为 (低于专家人类基线 ,但优于少样本 CoT GPT-4 的 )。
    • GAIA(L1 验证集):搭载 gpt-4o 的 GPTSwarm v1.0 达到 (AutoGPT 为 )。
    • AgentBench(OS 子集):CodeActAgent v1.5 达到 。
    • MINT(数学 / 代码):CodeActAgent v1.5 在数学上达到 ,在代码上达到 。

局限性与待解决问题

  • 长文件编辑:当前的编辑原语在处理大型代码库或长源码文件时表现欠佳,行号偏移往往会引入编辑冲突。
  • 多模态集成:尽管辅助技能(parse_image、parse_pdf)可以通过外部视觉模型提取文本或图像摘要,但原生的浏览器和终端多模态推理尚未完全统一。
  • 工作流自动化:工作流仍严重依赖人工设计的系统提示和智能体编排循环,而非自动优化的图架构(例如 GPTSwarm)。

关键术语

OpenHands
一个开源、社区驱动的平台,用于在沙盒环境中构建、部署和评估 AI 软件开发者智能体。
CodeAct
一种智能体架构,其动作空间围绕执行任意编程语言代码(Python、bash、浏览器操作)进行统一,而非使用死板的 JSON 模式(schemas)。
Event Stream
一个按时间顺序排列的仅追加日志,用于跟踪 OpenHands 运行时中的智能体动作、用户干预和环境观察结果。
AgentSkills
一个注入到沙盒 IPython 内核中的模块化 Python 实用工具包,为智能体提供文件编辑、导航和文档解析辅助工具。
BrowserGym
一个基于 Playwright 的浏览器自动化环境和特定领域动作语言,OpenHands 用于执行网页导航任务。
Agent Runtime
在 Docker 容器内运行的隔离客户端-服务器执行环境,负责处理 bash 命令、IPython 代码单元和浏览器会话。
AgentDelegateAction
一种专门的动作类型,允许主通用智能体将特定子任务委托给领域专家智能体。
SWE-Bench
用于评估智能体在无需人工干预的情况下解决真实 GitHub 问题并使单元测试套件通过的能力的基准测试。

常见问题

OpenHands 和 OpenDevin 之间有什么区别?

OpenHands 是 OpenDevin 的官方延续和新名称,从 Cognition 的 Devin 的开源复现项目,演变为了同时支持软件开发和通用数字化智能体的通用平台。

OpenHands 在执行任意代码时如何保证安全性?

所有智能体动作(shell 命令、Python 代码片段和浏览器动作)都在隔离的 Docker 沙盒容器内执行,该容器通过 REST API 客户端与后端通信,从而隔离宿主系统。

OpenHands 在自动化测试期间如何避免产生高昂的 LLM 调用成本?

该框架具备端到端集成测试套件,可拦截 LLM 请求并返回缓存的确定性提示-响应对,仅在发生重大提示变更时才会重新调用实时模型。

OpenHands 能否与用户任意的 Docker 镜像一起运行?

可以。OpenHands 提供了一套构建工作流,可以在任何用户提供的基础 Docker 镜像之上安装其动作执行 API 服务器,并通过 MD5 源码哈希和通用标签来跟踪镜像构建。

本页解读由 AI 根据论文生成,可能有错误;细节请以原文为准。

用 XYZNOT 阅读(全文翻译与 AI 讲解)