ProjAgent: Procedural Similarity Retrieval for Repository-Level Code Generation
ProjAgent ist ein auf Repository-Ebene agierendes System zur Codegenerierung, das die Leistung durch das Abrufen von Funktionen basierend auf prozeduraler Ähnlichkeit mittels eines agentischen Workflows und der Verfeinerung von Ausgaben durch statische Analyse-Feedback steigert und dabei eine Pass@1-Rate von 41,14 % auf dem REPOCOD-Benchmark erreicht.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich vor, Sie versuchen, ein neues Kapitel für einen riesigen, 10.000-seitigen Mystery-Roman zu schreiben. Sie kennen den Handlungspunkt, den Sie treffen müssen, aber Sie kennen die Namen der Charaktere nicht, die spezifischen Regeln der Stadt oder wie der Detektiv normalerweise Verbrechen löst. Wenn Sie einfach nur raten, erfinden Sie vielleicht einen Charakter, der nicht existiert, oder brechen die Gesetze der Stadt, was die Geschichte ruinieren würde. Das ist genau das, was passiert, wenn Künstliche Intelligenz versucht, Code für ein großes Softwareprojekt zu schreiben.
Lange Zeit versuchten KI-Assistenten, Hilfe zu finden, indem sie nach „Ähnlichkeiten“ suchten. Wenn Sie nach einer Funktion zur Berechnung der Temperatur fragten, suchte die KI nach anderem Code, der das Wort „Temperatur“ verwendete oder oberflächlich ähnlich aussah. Das Paper argumentt, dass dies so ist, als würde man versuchen, ein Rezept für einen Kuchen zu finden, nur weil das andere Rezept auch „Zucker“ erwähnt. Es übersieht die wahre Magie: wie das Kochen tatsächlich stattfindet.
Die Autoren Qihong Chen, Aaron Imani und Iftekhar Ahmed entwickelten ein neues System namens ProjAgent. Sie entdeckten, dass der hilfreichste Code nicht immer der Code ist, der gleich aussieht; es ist der Code, der auf die gleiche Weise denkt.
Das „Denken“ vs. das „Sprechen“
Das Paper schlägt vor, dass Code zwei Ebenen hat: die Wörter, die er verwendet (wie Variablennamen und Kommentare) und die eigentlichen Schritte, die er unternimmt, um ein Problem zu lösen (die Logik).
Stellen Sie sich zwei Köche vor. Koch A bereitet eine Pizza zu, und Koch B bereitet einen Salat zu.
- Der alte Weg (Lexikalische/Semantische Suche): Wenn Sie Hilfe bei der Zubereitung einer Pizza suchen, würde die alte KI Koch B ignorieren, weil er einen Salat macht. Sie würde nur nach anderen Pizzaköchen suchen.
- Der neue Weg (ProjAgent): ProjAgent erkennt, dass beide Köche dasselbe tun müssen: Zutaten hacken, prüfen, ob sie frisch sind, und in eine Schüssel geben. Obwohl einer einen Salat und der andere eine Pizza zubereitet, sind ihre prozeduralen Schritte identisch. ProjAgent findet Koch B und sagt: „Hey, schau dir an, wie Koch B prüft, ob der Salat frisch ist! Du kannst dieselbe Logik verwenden, um zu prüfen, ob deine Tomate frisch ist!“
Das Paper schließt die Idee explizit aus, dass oberflächliche Ähnlichkeit (das Betrachten der Wörter) ausreicht. Die Autoren argumentieren, dass das Verlassen auf nur Wörter oder einfache Bedeutung oft die kritischen „Wie-man-es-macht“-Schritte verpasst, da verschiedene Projekte unterschiedliche Namen für dieselben Aktionen verwenden.
Wie ProjAgent funktioniert: Der Detektiv-Agent
ProjAgent agiert wie ein superintelligenter Detektiv mit einem speziellen Werkzeug. So löst er das Rätsel:
- Es zerlegt es: Es nimmt den neuen Code, den Sie schreiben wollen, und zerlegt ihn in winzige logische Schritte, wie zum Beispiel „prüfen, ob die Zahl negativ ist“ oder „die Einheiten umwandeln“.
- Die „Denk“-Suche: Anstatt nur die Wörter zu lesen, nutzt ProjAgent einen speziellen Trick, um in die „verborgenen Gedanken“ des KI-Modells zu schauen. Es entfernt das schicke Vokabular und betrachtet nur die reine Logik. Es findet anderen Code im Projekt, der exakt denselben mentalen Tanz aufführt, selbst wenn er in einem völlig anderen Teil der Codebasis geschrieben ist.
- Die Jagd des Agenten: Wenn die erste Suche nicht genügend Ergebnisse liefert, geht ein digitaler „Agent“ (ein kleiner KI-Roboter) auf eine Schnitzeljagd durch die Projektdateien. Er liest Dateien, sucht nach Funktionen und fragt: „Gibt es hier etwas, das so denkt wie das hier?“
- Doppel-Check: Um sicherzustellen, dass er nicht getäuscht wurde, verwendet das System ein Werkzeug zur „statischen Analyse“. Denken Sie an dies als eine Art Rechtschreibprüfung für Logik. Es prüft, ob der Code tatsächlich ohne Absturz läuft. Wenn die KI einen Fehler macht, sagt das System: „Ups, das wird nicht funktionieren“, und bittet die KI, es erneut zu versuchen. Diese Schleife läuft bis zu 10 Mal durch, bis der Code solide ist.
Die Ergebnisse: Hat es funktioniert?
Die Autoren testeten ProjAgent auf einem Benchmark namens REPOCOD, der 980 reale Kodierprobleme aus 11 verschiedenen Softwareprojekten enthält.
- Die Punktzahl: ProjAgent erreichte einen Pass@1-Score von 41,14 %. Das bedeutet, dass es beim ersten Versuch für etwa 41 von 100 Problemen funktionierenden Code schrieb.
- Der Vergleich: Dies schlug die bisher besten Methoden. Die alten „Dense Search“-Methoden erreichten nur 28,83 %, und die „Sparse Search“ (das Suchen nach Schlüsselwörtern) erreichte 26,58 %. Selbst ein erstklassiges System namens SpecAgent erreichte nur 34,52 %.
- Der Beweis: Das Paper legt nahe, dass der größte Schub durch das Finden jener „prozedural ähnlichen“ Schritte kam. Als sie die prozedurale Suche entfernten, sank der Wert auf 25,76 %. Als sie die semantische Suche (den Teil des Wortabgleichs) entfernten, sank er auf 32,29 %. Dies beweist, dass man sowohl das „Wie“ als auch das „Was“ braucht, um erfolgreich zu sein.
Was das Paper nicht behauptet
Es ist wichtig zu wissen, was dieses Paper nicht sagt.
- Es behauptet nicht, alle Kodierprobleme gelöst zu haben. Der Wert liegt bei 41,14 %, was bedeutet, dass es immer noch öfter als die Hälfte der Zeit scheitert.
- Es sagt nicht, dass dies für jede Programmiersprache funktioniert. Die Tests wurden nur für Python-Projekte durchgeführt.
- Es behauptet nicht, dass der „Agent“ perfekt ist. Die Autoren geben zu, dass der Agent manchmal Zeit oder Speicherplatz aufgebraucht und den besten Code nicht finden kann, was darauf hindeutet, dass bessere Explorationstools noch benötigt werden.
Das Fazit
Das Paper legt nahe, dass eine KI, um guten Code für große Projekte zu schreiben, aufhören muss, nur nach passenden Wörtern zu suchen, und statfangen muss, nach Mustern des Denkens zu suchen. Indem es Code findet, der Probleme auf die gleiche Art und Weise löst, selbst wenn die Wörter völlig anders sind, hilft ProjAgent der KI, bessere, zuverlässigere Software zu schreiben. Es ist ein Schritt nach vorn, aber der Weg zur perfekten Codegenerierung ist noch ein langer.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.