2024-08-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Einreichung durch das CodexGraph-Team
Qubits |. Öffentliches Konto QbitAI
Sie können die Aufgaben zur Codegenerierung und -vervollständigung nicht abschließen? !
Es ist besser, die Hilfe von Large Language Models (LLMs) zu nutzen.
Wenn es jedoch so istLLMs können beim Umgang mit großen, aus mehreren Dateien bestehenden Codebasen Schwierigkeiten haben.Derzeit wird häufig das Retrieval-Augmented Code Generation (RACG)-System benötigt, um relevante Codeinformationen abzurufen.
Bestehende Lösungen, wie z. B. auf semantischer Ähnlichkeit basierender Abruf und manuell entworfene Tools und APIs, sind zwar bei bestimmten Aufgaben wirksam, weisen jedoch Einschränkungen hinsichtlich der Generalisierungsfähigkeiten und der universellen Anwendbarkeit auf.
Um die Universalitätsmängel bestehender RACG-Methoden zu mildern, schlugen Forscher der National University of Singapore, Alibaba und der Xi'an Jiaotong University vorCodexGraph,Ein System, das die Codegraph-Datenbank als Medium verwendet, um das Sprachmodell und die Codebasis zu verbinden.
Das Forschungsteam bewertete CodexGraph anhand von drei repräsentativen akademischen Benchmarks und implementierte CodexGraph außerdem in fünf realen Code-Anwendungsszenarien basierend auf ModelScope-Agent.
Experimente und reale Praktiken zeigen die Wirksamkeit und Vielseitigkeit von CodexGraph.
Forschungsmethoden
CodexGraph verbindet das Sprachmodell auf innovative Weise mit der Codebasis über die Codegraph-Datenbankschnittstelle., um die Mängel bestehender Methoden zu überwinden.
Der Arbeitsablauf dieses Systems umfasst hauptsächlich die folgenden Schritte:
Erstellen Sie zunächst die Codegraph-Datenbank。
Verwenden Sie statische Analysetechnologie, um Codesymbole (wie Module, Klassen, Funktionen usw.) in der Codebasis und die Beziehungen zwischen ihnen gemäß dem vordefinierten Schema in Knoten und Kanten in der Diagrammdatenbank abzubilden.
Zweitens Codestruktur-bewusste Abfragen.
Nutzen Sie die Flexibilität der Graph-Abfragesprache und kombinieren Sie sie mit den Strukturmerkmalen der Graph-Datenbank, um komplexe Abfragen und einen detaillierten Abruf von Code-Graphen zu erreichen.
Drittens die Strategie „Schreiben, dann übersetzen“.
Der primäre LM-Agent analysiert zunächst Codeprobleme und generiert Abfragen in natürlicher Sprache.
Ein spezialisierter Übersetzungs-LM-Agent übersetzt diese Abfragen dann in eine formatierte Diagrammabfragesprache.
Viertens iterative Pipeline.
Durch einen iterativen Ansatz optimiert der LM-Agent schrittweise die Abfrage- und Abrufergebnisse basierend auf Benutzerfragen und erfassten Informationen.
Experiment
Im experimentellen Teil wurde CodexGraph anhand von drei repräsentativen Benchmarks auf Code-Basisebene evaluiert: CrossCodeEval, EvoCodeBench und SWE-bench.
Diese TestsBehandelt dateiübergreifende Codevervollständigung, Codegenerierung und automatisierte GitHub-Problemlösungusw. aus vielen Aspekten.
Experimentelle Ergebnisse zeigen, dass CodexGraph in allen Benchmark-Tests eine hervorragende und stabile Leistung zeigt und die Wirksamkeit der Codegraph-Datenbank als Schnittstelle zwischen Sprachmodellen und Codebibliotheken bestätigt.
Die Analyse des Originalpapiers wies außerdem darauf hin, dassWenn CodexGraph Argumentationsaufgaben mit unterschiedlichen Schwierigkeitsgraden verarbeitet, gibt es Unterschiede in den Auswirkungen einzelner Abfrage- und Mehrfachabfragestrategien.
In CrossCodeEval sind mehrere Abfragestrategien effektiver, während in SWE-Bench eine einzelne Abfragestrategie eine bessere Leistung erbringt.
Darüber hinaus erhöht das Entfernen des Cypher LM-Agenten die Inferenzlast des primären LM-Agenten erheblich, was zu Leistungseinbußen führt.
Dies zeigt, dass der Cypher LM-Agent eine Schlüsselrolle bei der Linderung des Argumentationsdrucks des primären LM-Agenten spielt.
Beispiele realer Anwendungsszenarien
Basierend auf dem ModelScope-Agent-Framework hat sich der praktische Anwendungswert von CodexGraph in mehreren Szenarien widergespiegelt, wie zum Beispiel:
Diese Anwendungen zeigen, wie CodexGraph Entwicklern helfen kann, praktische Probleme in einer Produktionsumgebung zu lösen und die Effizienz und Qualität der Codeentwicklung zu verbessern.
Zusammenfassen
CodexGraph verwendet eine Graphdatenbank als Medium und bietet eine neue Interaktionsmethode zwischen Sprachmodell und Codebasis.
Es verbessert nicht nur die Fähigkeit des Sprachmodells, komplexe Codebasen zu verstehen, sondern erhöht auch die Genauigkeit des gesamten Codeabrufs und der Navigation.
Es entstand im Bereich der automatisierten Softwareentwicklung,Besonders wenn man sich der Herausforderung von RACG stelltund bringt neue Lösungen mit sich, die ein breites Potenzial und einen echten Wert für verschiedene Codierungsaufgaben und reale Anwendungen aufweisen.
Mit der kontinuierlichen Weiterentwicklung der Technologie wird CodexGraph voraussichtlich in Zukunft mehr Programmiersprachen unterstützen und seinen Workflow und die Effizienz der Indexerstellung weiter optimieren.
Code-Link:
https://github.com/modelscope/modelscope-agent/tree/master/apps/codexgraph_agent
arXiv-Link:
https://arxiv.org/pdf/2408.03910