Large Language Models (LLMs) haben die Softwareentwicklung in den letzten Jahren revolutioniert und zeigen bemerkenswerte Fähigkeiten in verschiedenen Aufgaben. Doch während es bereits autonome Softwareagenten gibt, die auf LLMs basieren und für End-to-End-Entwicklungsaufgaben konzipiert sind, sind diese Systeme typischerweise auf bestimmte Aufgaben innerhalb der Softwareentwicklung spezialisiert. Ein neues, vielseitiges Multiagentensystem namens HyperAgent wurde nun von Forschern des FPT Software AI Center in Vietnam vorgestellt. HyperAgent wurde entwickelt, um ein breites Spektrum von Softwareentwicklungsaufgaben in verschiedenen Programmiersprachen zu bewältigen, indem es die Arbeitsabläufe menschlicher Entwickler nachahmt.
Nachahmung menschlicher Arbeitsabläufe
HyperAgent besteht aus vier spezialisierten Agenten - Planer, Navigator, Code-Editor und Executor - und verwaltet den gesamten Lebenszyklus von Softwareentwicklungsaufgaben von der ersten Idee bis zur endgültigen Verifikation. Das Design von HyperAgent ist von den typischen Arbeitsabläufen inspiriert, denen Softwareentwickler in ihrem Alltag folgen – sei es bei der Implementierung neuer Funktionen, der Lokalisierung von Fehlern in umfangreichen Projekten oder der Bereitstellung von Korrekturen für gemeldete Probleme.
Obwohl Entwickler unterschiedliche Tools oder Ansätze verwenden können, halten sie sich im Allgemeinen an konsistente Workflowmuster. Ein typischer Arbeitsablauf lässt sich in vier Phasen unterteilen:
- Analyse & Planung
- Feature-Lokalisierung
- Bearbeitung
- Ausführung
In der Analyse- und Planungsphase macht sich der Entwickler zunächst anhand von Dokumentationen und Gesprächen mit Stakeholdern mit den Anforderungen der Aufgabe vertraut. Anschließend wird ein flexibler Arbeitsplan erstellt, der die wichtigsten Schritte, potenzielle Herausforderungen und erwarteten Ergebnisse umreißt. In der Feature-Lokalisierungsphase navigiert der Entwickler durch das Repository, um relevante Komponenten, wie Klassen, Funktionen, Bibliotheken oder Module, zu identifizieren, die für die Aufgabe relevant sind. Anschließend werden in der Bearbeitungsphase die identifizierten Codekomponenten bearbeitet, Änderungen implementiert oder neue Funktionen hinzugefügt. Abschließend testet der Entwickler in der Ausführungsphase den modifizierten Code, um sicherzustellen, dass er die Anforderungen des Plans erfüllt. Dazu gehören die Ausführung von Unit- und Integrationstests sowie manuelle Tests oder Peer-Reviews.
Vier Agenten für mehr Effizienz
Jeder der vier Agenten von HyperAgent entspricht einem bestimmten Schritt in diesem allgemeinen Arbeitsablauf:
- Planer
- Navigator
- Code-Editor
- Executor
Dieses Design bietet laut den Entwicklern drei Hauptvorteile gegenüber bestehenden Methoden:
- Generalisierbarkeit: Das Framework ist so konzipiert, dass es sich mit minimalen Konfigurationsänderungen leicht an eine Vielzahl von Aufgaben anpassen lässt.
- Effizienz: Jeder Agent ist so optimiert, dass er Prozesse mit unterschiedlicher Komplexität verwalten kann, die unterschiedliche Intelligenzgrade von LLMs erfordern.
- Skalierbarkeit: Das Framework ist so konzipiert, dass es sich effektiv skalieren lässt, wenn es in realen Szenarien eingesetzt wird, in denen die Anzahl der Teilaufgaben sehr groß ist.
Vielversprechende Ergebnisse
Um die Effektivität von HyperAgent bei verschiedenen Softwareentwicklungsaufgaben zu bewerten, wurden umfangreiche Tests mit verschiedenen Benchmarks durchgeführt. Bei der Behebung von GitHub-Problemen übertraf HyperAgent mit einer Erfolgsquote von 25,01 % bei SWE-Bench-Lite und 31,40 % bei SWE-Bench-Verified die Ergebnisse bestehender Methoden. Darüber hinaus zeigte HyperAgent eine hohe Leistung bei der Codegenerierung auf Repository-Ebene (RepoExec) sowie bei der Fehlerlokalisierung und -behebung (Defects4J), wobei es spezialisierte Systeme oft übertraf.
HyperAgent als Wegbereiter
Die Ergebnisse von HyperAgent zeigen das Potenzial generalistischer Ansätze in der Softwareentwicklung auf. HyperAgent ist ein vielseitiges Werkzeug, das sich mit minimalen Konfigurationsänderungen an verschiedene Aufgaben anpassen kann. Sein Design, das auf Generalisierbarkeit, Effizienz und Skalierbarkeit setzt, macht es besonders für reale Softwareentwicklungsszenarien geeignet, in denen die Aufgaben in ihrer Komplexität und ihrem Umfang stark variieren können. Zukünftige Arbeiten könnten sich mit der Integration von HyperAgent in bestehende Entwicklungsumgebungen und Versionskontrollsysteme befassen, sein Potenzial in spezialisierten Bereichen wie der sicherheitsorientierten Code-Überprüfung oder der Leistungsoptimierung untersuchen, seine Erklärbarkeit verbessern und seine Wissensbasis kontinuierlich aktualisieren.
Bibliography
- https://arxiv.org/abs/2409.16299
- https://arxiv.org/html/2409.16299v1
- https://www.marktechpost.com/2024/09/11/fpt-software-ai-center-introduces-hyperagent-a-groundbreaking-generalist-agent-system-to-resolve-various-software-engineering-tasks-at-scale-achieving-sota-performance-on-swe-bench-and-defects4j/
- https://github.com/e2b-dev/awesome-ai-agents
- https://github.com/opendilab/awesome-ui-agents/blob/main/README.md
- https://www.researchgate.net/publication/380907343_SWE-agent_Agent-Computer_Interfaces_Enable_Automated_Software_Engineering
- https://multion-research.s3.us-east-2.amazonaws.com/AgentQ.pdf
- https://paperswithcode.com/paper/harnessing-pre-trained-generalist-agents-for
- https://www.researchgate.net/publication/377974738_CodePori_Large_Scale_Model_for_Autonomous_Software_Development_by_Using_Multi-Agents
- https://emas.in.tu-clausthal.de/2022/papers/paper3.pdf