XYZNOT

Artículos · arXiv 2407.16741

OpenHands: Una plataforma abierta para desarrolladores de software de IA como agentes generalistas

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

Publicado cs.SEcs.AIcs.CL arXivPDF

Leer con traducción e IA

Resumen en tres líneas

  1. 🎯 Crear, mantener y evaluar de forma segura agentes de software de IA en diversas tareas de código y web requiere sandboxes estandarizados, herramientas y benchmarks reproducibles.
  2. 🔧 OpenHands combina una arquitectura de flujo de eventos con sandboxes de Docker, una biblioteca extensible de AgentSkills, navegación basada en BrowserGym, delegación multiagente y pruebas de integración con LLMs simulados (mocked).
  3. 📈 Utilizando Claude 3.5 Sonnet sin ajuste de prompts específico para cada benchmark, CodeActAgent logra una tasa de resolución del 26,0% en SWE-Bench Lite, del 15,3% en WebArena y del 52,0% en GPQA Diamond.

Resumen

El software es una de las herramientas más potentes que los seres humanos tenemos a nuestra disposición; permite a un programador cualificado interactuar con el mundo de formas complejas y profundas. Al mismo tiempo, gracias a las mejoras en los modelos de lenguaje de gran tamaño (LLMs), también se ha producido un rápido desarrollo de agentes de IA que interactúan y generan cambios en los entornos que los rodean. En este artículo, presentamos OpenHands (anteriormente conocido como OpenDevin), una plataforma para el desarrollo de agentes de IA potentes y flexibles que interactúan con el mundo de forma similar a como lo hace un desarrollador humano: escribiendo código, interactuando con una línea de comandos y navegando por la web. Describimos cómo la plataforma permite la implementación de nuevos agentes, la interacción segura con entornos en sandbox para la ejecución de código, la coordinación entre múltiples agentes y la incorporación de benchmarks de evaluación. Con base en los benchmarks incorporados actualmente, realizamos una evaluación de agentes en 15 tareas desafiantes, entre las que se incluyen la ingeniería de software (p. ej., SWE-BENCH) y la navegación web (p. ej., WEBARENA), entre otras. Publicado bajo la licencia permisiva MIT, OpenHands es un proyecto comunitario que abarca tanto el ámbito académico como el industrial, con más de 2,1 mil contribuciones procedentes de más de 188 colaboradores.

Resumen 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.

Guía de lectura

Problema y motivación

El desarrollo de software se encuentra entre las interfaces más expresivas a través de las cuales los humanos interactúan con el mundo digital. Aunque los modelos de lenguaje de gran tamaño (LLMs) pueden generar fragmentos de código aislados, la ingeniería de software en el mundo real exige una interacción de largo horizonte: navegar por repositorios, modificar arquitecturas compuestas por múltiples archivos, ejecutar comandos de bash, consultar documentación mediante navegadores web y depurar automáticamente a partir de la retroalimentación de la ejecución.

Los frameworks de agentes anteriores solían adolecer de importantes carencias arquitectónicas: ausencia de entornos de ejecución aislados, ejecutores de código sin estado, carencia de capacidades de navegación web multimodal o falta de herramientas estandarizadas de evaluación en dominios heterogéneos. OpenHands (anteriormente OpenDevin) aborda esta necesidad mediante una plataforma de código abierto (con licencia MIT) que ofrece entornos de ejecución aislados en sandbox, interfaces agente-computadora (ACI) extensibles, coordinación multiagente y benchmarking estandarizado.

Ideas clave

  • Arquitectura de flujo de eventos (Event Stream Architecture): Las instrucciones del usuario, las acciones del agente y las observaciones del entorno de ejecución se registran cronológicamente en un flujo de eventos que unifica la comunicación entre las interfaces de usuario (frontends), los agentes y los entornos de ejecución en sandbox.
  • Primitivas de lenguajes de programación (PL): En lugar de recurrir a APIs personalizadas y frágiles, las interacciones del agente se fundamentan en acciones genéricas: IPythonRunCellAction, CmdRunAction y BrowseInteractiveAction (a través de BrowserGym).
  • AgentSkills extensibles: Un paquete modular de Python precargado en el kernel de IPython que proporciona utilidades de alto nivel (p. ej., edición de líneas basada en AST mediante edit_file, procesamiento de PDFs, extracción multimodal de imágenes) sin necesidad de reinventar paquetes existentes.
  • Delegación de agentes: Agentes especializados gestionan flujos de trabajo específicos de un dominio (p. ej., delegar tareas web mediante AgentDelegateAction a un BrowsingAgent dedicado).
  • Control de calidad mediante pruebas simuladas (mocked): Las pruebas rutinarias de integración continua evalúan regresiones en los prompts, acciones y la estabilidad del sandbox utilizando almacenamiento en caché determinista de pares prompt-respuesta en lugar de realizar costosas llamadas a APIs en tiempo real.

Método (con las ecuaciones clave)

El ciclo de ejecución de OpenHands opera sobre una función de pasos discretos donde el agente mapea un estado del entorno a una acción : Aquí, el estado encapsula el historial cronológico de acciones y observaciones previas: donde registra metadatos auxiliares del estado (coste acumulado del LLM, pila de delegación multiagente activa, parámetros de configuración).

El espacio de acciones incluye:

  • CmdRunAction(command): Ejecuta comandos arbitrarios de bash en la shell de Linux objetivo.
  • IPythonRunCellAction(code): Ejecuta código Python con estado en un kernel interactivo persistente de Jupyter, exponiendo las AgentSkills.
  • BrowseInteractiveAction(code): Ejecuta primitivas de BrowserGym impulsadas por Playwright (click(bid), fill(bid, val), goto(url), etc.).
  • AgentDelegateAction(subtask, agent_name): Añade un subobjetivo a la pila de agentes para invocar a un especialista.
  • AgentFinishAction(): Concluye la ejecución.

La ejecución se lleva a cabo dentro de un sandbox de Docker seguro con arquitectura cliente-servidor. Los contenedores base de Docker se extienden mediante un servidor de API REST de OpenHands (runtime.py), etiquetado mediante un mecanismo de doble etiquetado: un hash MD5 del contenido (target_image_repo:target_image_hash_tag) para garantizar una estricta reproducibilidad, y una etiqueta semántica genérica (runtime:oh_v{VERSION}_{BASE_IMAGE}_tag_{IMAGE_TAG}) para construcciones en caché de capas base.

Resultados (con las cifras más importantes)

OpenHands evalúa agentes generalistas a lo largo de 15 benchmarks que abarcan ingeniería de software, navegación web y asistencia general sin necesidad de adaptar los prompts para cada benchmark:

  • SWE-Bench Lite (300 instancias, sin pistas): CodeActAgent v1.8 con claude-3-5-sonnet@20240620 alcanza una tasa de resolución del (coste medio de 1,10 $ por instancia), superando a SWE-Agent () y AutoCodeRover (), y aproximándose a Aider ().
  • HumanEvalFix (164 instancias): CodeActAgent v1.5 con gpt-4o-2024-05-13 resuelve el en una configuración de autodepuración zero-shot (en comparación con el de StarCoder2-15B).
  • WebArena (812 instancias): BrowsingAgent v1.0 obtiene un utilizando claude-3-5-sonnet y un con gpt-4o, mientras que CodeActAgent v1.8 mediante delegación alcanza un .
  • MiniWoB++ (125 entornos): BrowsingAgent v1.0 zero-shot con gpt-4o alcanza el .
  • Asistencia general y razonamiento:
    • GPQA Diamond: CodeActAgent v1.8 + claude-3-5-sonnet obtiene un (por debajo de la línea base humana experta de , pero superando al GPT-4 con CoT few-shot que obtuvo un ).
    • GAIA (Validación L1): GPTSwarm v1.0 con gpt-4o alcanza un ( para AutoGPT).
    • AgentBench (subconjunto de SO): CodeActAgent v1.5 alcanza el .
    • MINT (Matemáticas / Código): CodeActAgent v1.5 logra un en matemáticas y un en código.

Limitaciones y preguntas abiertas

  • Edición de archivos extensos: Las primitivas de edición actuales tienen dificultades al manejar bases de código grandes o archivos fuente extensos donde los desplazamientos en los números de línea provocan conflictos de edición.
  • Integración multimodal: Aunque ciertas habilidades auxiliares (parse_image, parse_pdf) extraen texto o resúmenes visuales mediante modelos de visión externos, el razonamiento multimodal nativo entre el navegador y la terminal aún no está completamente unificado.
  • Automatización de flujos de trabajo: Los flujos de trabajo continúan dependiendo en gran medida de prompts del sistema diseñados manualmente y bucles de orquestación de agentes, en lugar de arquitecturas basadas en grafos optimizadas de forma automática (p. ej., GPTSwarm).

Términos clave

OpenHands
Plataforma de código abierto impulsada por la comunidad para construir, desplegar y evaluar agentes de desarrollo de software basados en IA en entornos sandbox.
CodeAct
Arquitectura de agentes en la que el espacio de acciones se unifica en torno a la ejecución de código arbitrario en lenguajes de programación (Python, bash, acciones de navegador) en lugar de esquemas rígidos en formato JSON.
Event Stream
Registro cronológico de solo adición (append-only) que monitoriza las acciones del agente, las intervenciones del usuario y las observaciones del entorno en el runtime de OpenHands.
AgentSkills
Paquete modular de utilidades de Python inyectado en el kernel de IPython en sandbox que proporciona a los agentes funciones auxiliares para la edición de archivos, navegación y análisis de documentos.
BrowserGym
Entorno de automatización del navegador y lenguaje de acciones específico del dominio basado en Playwright utilizado por OpenHands para tareas de navegación web.
Agent Runtime
Entorno de ejecución aislado cliente-servidor que se ejecuta dentro de un contenedor Docker y gestiona comandos de bash, celdas de código de IPython y sesiones de navegador.
AgentDelegateAction
Tipo de acción especializada que permite a un agente generalista principal delegar subtareas específicas a un agente especialista en ese dominio.
SWE-Bench
Benchmark que evalúa la capacidad de un agente para resolver problemas reales de GitHub y superar suites de pruebas unitarias sin intervención humana.

Preguntas

¿Cuál es la diferencia entre OpenHands y OpenDevin?

OpenHands es la continuación oficial y el nuevo nombre de OpenDevin, evolucionando desde una recreación abierta de Devin (de Cognition) hacia una plataforma general orientada tanto al desarrollo de software como a agentes digitales generalistas.

¿Cómo garantiza OpenHands la seguridad al ejecutar código arbitrario?

Todas las acciones del agente (comandos de terminal, fragmentos de Python y acciones de navegador) se ejecutan dentro de un contenedor sandbox de Docker aislado que se comunica con el backend mediante un cliente de API REST, protegiendo el sistema anfitrión.

¿Cómo evita OpenHands el coste de las llamadas a LLMs durante las pruebas automatizadas?

El framework incluye una suite de pruebas de integración de extremo a extremo que intercepta las solicitudes a los LLMs y devuelve pares deterministas prompt-respuesta en caché, volviendo a llamar a los modelos en tiempo real solo cuando se introducen cambios que alteran los prompts.

¿Puede OpenHands ejecutarse con imágenes de Docker personalizadas del usuario?

Sí. OpenHands proporciona un flujo de compilación que instala su servidor API de ejecución de acciones sobre cualquier imagen base de Docker proporcionada por el usuario, rastreando las compilaciones mediante hashes MD5 de origen y etiquetas genéricas.

La explicación de esta página la escribió una IA a partir del artículo y puede contener errores. Consulte el artículo para los detalles.

Leer con traducción e IA