XYZNOT

Artigos · arXiv 2407.16741

OpenHands: Uma Plataforma Aberta para Desenvolvedores de Software com IA como Agentes Generalistas

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

Publicado em cs.SEcs.AIcs.CL arXivPDF

Ler com tradução e IA

Resumo em três linhas

  1. 🎯 Construir, manter e avaliar com segurança agentes de IA para software em diversas tarefas de código e web requer sandboxes padronizadas, ferramentas adequadas e benchmarks reproduzíveis.
  2. 🔧 O OpenHands combina uma arquitetura de fluxo de eventos com sandboxes Docker, uma biblioteca extensível AgentSkills, navegação baseada em BrowserGym, delegação multiagente e testes de integração com LLMs simulados (mocked).
  3. 📈 Utilizando o Claude 3.5 Sonnet sem ajuste fino de prompts específico para os benchmarks, o CodeActAgent atinge uma taxa de resolução de 26,0% no SWE-Bench Lite, 15,3% no WebArena e 52,0% no GPQA Diamond.

Resumo

O software é uma das ferramentas mais poderosas à disposição da humanidade; ele permite que um programador habilidoso interaja com o mundo de maneiras complexas e profundas. Paralelamente, graças aos avanços nos modelos de linguagem de grande porte (LLMs), houve um rápido desenvolvimento de agentes de IA capazes de interagir e promover mudanças em seus ambientes circundantes. Neste artigo, apresentamos o OpenHands (anteriormente OpenDevin), uma plataforma para o desenvolvimento de agentes de IA poderosos e flexíveis que interagem com o mundo de forma semelhante à de um desenvolvedor humano: escrevendo código, interagindo com a linha de comando e navegando na web. Descrevemos como a plataforma viabiliza a implementação de novos agentes, a interação segura com ambientes em sandbox para execução de código, a coordenação entre múltiplos agentes e a incorporação de benchmarks de avaliação. Com base nos benchmarks atualmente integrados, realizamos uma avaliação de agentes em 15 tarefas desafiadoras, incluindo engenharia de software (p. ex., SWE-BENCH) e navegação web (p. ex., WEBARENA), entre outras. Lançado sob a permissiva licença MIT, o OpenHands é um projeto comunitário que une a academia e a indústria, somando mais de 2,1 mil contribuições de mais de 188 colaboradores.

Resumo original (inglês)

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.

Guia de leitura

Problema e motivação

O desenvolvimento de software é uma das interfaces mais expressivas pelas quais os seres humanos interagem com o mundo digital. Embora modelos de linguagem de grande porte (LLMs) consigam gerar trechos isolados de código, a engenharia de software do mundo real exige uma interação de longo alcance: navegar por repositórios, modificar arquiteturas de múltiplos arquivos, executar comandos bash, ler documentações por meio de navegadores web e realizar autodepuração usando o feedback de execução.

Os frameworks de agentes anteriores frequentemente sofriam com lacunas arquiteturais críticas: ausência de ambientes de execução isolados, executores de código sem estado (stateless), falta de recursos de navegação web multimodal ou ausência de ferramentas de avaliação padronizadas em domínios heterogêneos. O OpenHands (anteriormente OpenDevin) atende a essa necessidade com uma plataforma de código aberto (sob licença MIT) que oferece ambientes de execução em sandbox, Interfaces Agente-Computador (ACI) extensíveis, coordenação multiagente e benchmarking padronizado.

Ideias centrais

  • Arquitetura de Fluxo de Eventos (Event Stream): Instruções do usuário, ações do agente e observações de tempo de execução são registradas cronologicamente em um fluxo de eventos que unifica a comunicação entre frontends, agentes e ambientes de execução em sandbox.
  • Primitivas de Linguagem de Programação (PL): Em vez de APIs customizadas e frágeis, as interações do agente são fundamentadas em ações gerais: IPythonRunCellAction, CmdRunAction e BrowseInteractiveAction (via BrowserGym).
  • AgentSkills Extensíveis: Um pacote Python modular pré-carregado no kernel do IPython fornece utilitários de alto nível (por exemplo, edição de linhas baseada em AST via edit_file, análise de PDFs e extração multimodal de imagens) sem a necessidade de reinventar pacotes existentes.
  • Delegação entre Agentes: Agentes especialistas lidam com fluxos de trabalho específicos de determinado domínio (por exemplo, delegar tarefas web por meio de AgentDelegateAction para um BrowsingAgent dedicado).
  • Controle de Qualidade via Testes Simulados (Mocks): Testes rotineiros de integração contínua verificam regressões de prompts, ações e a estabilidade do sandbox utilizando cache determinístico de prompt-resposta, evitando chamadas caras e em tempo real à API.

Método (com as equações principais)

O ciclo de execução do OpenHands opera em uma função de etapa discreta na qual o agente mapeia um estado do ambiente para uma ação : Aqui, o estado encapsula o histórico cronológico de ações e observações anteriores: onde rastreia metadados de estado auxiliares (custo cumulativo de LLMs, pilha de delegação multiagente ativa, parâmetros de configuração).

O espaço de ações inclui:

  • CmdRunAction(command): Executa comandos bash arbitrários no shell Linux de destino.
  • IPythonRunCellAction(code): Executa código Python com preservação de estado em um kernel Jupyter persistente, expondo as AgentSkills.
  • BrowseInteractiveAction(code): Executa primitivas do BrowserGym orientadas pelo Playwright (click(bid), fill(bid, val), goto(url), etc.).
  • AgentDelegateAction(subtask, agent_name): Envia um subobjetivo para a pilha de agentes a fim de acionar um especialista.
  • AgentFinishAction(): Conclui a execução.

A execução ocorre dentro de um sandbox Docker seguro em arquitetura cliente-servidor. Contêineres Docker base são estendidos com um servidor REST API do OpenHands (runtime.py), etiquetados por meio de um mecanismo de dupla etiquetagem: um hash MD5 do conteúdo (target_image_repo:target_image_hash_tag) para estrita reprodutibilidade e uma tag semântica genérica (runtime:oh_v{VERSION}_{BASE_IMAGE}_tag_{IMAGE_TAG}) para builds em cache das camadas base.

Resultados (com os números mais importantes)

O OpenHands avalia agentes generalistas em 15 benchmarks que abrangem engenharia de software, navegação web e assistência geral, sem ajuste de prompt específico por benchmark:

  • SWE-Bench Lite (300 instâncias, sem dicas): O CodeActAgent v1.8 com claude-3-5-sonnet@20240620 alcança uma taxa de resolução de (custo médio de $1,10 por instância), superando o SWE-Agent () e o AutoCodeRover (), aproximando-se do Aider ().
  • HumanEvalFix (164 instâncias): O CodeActAgent v1.5 com gpt-4o-2024-05-13 resolve em uma configuração de autodepuração zero-shot (em comparação com os do StarCoder2-15B).
  • WebArena (812 instâncias): O BrowsingAgent v1.0 obtém usando claude-3-5-sonnet e com gpt-4o, enquanto o CodeActAgent v1.8 via delegação alcança .
  • MiniWoB++ (125 ambientes): O BrowsingAgent v1.0 em regime zero-shot com gpt-4o alcança .
  • Assistência Geral e Raciocínio:
    • GPQA Diamond: O CodeActAgent v1.8 + claude-3-5-sonnet pontua (ficando abaixo do baseline humano especialista em , mas superando o GPT-4 few-shot CoT com ).
    • GAIA (Validação L1): O GPTSwarm v1.0 com gpt-4o atinge ( para o AutoGPT).
    • AgentBench (subconjunto OS): O CodeActAgent v1.5 atinge .
    • MINT (Matemática / Código): O CodeActAgent v1.5 alcança em matemática e em código.

Limitações e questões em aberto

  • Edições de Arquivos Extensos: As primitivas de edição atuais enfrentam dificuldades ao lidar com bases de código grandes ou arquivos-fonte extensos, onde alterações nos números de linha introduzem conflitos de edição.
  • Integração Multimodal: Embora habilidades auxiliares (parse_image, parse_pdf) extraiam texto ou resumos de imagens usando modelos de visão externos, o raciocínio multimodal nativo integrando terminal e navegador ainda não está totalmente unificado.
  • Automação de Fluxos de Trabalho: Os fluxos de trabalho ainda dependem fortemente de system prompts elaborados manualmente e loops de orquestração de agentes, em vez de arquiteturas de grafos otimizadas automaticamente (por exemplo, GPTSwarm).

Termos-chave

OpenHands
Uma plataforma de código aberto e orientada pela comunidade para construir, implantar e avaliar agentes de IA desenvolvedores de software em ambientes de sandbox.
CodeAct
Uma arquitetura de agente cujo espaço de ações é unificado em torno da execução de código arbitrário em linguagens de programação (Python, bash, ações de navegador), em vez de esquemas JSON rígidos.
Event Stream
Um log cronológico somente para anexação (append-only) que rastreia ações do agente, intervenções do usuário e observações do ambiente ao longo do runtime do OpenHands.
AgentSkills
Um pacote utilitário modular em Python injetado no kernel IPython em sandbox que fornece aos agentes funções auxiliares para edição de arquivos, navegação e análise de documentos.
BrowserGym
Um ambiente de automação de navegador e linguagem de ação de domínio específico baseada em Playwright, utilizada pelo OpenHands para tarefas de navegação web.
Agent Runtime
O ambiente isolado de execução cliente-servidor que roda dentro de um contêiner Docker, gerenciando comandos bash, células de código IPython e sessões de navegador.
AgentDelegateAction
Um tipo de ação especializada que permite a um agente generalista primário delegar subtarefas específicas a um agente especialista de domínio.
SWE-Bench
Um benchmark que avalia a capacidade de um agente de resolver problemas reais do GitHub e passar em baterias de testes unitários sem intervenção humana.

Perguntas

Qual é a diferença entre OpenHands e OpenDevin?

O OpenHands é a continuação oficial e o novo nome do OpenDevin, evoluindo de uma recriação de código aberto do Devin da Cognition para uma plataforma abrangente voltada tanto ao desenvolvimento de software quanto a agentes digitais generalistas.

Como o OpenHands mantém a segurança ao executar código arbitrário?

Todas as ações dos agentes (comandos de shell, trechos em Python e interações no navegador) são executadas em um contêiner Docker isolado em sandbox, que se comunica com o backend via cliente REST API, isolando o sistema operacional hospedeiro.

Como o OpenHands evita chamadas custosas a LLMs durante testes automatizados?

O framework conta com uma suíte de testes de integração ponta a ponta que intercepta as solicitações a LLMs e retorna pares determinísticos em cache de prompt-resposta, realizando novas chamadas aos modelos ao vivo apenas se houver alterações de quebra nos prompts.

O OpenHands pode ser executado com imagens Docker arbitrárias do usuário?

Sim. O OpenHands fornece um fluxo de compilação que instala seu servidor de API de execução de ações sobre qualquer imagem base Docker fornecida pelo usuário, rastreando as compilações por meio de hashes MD5 do código-fonte e tags genéricas.

A explicação desta página foi escrita por IA a partir do artigo e pode conter erros. Consulte o artigo para os detalhes.

Ler com tradução e IA