XYZNOT

Paper · arXiv 2407.16741

OpenHands: Eine offene Plattform für KI-Softwareentwickler als generalistische Agenten

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

Veröffentlicht cs.SEcs.AIcs.CL arXivPDF

Mit Übersetzung und KI lesen

Zusammenfassung in drei Zeilen

  1. 🎯 Das Entwickeln, Warten und sichere Evaluieren von KI-Softwareagenten über diverse Code- und Web-Aufgaben hinweg erfordert standardisierte Sandboxes, Werkzeuge und reproduzierbare Benchmarks.
  2. 🔧 OpenHands kombiniert eine Event-Stream-Architektur mit Docker-Sandboxes, einer erweiterbaren AgentSkills-Bibliothek, BrowserGym-basierter Navigation, Multi-Agenten-Delegation und Integrationstests mit gemockten LLMs.
  3. 📈 Unter Verwendung von Claude 3.5 Sonnet ohne Benchmark-spezifisches Prompt-Tuning erreicht CodeActAgent eine Lösungsrate von 26,0 % auf SWE-Bench Lite, 15,3 % auf WebArena und 52,0 % auf GPQA Diamond.

Abstract

Software ist eines der mächtigsten Werkzeuge, die uns Menschen zur Verfügung stehen; sie ermöglicht es versierten Programmierern, auf komplexe und tiefgreifende Weise mit der Welt zu interagieren. Gleichzeitig hat sich dank Fortschritten bei großen Sprachmodellen (LLMs) eine rasante Entwicklung bei KI-Agenten vollzogen, die mit ihrer Umgebung interagieren und Veränderungen in ihr bewirken. In diesem Artikel stellen wir OpenHands (ehemals OpenDevin) vor, eine Plattform für die Entwicklung leistungsfähiger und flexibler KI-Agenten, die auf ähnliche Weise mit der Welt interagieren wie menschliche Entwickler: durch das Schreiben von Code, die Interaktion mit der Kommandozeile und das Browsen im Web. Wir beschreiben, wie die Plattform die Implementierung neuer Agenten, die sichere Interaktion mit Sandbox-Umgebungen zur Codeausführung, die Koordination zwischen mehreren Agenten sowie die Integration von Evaluations-Benchmarks ermöglicht. Basierend auf unseren derzeit integrierten Benchmarks führen wir eine Evaluierung von Agenten über 15 anspruchsvolle Aufgaben hinweg durch, unter anderem im Bereich Software-Engineering (z. B. SWE-BENCH) und Web-Browsing (z. B. WEBARENA). OpenHands wurde unter der permissiven MIT-Lizenz veröffentlicht und ist ein Community-Projekt, das Wissenschaft und Industrie mit mehr als 2.1K Beiträgen von über 188 Mitwirkenden verbindet.

Original-Abstract (Englisch)

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.

Leseleitfaden

Problem und Motivation

Softwareentwicklung gehört zu den ausdrucksstärksten Schnittstellen, über die Menschen mit der digitalen Welt interagieren. Während große Sprachmodelle (LLMs) isolierte Code-Snippets generieren können, erfordert reales Software-Engineering Interaktionen über lange Zeithorizonte: das Navigieren in Repositories, das Modifizieren dateiübergreifender Architekturen, das Ausführen von Bash-Befehlen, das Lesen von Dokumentationen im Webbrowser sowie eigenständiges Debugging anhand von Ausführungs-Feedback.

Frühere Agenten-Frameworks litten häufig unter gravierenden architektonischen Lücken: fehlende isolierte Ausführungsumgebungen, zustandslose Code-Runner, fehlende multimodale Web-Browsing-Fähigkeiten oder das Fehlen standardisierter Evaluationswerkzeuge über heterogene Domänen hinweg. OpenHands (ehemals OpenDevin) adressiert diesen Bedarf mit einer quelloffenen Plattform (MIT-lizenziert), die Sandbox-Laufzeitumgebungen, erweiterbare Agent-Computer-Interfaces (ACI), Multi-Agenten-Koordination und standardisiertes Benchmarking bietet.

Kernideen

  • Event-Stream-Architektur: Benutzeranweisungen, Agenten-Aktionen und Laufzeitbeobachtungen werden chronologisch in einem Event Stream erfasst, der die Kommunikation zwischen Frontends, Agenten und Sandbox-Laufzeiten vereinheitlicht.
  • Programmiersprachen-Primitive (PL-Primitive): Anstelle fragiler, benutzerdefinierter APIs basieren die Interaktionen des Agenten auf allgemeinen Aktionen: IPythonRunCellAction, CmdRunAction und BrowseInteractiveAction (über BrowserGym).
  • Erweiterbare AgentSkills: Ein modulares Python-Paket, das in den IPython-Kernel vorinstalliert ist, stellt High-Level-Dienstprogramme bereit (z. B. AST-basierte Zeilenbearbeitung mit edit_file, PDF-Parsing, multimodale Bildextraktion), ohne bestehende Pakete neu erfinden zu müssen.
  • Agenten-Delegation: Spezialisierte Agenten übernehmen domänenspezifische Arbeitsabläufe (z. B. das Delegieren von Web-Aufgaben via AgentDelegateAction an einen dedizierten BrowsingAgent).
  • Qualitätssicherung durch gemocktes Testen: Routinemäßige Continuous-Integration-Tests prüfen Regressionen, Aktionen und Sandbox-Stabilität mittels deterministischem Prompt-Response-Caching anstelle teurer Echtzeit-API-Aufrufe.

Methode (mit den wichtigsten Gleichungen)

Der Ausführungszyklus von OpenHands basiert auf einer diskreten Schrittfunktion, bei der der Agent einen Umgebungszustand auf eine Aktion abbildet: Hierbei kapselt der Zustand den chronologischen Verlauf vorheriger Aktionen und Beobachtungen ein: wobei zusätzliche Zustandsmetadaten erfasst (kumulierte LLM-Kosten, aktiver Multi-Agenten-Delegations-Stack, Konfigurationsparameter).

Der Aktionsraum umfasst:

  • CmdRunAction(command): Führt beliebige Bash-Befehle in der Ziel-Linux-Shell aus.
  • IPythonRunCellAction(code): Führt zustandsbehafteten Python-Code in einem persistenten Jupyter-Kernel aus und stellt AgentSkills bereit.
  • BrowseInteractiveAction(code): Führt Playwright-gestützte BrowserGym-Primitive aus (click(bid), fill(bid, val), goto(url) usw.).
  • AgentDelegateAction(subtask, agent_name): Schiebt ein Teilziel auf den Agenten-Stack, um einen Spezialisten aufzurufen.
  • AgentFinishAction(): Beendet die Ausführung.

Die Ausführung erfolgt innerhalb einer sicheren Client-Server-Docker-Sandbox. Basis-Docker-Container werden um einen OpenHands-REST-API-Server (runtime.py) erweitert und mithilfe eines dualen Tagging-Mechanismus versehen: einem MD5-Inhaltshash (target_image_repo:target_image_hash_tag) für strikte Reproduzierbarkeit und einem semantischen generischen Tag (runtime:oh_v{VERSION}_{BASE_IMAGE}_tag_{IMAGE_TAG}) für gecachte Basisschicht-Builds.

Ergebnisse (mit den wichtigsten Zahlen)

OpenHands evaluiert generalistische Agenten über 15 Benchmarks aus den Bereichen Software-Engineering, Web-Browsing und allgemeine Assistenzaufgaben hinweg – ohne pro Benchmark angepasstes Prompt-Design:

  • SWE-Bench Lite (300 Instanzen, ohne Hinweise): CodeActAgent v1.8 mit claude-3-5-sonnet@20240620 erreicht eine Lösungsrate von (durchschnittliche Kosten von USD pro Instanz), übertrifft damit SWE-Agent () sowie AutoCodeRover () und nähert sich Aider () an.
  • HumanEvalFix (164 Instanzen): CodeActAgent v1.5 mit gpt-4o-2024-05-13 löst in einem 0-Shot-Self-Debugging-Setup (im Vergleich zu bei StarCoder2-15B).
  • WebArena (812 Instanzen): BrowsingAgent v1.0 erreicht mit claude-3-5-sonnet und mit gpt-4o, während CodeActAgent v1.8 über Delegation erzielt.
  • MiniWoB++ (125 Umgebungen): Zero-Shot BrowsingAgent v1.0 mit gpt-4o erreicht .
  • Allgemeine Assistenzaufgaben & Reasoning:
    • GPQA Diamond: CodeActAgent v1.8 + claude-3-5-sonnet erzielt (liegt unter der menschlichen Experten-Baseline von , übertrifft jedoch Few-Shot CoT GPT-4 mit ).
    • GAIA (L1 Validation): GPTSwarm v1.0 mit gpt-4o erreicht ( für AutoGPT).
    • AgentBench (OS-Subset): CodeActAgent v1.5 erreicht .
    • MINT (Math / Code): CodeActAgent v1.5 erreicht im Bereich Mathematik und im Bereich Code.

Grenzen und offene Fragen

  • Bearbeitung langer Dateien: Die aktuellen Bearbeitungsprimitive stoßen an ihre Grenzen, wenn sie auf große Codebases oder lange Quelldateien angewendet werden, bei denen Zeilennummernverschiebungen zu Bearbeitungskonflikten führen.
  • Multimodale Integration: Obwohl Hilfsfunktionen (parse_image, parse_pdf) Text- oder Bildzusammenfassungen über externe Vision-Modelle extrahieren, ist das native multimodale Reasoning in Browser und Terminal noch nicht vollständig vereinheitlicht.
  • Workflow-Automatisierung: Workflows hängen weiterhin stark von manuell erstellten System-Prompts und Agenten-Orchestrierungsschleifen ab, anstatt automatisch optimierte Graph-Architekturen (z. B. GPTSwarm) zu nutzen.

Schlüsselbegriffe

OpenHands
Eine quelloffene, Community-getriebene Plattform zum Erstellen, Bereitstellen und Evaluieren von KI-Softwareentwickler-Agenten in Sandbox-Umgebungen.
CodeAct
Eine Agenten-Architektur, bei der der Aktionsraum auf die Ausführung von beliebigem Programmiersprachen-Code (Python, Bash, Browser-Aktionen) statt auf starre JSON-Schemas vereinheitlicht ist.
Event Stream
Ein chronologisches, rein anfügbares Protokoll zur Nachverfolgung von Agenten-Aktionen, Benutzereingriffen und Umgebungsbeobachtungen über die gesamte OpenHands-Laufzeit hinweg.
AgentSkills
Ein modulares Python-Hilfspaket, das in den isolierten IPython-Kernel injiziert wird und Agenten Hilfsfunktionen für Dateibearbeitung, Navigation und Dokumenten-Parsing bereitstellt.
BrowserGym
Eine auf Playwright basierende Browser-Automatisierungsumgebung und domänenspezifische Aktionssprache, die von OpenHands für Web-Navigationsaufgaben verwendet wird.
Agent Runtime
Die isolierte Client-Server-Ausführungsumgebung innerhalb eines Docker-Containers, die Bash-Befehle, IPython-Codezellen und Browser-Sitzungen verarbeitet.
AgentDelegateAction
Ein spezialisierter Aktionstyp, der es einem primären generalistischen Agenten ermöglicht, bestimmte Teilaufgaben an einen domänenspezifischen Spezialisten-Agenten zu delegieren.
SWE-Bench
Ein Benchmark zur Bewertung der Fähigkeit eines Agenten, reale GitHub-Issues ohne menschliche Anleitung zu lösen und automatisierte Unit-Test-Suiten zu bestehen.

Fragen

Was ist der Unterschied zwischen OpenHands und OpenDevin?

OpenHands ist die offizielle Fortführung und Umbenennung von OpenDevin; es entwickelte sich von einem offenen Nachbau von Cognitions Devin zu einer universellen Plattform für Softwareentwicklung und generalistische digitale Agenten.

Wie gewährleistet OpenHands die Sicherheit bei der Ausführung von beliebigem Code?

Alle Agenten-Aktionen (Shell-Befehle, Python-Snippets und Browser-Aktionen) werden in einem isolierten Docker-Sandbox-Container ausgeführt, der über einen REST-API-Client mit dem Backend kommuniziert und das Hostsystem abschirmt.

Wie verhindert OpenHands kostspielige LLM-Aufrufe während automatisierter Tests?

Das Framework nutzt eine End-to-End-Integrationstestsuite, die LLM-Anfragen abfängt und gecachte, deterministische Prompt-Response-Paare zurückgibt; Live-Modelle werden nur bei brechenden Änderungen an den Prompts erneut aufgerufen.

Kann OpenHands mit beliebigen benutzerdefinierten Docker-Images ausgeführt werden?

Ja. OpenHands bietet einen Build-Workflow, der seinen Aktionsausführungs-API-Server auf jedem vom Benutzer bereitgestellten Basis-Docker-Image installiert, wobei Builds über MD5-Quell-Hashes und generische Tags nachverfolgt werden.

Die Übersicht auf dieser Seite wurde von einer KI aus dem Paper erstellt und kann Fehler enthalten. Details stehen im Paper.

Mit Übersetzung und KI lesen