2024-08-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Soumission de l'équipe CodexGraph
Qubits | Compte public QbitAI
Vous ne parvenez pas à terminer les tâches de génération et d’achèvement du code ? !
Il est préférable d'essayer de laisser les grands modèles linguistiques (LLM) vous aider.
Cependant, si c'estLes LLM peuvent avoir du mal à gérer des bases de code volumineuses et multi-fichiers.À l’heure actuelle, le système RACG (Retrieval-Augmented Code Generation) est souvent nécessaire pour récupérer les informations de code pertinentes.
Les solutions existantes, telles que la récupération basée sur la similarité sémantique et les outils et API conçus manuellement, bien qu'efficaces sur des tâches spécifiques, présentent des limites en termes de capacités de généralisation et d'applicabilité universelle.
Afin d'atténuer les défauts d'universalité des méthodes RACG existantes, des chercheurs de l'Université nationale de Singapour, d'Alibaba et de l'Université Xi'an Jiaotong ont proposéCodexGraph,Un système qui utilise la base de données de graphes de code comme support pour connecter le modèle de langage et la base de code.
L'équipe de recherche a évalué CodexGraph sur trois références académiques représentatives et a également implémenté CodexGraph dans cinq scénarios d'application de code réel basés sur ModelScope-Agent.
Les expériences et les pratiques réelles démontrent l'efficacité et la polyvalence de CodexGraph.
méthodes de recherche
CodexGraph connecte de manière innovante le modèle de langage à la base de code via l'interface de base de données de graphe de code., pour pallier les lacunes des méthodes existantes.
Le flux de travail de ce système comprend principalement les étapes suivantes :
Tout d’abord, créez la base de données du graphe de code。
Utilisez la technologie d'analyse statique pour mapper les symboles de code (tels que les modules, les classes, les fonctions, etc.) dans la base de code et les relations entre eux en nœuds et arêtes dans la base de données graphique selon le schéma prédéfini.
Deuxièmement, les requêtes tenant compte de la structure du code.
Utilisez la flexibilité du langage de requête graphique et combinez-le avec les caractéristiques structurelles de la base de données graphique pour réaliser des requêtes complexes et une récupération approfondie des graphiques de code.
Troisièmement, la stratégie « Écrire puis traduire ».
L'agent LM principal analyse d'abord les problèmes de code et génère des requêtes en langage naturel.
Un agent LM de traduction spécialisé traduit ensuite ces requêtes en langage de requête graphique formaté.
Quatrièmement, pipeline itératif.
Grâce à une approche itérative, l'agent LM optimise progressivement les résultats des requêtes et des récupérations en fonction des questions des utilisateurs et des informations acquises.
expérience
Dans la partie expérimentale, CodexGraph a été évalué sur trois benchmarks représentatifs au niveau de la base de code : CrossCodeEval, EvoCodeBench et SWE-bench.
Ces testsCouvre la complétion de code entre fichiers, la génération de code et la résolution automatisée des problèmes GitHubetc. sous de nombreux aspects.
Les résultats expérimentaux montrent que CodexGraph présente des performances excellentes et stables dans tous les tests de référence, vérifiant l'efficacité de la base de données de graphes de code en tant qu'interface entre les modèles de langage et les bibliothèques de codes.
L'analyse du document original a en outre souligné que,Lorsque CodexGraph gère des tâches de raisonnement de difficultés différentes, il existe des différences dans les effets des stratégies de requête unique et de requêtes multiples.
Dans CrossCodeEval, plusieurs stratégies de requêtes sont plus efficaces ; tandis que dans SWE-bench, une seule stratégie de requête est plus efficace.
De plus, la suppression de l'agent Cypher LM augmentera considérablement la charge d'inférence de l'agent LM principal, ce qui entraînera une dégradation des performances.
Cela montre que l'agent Cypher LM joue un rôle clé dans l'atténuation de la pression de raisonnement de l'agent LM principal.
Exemples de scénarios d'application réels
Basé sur le framework ModelScope-Agent, la valeur d'application pratique de CodexGraph s'est reflétée dans plusieurs scénarios, tels que :
Ces applications démontrent comment CodexGraph peut aider les développeurs à résoudre des problèmes pratiques dans un environnement de production et à améliorer l'efficacité et la qualité du développement de code.
Résumer
Utilisant une base de données graphique comme support, CodexGraph fournit une nouvelle méthode d'interaction entre le modèle de langage et la base de code.
Cela améliore non seulement la capacité du modèle de langage à comprendre des bases de code complexes, mais améliore également la précision de la récupération et de la navigation globales du code.
Il est apparu dans le domaine de l'ingénierie logicielle automatisée,Surtout face au défi du RACG, apportant de nouvelles solutions qui démontrent un large potentiel et une valeur réelle dans diverses tâches de codage et applications du monde réel.
Avec le développement continu de la technologie, CodexGraph devrait prendre en charge davantage de langages de programmation à l'avenir et optimiser davantage son flux de travail et l'efficacité de la construction d'index.
Lien des codes :
https://github.com/modelscope/modelscope-agent/tree/master/apps/codexgraph_agent
Lien arXiv :
https://arxiv.org/pdf/2408.03910