Heim > Technologie-Peripheriegeräte > KI > Programmierer sind begeistert! Microsoft hat CodePlan vorgeschlagen, um LLM-Codierungsaufgaben über 168 Codebasen hinweg zu automatisieren

Programmierer sind begeistert! Microsoft hat CodePlan vorgeschlagen, um LLM-Codierungsaufgaben über 168 Codebasen hinweg zu automatisieren

WBOY
Freigeben: 2023-10-04 20:29:06
nach vorne
790 Leute haben es durchsucht

Bei großen Modellen eignen sie sich gut für lokalisierte Kodierungsaufgaben.

Wenn die Aufgabe mehrere voneinander abhängige Dateien umfasst, kann LLM dieses Problem nicht lösen

Microsoft-Forscher haben zu diesem Zweck ein aufgabenunabhängiges neuronales Netzwerk-Framework namens CodePlan entwickelt

Programmierer sind begeistert! Microsoft hat CodePlan vorgeschlagen, um LLM-Codierungsaufgaben über 168 Codebasen hinweg zu automatisierenBild

Papieradresse: https ://arxiv.org/pdf/2309.12499.pdf

In dem Artikel integriert CodePlan eine mehrstufige Bearbeitungskette (Chain-of-Edits), die eine Kombination aus Programmanalyse, Planung und LLM ist zusammen sein.

Schauen wir uns im Detail an, wie ist CodePlan aufgebaut?

CodePlan: Großes Modell + Planung

Softwareentwicklungsaktivitäten wie Paketmigration, Behebung von Fehlerberichten für statische Analysen oder Tests und das Hinzufügen von Typhinweisen oder anderen Spezifikationen zur Codebasis umfassen die Abbildung des gesamten Codespeichers durch universelle Bearbeitung von Bibliotheken.

Forscher planen diese Aktivitäten, um „Codierungsaufgaben auf Repository-Ebene“ zu ermöglichen

Codierungstools wie GitHub Copilot und Code Whisperer haben Unterstützung für große Modellfunktionen erhalten und bieten Codierern bei lokalisierten Codierungsproblemen die bereitgestellte Lösung

Tatsache ist jedoch, dass „Codierungsaufgaben auf Repository-Ebene“ komplexer sind und nicht direkt von LLM gelöst werden können, da der Code im Repository voneinander abhängig ist und das gesamte Repository möglicherweise zu groß ist, um aufgenommen zu werden. Tipp

In dieser Studie Das Microsoft-Team betrachtete das Codierungsframework auf Bibliotheksebene als Planungsproblem und schlug ein aufgabenunabhängiges Framework namens CodePlan vor.

CodePlan kombiniert eine mehrstufige Bearbeitungskette (Plan), bei der jeder Schritt LLM am Codeort aufruft. Der Kontext an dieser Codestelle stammt aus dem gesamten Repository, früheren Codeänderungen und aufgabenspezifischen Anweisungen.

CodePlan ist eine neue Kombination, die auf inkrementeller Abhängigkeitsanalyse, Analyse möglicher Änderungsauswirkungen und adaptivem Planungsalgorithmus basiert

Programmierer sind begeistert! Microsoft hat CodePlan vorgeschlagen, um LLM-Codierungsaufgaben über 168 Codebasen hinweg zu automatisierenBild

Die folgende Abbildung zeigt die Änderungen in der komplexen Bibliotheks-API, Microsoft Research Die Person hat die Aufgabe, die Codebasis entsprechend dieser Änderung zu migrieren.

Programmierer sind begeistert! Microsoft hat CodePlan vorgeschlagen, um LLM-Codierungsaufgaben über 168 Codebasen hinweg zu automatisierenBilder

Die linke Seite von Abbildung 3 zeigt den Teil der Codebibliothek, der sich auf die Verwendung der Pluralbibliothek bezieht.

Konkret ruft die Methode func in der Datei Create.cs die Methode in der Bibliothek auf Wenn Sie die Methode „create_complex“ verwenden, ruft die Methode „Process.cs“ in der Datei „Process.cs“ func auf.

Programmierer sind begeistert! Microsoft hat CodePlan vorgeschlagen, um LLM-Codierungsaufgaben über 168 Codebasen hinweg zu automatisierenBild

Der Forscher übergibt die Aufgabenbeschreibung und den Funktionskörper aus Abbildung 1 an LLM, um den geänderten Funktionscode zu generieren, wie auf der rechten Seite von Abbildung 3 dargestellt.

Wie Sie sehen können, LLM hat den Aufruf der API „create_complex“ korrekt bearbeitet, sodass ein Objekt vom Typ „Complex“ und nicht ein Tupel aus zwei Gleitkommawerten zurückgegeben wird.

Beachten Sie, dass diese Bearbeitung zu einer Änderung der Signatur der Methode func geführt hat – sie gibt jetzt ein Objekt vom Typ Complex zurück.

Was geändert werden muss, ist: Der Aufrufer der Methode func muss geändert werden, z. B. die Prozessmethode in der Datei Process.cs, wie in der unteren linken Ecke von Abbildung 3 dargestellt. Ohne entsprechende Änderungen am Hauptteil der Prozessmethode kann der Code nicht erstellt werden!

Die untere rechte Seite von Abbildung 3 zeigt entsprechende Änderungen an der Prozessmethode, mit denen das Repository in einen konsistenten Zustand gebracht werden kann, sodass beim Kompilieren keine Fehler auftreten.

Die Hauptaufgabe der Forscher besteht darin, ein „Kodierungssystem auf Repository-Ebene“ einzurichten, das automatisch die für die Bearbeitung erforderlichen Ableitungsspezifikationen generieren kann

LLM-gesteuerte Kodierungsaufgaben auf Bibliotheksebene sind wie folgt definiert:

Programmierer sind begeistert! Microsoft hat CodePlan vorgeschlagen, um LLM-Codierungsaufgaben über 168 Codebasen hinweg zu automatisierenBilder

Im Gesamtrahmen von CodePlan umfassen die Eingaben ein Repository, eine Aufgabe, die die Seed-Spezifikation durch Anweisungen in natürlicher Sprache oder eine Reihe anfänglicher Codeänderungen ausdrückt, ein Korrektheitsorakel und ein LLM

CodePlan Es wird ein Plandiagramm erstellt, in dem jeder Knoten eine Codebearbeitungsaufgabe darstellt, die LLM ausführen muss, und die Kante den Zielknoten darstellt, der nach dem Quellknoten ausgeführt werden muss.

CodePlan überwacht die Codebearbeitung und erweitert sich adaptiv das Plandiagramm.

Sobald alle Schritte im Plan abgeschlossen sind, wird das Repository von Oracle analysiert. Wenn Oracle das Repository validiert, ist die Aufgabe abgeschlossen. Wenn ein Fehler gefunden wird, dient der Fehlerbericht als Ausgangsspezifikation für die nächste Runde der Plangenerierung und -ausführung.

Programmierer sind begeistert! Microsoft hat CodePlan vorgeschlagen, um LLM-Codierungsaufgaben über 168 Codebasen hinweg zu automatisierenBilder

Darüber hinaus verwaltet der CodePlan-Algorithmus auch ein Abhängigkeitsdiagramm, und Abbildung 4 zeigt die Struktur des Abhängigkeitsdiagramms.

Programmierer sind begeistert! Microsoft hat CodePlan vorgeschlagen, um LLM-Codierungsaufgaben über 168 Codebasen hinweg zu automatisierenBilder

SOTA aktualisieren

Forscher bewerteten die Wirksamkeit von CodePlan bei zwei Aufgaben auf Repository-Ebene: Paketmigration (C#) und zeitliche Codebearbeitung (Python).

Jede Aufgabe wird anhand mehrerer Codes bewertet Basen, die jeweils voneinander abhängige Änderungen an mehreren Dateien (2-97 Dateien) erfordern.

Programmierer sind begeistert! Microsoft hat CodePlan vorgeschlagen, um LLM-Codierungsaufgaben über 168 Codebasen hinweg zu automatisierenBilder

Nie zuvor wurde LLM verwendet, um eine Codierungsaufgabe dieser Komplexität zu automatisieren.

Forschungsergebnisse zeigen, dass CodePlan eher mit der Grundwahrheit übereinstimmt als mit der Grundlinie und in der Lage ist, dies zu erreichen 5/6 Repositorys bestehen Gültigkeitsprüfungen wie fehlerfreie Builds und korrekte Codebearbeitungen

Insgesamt bietet CodePlan einen vielversprechenden Ansatz zur Automatisierung komplexer Codierungsaufgaben auf Bibliotheksebene, wodurch sowohl die Produktivität verbessert als auch die Genauigkeit erneut verbessert wurde

Es bewältigt erfolgreich viele Herausforderungen und eröffnet neue Möglichkeiten für eine effiziente und zuverlässige Software-Engineering-Praxis

Referenz: https://www.php.cn/ link/23b1f559d8bd157d0d741c83957ed4f2

Das obige ist der detaillierte Inhalt vonProgrammierer sind begeistert! Microsoft hat CodePlan vorgeschlagen, um LLM-Codierungsaufgaben über 168 Codebasen hinweg zu automatisieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:51cto.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage