XYZNOT

Статьи · arXiv 2407.16741

OpenHands: открытая платформа для создания универсальных агентов-разработчиков ПО

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

Опубликовано cs.SEcs.AIcs.CL arXivPDF

Читать с переводом и ИИ

Кратко в трёх строках

  1. 🎯 Для создания, сопровождения и безопасного тестирования ИИ-агентов разработки на разнообразных задачах программирования и веб-серфинга необходимы стандартизированные песочницы, инструменты и воспроизводимые бенчмарки.
  2. 🔧 OpenHands сочетает архитектуру потока событий с песочницами Docker, расширяемой библиотекой AgentSkills, браузерной навигацией на базе BrowserGym, делегированием задач между агентами и интеграционным тестированием с моками LLM.
  3. 📈 Используя Claude 3.5 Sonnet без специфического подбора промптов под бенчмарки, CodeActAgent достигает процента решения задач (resolve rate) в 26,0% на SWE-Bench Lite, 15,3% на WebArena и 52,0% на GPQA Diamond.

Аннотация

Программное обеспечение — один из самых мощных инструментов в распоряжении человечества; оно позволяет опытному программисту глубоко и сложно взаимодействовать с миром. В то же время, благодаря совершенствованию больших языковых моделей (LLM), стремительно развиваются ИИ-агенты, которые взаимодействуют с окружающей средой и вносят в нее изменения. В этой статье мы представляем OpenHands (ранее известную как OpenDevin) — платформу для разработки мощных и гибких ИИ-агентов, взаимодействующих с миром подобно инженеру-программисту: через написание кода, работу с командной строкой и просмотр веб-страниц. Мы описываем, как платформа обеспечивает реализацию новых агентов, безопасное взаимодействие с изолированными средами-песочницами для выполнения кода, координацию нескольких агентов и подключение бенчмарков для оценки. На основе интегрированных в платформу бенчмарков мы провели оценку агентов на 15 сложных задачах, включая разработку ПО (например, SWE-BENCH) и веб-навигацию (например, WEBARENA). OpenHands выпущена под свободной лицензией MIT и представляет собой открытый проект сообщества, объединяющий ученых и индустрию и насчитывающий более 2,1 тыс. коммитов от более чем 188 авторов.

Оригинальная аннотация (англ.)

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-команд, чтения документации через веб-браузер и самостоятельной отладки на основе обратной связи от среды выполнения.

Существующие агентные фреймворки часто страдали от критических архитектурных недостатков: отсутствия изолированных сред выполнения, сред запуска кода без сохранения состояния (stateless), отсутствия мультимодального веб-серфинга или отсутствия стандартизированных инструментов оценки в гетерогенных доменах. OpenHands (ранее OpenDevin) решает эти проблемы, предлагая платформу с открытым исходным кодом (лицензия MIT) с изолированными средами выполнения (песочницами), расширяемым интерфейсом агент-компьютер (Agent-Computer Interfaces, ACI), координацией нескольких агентов и стандартизированным бенчмаркингом.

Ключевые идеи

  • Архитектура потока событий (Event Stream Architecture): инструкции пользователя, действия агента и наблюдения за средой выполнения хронологически фиксируются в потоке событий, объединяющем взаимодействие между фронтендами, агентами и изолированными средами выполнения.
  • Примитивы языков программирования (PL Primitives): вместо нестабильных пользовательских API взаимодействие агента строится на универсальных действиях: IPythonRunCellAction, CmdRunAction и BrowseInteractiveAction (на базе BrowserGym).
  • Расширяемый набор инструментов AgentSkills: модульный Python-пакет, предварительно загруженный в ядро IPython, предоставляет высокоуровневые утилиты (например, построчное редактирование файлов на основе AST edit_file, парсинг PDF, мультимодальное извлечение изображений) без необходимости повторной реализации существующих пакетов.
  • Делегирование между агентами (Agent Delegation): специализированные агенты берут на себя узкопрофильные рабочие процессы (например, передача задач веб-поиска через AgentDelegateAction выделенному BrowsingAgent).
  • Контроль качества через мок-тестирование: регулярные тесты непрерывной интеграции (CI) проверяют регрессии промптов, действий и стабильность песочницы с помощью детерминированного кэширования пар «промпт-ответ» вместо дорогостоящих обращений к реальным API.

Метод (с ключевыми формулами)

Цикл выполнения OpenHands функционирует как дискретная пошаговая функция, где агент отображает состояние среды в действие : Здесь состояние объединяет хронологическую историю предшествующих действий и наблюдений: где отслеживает вспомогательные метаданные состояния (накопленную стоимость запросов к LLM, стек активного мультиагентного делегирования, параметры конфигурации).

Пространство действий включает:

  • CmdRunAction(command): выполняет произвольные команды bash в целевой оболочке Linux.
  • IPythonRunCellAction(code): выполняет Python-код с сохранением состояния в постоянном ядре Jupyter, предоставляя доступ к AgentSkills.
  • BrowseInteractiveAction(code): выполняет примитивы BrowserGym на базе Playwright (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 задач, без подсказок): CodeActAgent v1.8 с claude-3-5-sonnet@20240620 достигает показателя решения (средняя стоимость $1.10 на задачу), превосходя SWE-Agent () и AutoCodeRover (), приближаясь к Aider ().
  • HumanEvalFix (164 задачи): CodeActAgent v1.5 с gpt-4o-2024-05-13 решает в 0-shot сценарии с автоматической самоотладкой (по сравнению с у StarCoder2-15B).
  • WebArena (812 задач): BrowsingAgent v1.0 достигает с claude-3-5-sonnet и с gpt-4o, а CodeActAgent v1.8 через механизм делегирования набирает .
  • MiniWoB++ (125 сред): Zero-shot BrowsingAgent v1.0 с gpt-4o набирает .
  • Общие ассистенты и рассуждения (General Assistance & Reasoning):
    • GPQA Diamond: CodeActAgent v1.8 + claude-3-5-sonnet набирает (уступая экспертам-людям с их , но превосходя few-shot CoT GPT-4 с ).
    • GAIA (L1 Validation): GPTSwarm v1.0 с gpt-4o достигает (против у AutoGPT).
    • AgentBench (подмножество OS): CodeActAgent v1.5 набирает .
    • MINT (Math / Code): CodeActAgent v1.5 достигает в математике и в коде.

Ограничения и открытые вопросы

  • Редактирование больших файлов: текущие примитивы редактирования испытывают трудности на крупных кодовых базах или длинных исходных файлах, где сдвиг номеров строк приводит к конфликтам правок.
  • Мультимодальная интеграция: хотя вспомогательные навыки (parse_image, parse_pdf) извлекают текст или описания изображений с помощью внешних моделей зрения, нативное мультимодальное рассуждение для браузера и терминала пока не объединено до конца.
  • Автоматизация рабочих процессов: процессы выполнения по-прежнему в значительной степени зависят от написанных вручную системных промптов и циклов оркестрации агентов, а не от автоматически оптимизируемых графовых архитектур (например, GPTSwarm).

Ключевые термины

OpenHands
Открытая платформа сообщества для разработки, развертывания и оценки работы ИИ-агентов программирования в изолированных средах (песочницах).
CodeAct
Архитектура агента, в которой пространство действий унифицировано вокруг выполнения произвольного программного кода (Python, bash, действия браузера), а не жестких JSON-схем.
Event Stream
Хронологический журнал только для добавления записей (append-only), отслеживающий действия агента, вмешательства пользователя и наблюдения среды в рамках среды исполнения OpenHands.
AgentSkills
Модульный набор утилит на Python, внедряемый в изолированное ядро IPython и предоставляющий агентам вспомогательные функции для редактирования файлов, навигации и парсинга документов.
BrowserGym
Среда автоматизации браузера и предметно-ориентированный язык действий на базе Playwright, используемый в OpenHands для задач веб-навигации.
Agent Runtime
Изолированная клиент-серверная среда выполнения внутри контейнера Docker, обрабатывающая bash-команды, ячейки кода IPython и сессии браузера.
AgentDelegateAction
Специализированный тип действия, позволяющий основному универсальному агенту делегировать конкретные подзадачи специализированному агенту.
SWE-Bench
Бенчмарк для оценки способности агента решать реальные проблемы (issues) из репозиториев GitHub и успешно проходить наборы модульных тестов без участия человека.

Вопросы

В чем разница между OpenHands и OpenDevin?

OpenHands — это официальное продолжение и новое название OpenDevin, которое развилось из открытого аналога Devin от Cognition в универсальную платформу как для разработки ПО, так и для создания универсальных цифровых агентов.

Как OpenHands обеспечивает безопасность при выполнении произвольного кода?

Все действия агента (команды оболочки, фрагменты кода Python и действия браузера) выполняются внутри изолированного контейнера-песочницы Docker, который взаимодействует с бэкендом через REST API, изолируя хост-систему.

Как OpenHands предотвращает дорогостоящие вызовы LLM во время автоматического тестирования?

Фреймворк включает набор сквозных интеграционных тестов, который перехватывает запросы к LLM и возвращает кэшированные детерминированные пары «промпт-ответ», обращаясь к реальным моделям только при нарушающих совместимость изменениях в промптах.

Может ли OpenHands работать с произвольными пользовательскими Docker-образами?

Да. OpenHands предоставляет процесс сборки, который устанавливает API-сервер выполнения действий поверх любого пользовательского базового Docker-образа, отслеживая сборки с помощью MD5-хешей исходного кода и общих тегов.

Обзор на этой странице написан ИИ по тексту статьи и может содержать ошибки. Подробности смотрите в самой статье.

Читать с переводом и ИИ