- SWE-agent behebt Bugs und Issues in echten GitHub-Repositories, indem Sprachmodelle (LMs) wie GPT-4 in Software-Engineering-Agenten umgewandelt werden
- Über das gesamte SWE-bench-Testset hinweg wurden 12,29 % der Issues gelöst und damit die beste Leistung im vollständigen Testset erreicht
Agent-Computer-Schnittstelle (ACI)
- Diese Ergebnisse wurden erzielt, indem LM-zentrierte Befehls- und Feedbackformate entworfen wurden, damit der Agent Repositories leichter durchsuchen sowie Codedateien ansehen, bearbeiten und ausführen kann.
- Dies wird als Agent-Computer-Schnittstelle (ACI) bezeichnet, und es wurde das SWE-agent-Repository aufgebaut, damit sich ACI-Designs für Coding-Agenten auf Repository-Ebene leicht iterieren lassen.
- Es wird gezeigt, dass ein gutes ACI-Design bei der Nutzung von Agenten zu deutlich besseren Ergebnissen führt.
Einrichtung
- Docker installieren und Docker lokal starten.
- Miniconda installieren und mit
conda env create -f environment.yml die Umgebung swe-agent erstellen.
- Mit
conda activate swe-agent aktivieren.
./setup.sh ausführen, um das Docker-Image für swe-agent zu erstellen.
- Im Wurzelverzeichnis dieses Repositories eine Datei
keys.cfg erstellen und die erforderlichen API-Keys sowie das GitHub-Token eintragen.
Verwendung
- Die SWE-agent-Pipeline besteht aus zwei Schritten. Der erste ist die Inferenzphase, in der ein GitHub-Issue als Eingabe verwendet wird und ein Pull Request zurückgegeben wird, der versucht, dieses zu lösen.
- Der zweite Schritt ist nur für Issues im SWE-bench-Benchmark möglich und ist die Evaluierungsphase, in der geprüft wird, ob der erzeugte Pull Request das Issue tatsächlich gelöst hat.
Evaluierung
- Dieser Schritt ist nur für Issues aus dem SWE-bench-Set möglich.
- Um den erzeugten Pull Request zu bewerten, in das Verzeichnis
evaluation/ wechseln und ./run_eval.sh ausführen.
Meinung von GN⁺
- SWE-agent erweitert die Möglichkeiten der Automatisierung im Softwareentwicklungsprozess, indem es einen innovativen Ansatz präsentiert, Sprachmodelle zur Lösung echter GitHub-Issues einzusetzen.
- Diese Technologie hat das Potenzial, Entwickler von wiederholten Bugfix-Aufgaben zu entlasten, sodass sie sich auf kreativere und komplexere Problemlösungen konzentrieren können.
- Durch die Hervorhebung der Bedeutung des ACI-Designs wird auch die Wichtigkeit von Schnittstellendesigns betont, die die Interaktion zwischen Maschine und Mensch optimieren.
3 Kommentare
Wenn solche Agenten arbeiten und dabei sogar dem Entwickler solche Fragen stellen, wäre das wirklich ziemlich gut.
"Ich habe die im Bugreport beschriebenen Reproduktionsschritte in Testcode umgesetzt, der das Problem reproduziert. Kannst du dir diesen Code ansehen und prüfen, ob ich es richtig verstanden habe?"
"Statt dieses Designs könnte man durch ein Refactoring in diese und diese Richtung im gesamten Projekt wohl 20.312 Codezeilen einsparen — do you approve?"
Ein attraktives Open-Source-Projekt.
Hacker-News-Kommentare
Kommentar zu Bug-Reports:
Kommentar zum Projekt:
Kommentar zur verwendeten Methodik:
Kommentar zu AI und Bug-Trackern:
Kommentar zum SWEbench-Benchmark:
Kommentar zum Demo-Vergleich:
Kommentar zur Review-Arbeit:
Kommentar zu ähnlichen Projekten:
Kommentar mit einem Vorschlag an die Autoren:
Kommentar zu Beiträgen für Open-Source-Projekte: