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
Zusammenfassung in drei Zeilen
- 🎯 Das Entwickeln, Warten und sichere Evaluieren von KI-Softwareagenten über diverse Code- und Web-Aufgaben hinweg erfordert standardisierte Sandboxes, Werkzeuge und reproduzierbare Benchmarks.
- 🔧 OpenHands kombiniert eine Event-Stream-Architektur mit Docker-Sandboxes, einer erweiterbaren AgentSkills-Bibliothek, BrowserGym-basierter Navigation, Multi-Agenten-Delegation und Integrationstests mit gemockten LLMs.
- 📈 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,CmdRunActionundBrowseInteractiveAction(ü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
AgentDelegateActionan einen dediziertenBrowsingAgent). - 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 stelltAgentSkillsbereit.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.8mitclaude-3-5-sonnet@20240620erreicht eine Lösungsrate von (durchschnittliche Kosten von USD pro Instanz), übertrifft damitSWE-Agent() sowieAutoCodeRover() und nähert sichAider() an. - HumanEvalFix (164 Instanzen):
CodeActAgent v1.5mitgpt-4o-2024-05-13löst in einem 0-Shot-Self-Debugging-Setup (im Vergleich zu bei StarCoder2-15B). - WebArena (812 Instanzen):
BrowsingAgent v1.0erreicht mitclaude-3-5-sonnetund mitgpt-4o, währendCodeActAgent v1.8über Delegation erzielt. - MiniWoB++ (125 Umgebungen): Zero-Shot
BrowsingAgent v1.0mitgpt-4oerreicht . - Allgemeine Assistenzaufgaben & Reasoning:
- GPQA Diamond: CodeActAgent v1.8 +
claude-3-5-sonneterzielt (liegt unter der menschlichen Experten-Baseline von , übertrifft jedoch Few-Shot CoT GPT-4 mit ). - GAIA (L1 Validation): GPTSwarm v1.0 mit
gpt-4oerreicht ( für AutoGPT). - AgentBench (OS-Subset): CodeActAgent v1.5 erreicht .
- MINT (Math / Code): CodeActAgent v1.5 erreicht im Bereich Mathematik und im Bereich Code.
- GPQA Diamond: CodeActAgent v1.8 +
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.