notizia

Lasciare che l'intelligenza artificiale gestisca grandi basi di codice: una buona notizia per gli sviluppatori | Alibaba/Università Nazionale di Singapore/Università di Xi'an Jiaotong

2024-08-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Presentazione del team CodexGraph
Qubit |. Account pubblico QbitAI

Non riesci a completare le attività di generazione e completamento del codice? !

È meglio provare a farsi aiutare dai Large Language Models (LLM).

Tuttavia, se lo èGli LLM possono avere difficoltà quando hanno a che fare con codebase di grandi dimensioni e multi-file.In questo momento, il sistema Retrieval-Augmented Code Generation (RACG) è spesso necessario per recuperare informazioni rilevanti sul codice.

Le soluzioni esistenti, come il recupero basato sulla somiglianza semantica e strumenti e API progettati manualmente, sebbene efficaci su attività specifiche, presentano limitazioni nelle capacità di generalizzazione e nell'applicabilità universale.



Al fine di alleviare le carenze di universalità dei metodi RACG esistenti, i ricercatori dell’Università Nazionale di Singapore, Alibaba e dell’Università di Xi’an Jiaotong hanno propostoCodiceGraficoUn sistema che utilizza il database del grafico del codice come mezzo per connettere il modello linguistico e la base del codice.

Il team di ricerca ha valutato CodexGraph sulla base di tre benchmark accademici rappresentativi e ha inoltre implementato CodexGraph in cinque scenari di applicazione di codice reale basati su ModelScope-Agent.

Esperimenti e pratiche nel mondo reale dimostrano l'efficacia e la versatilità di CodexGraph.



metodi di ricerca

CodexGraph collega in modo innovativo il modello linguistico alla base di codice attraverso l'interfaccia del database del grafico del codice., per superare le carenze dei metodi esistenti.

Il flusso di lavoro di questo sistema include principalmente i seguenti passaggi:

Innanzitutto, crea il database del grafico del codice

Utilizzare la tecnologia di analisi statica per mappare i simboli del codice (come moduli, classi, funzioni, ecc.) nella base del codice e le relazioni tra loro in nodi e bordi nel database grafico secondo lo schema predefinito.



In secondo luogo, query basate sulla struttura del codice.

Utilizza la flessibilità del linguaggio di query dei grafici e combinalo con le caratteristiche strutturali del database dei grafici per ottenere query complesse e recupero approfondito dei grafici dei codici.

In terzo luogo, la strategia “Scrivi e poi traduci”.

L'agente LM primario analizza innanzitutto i problemi del codice e genera query in linguaggio naturale.

Un agente LM di traduzione specializzato traduce quindi queste query in un linguaggio di query grafico formattato.



In quarto luogo, pipeline iterativa.

Attraverso un approccio iterativo, l'agente LM ottimizza gradualmente i risultati delle query e del recupero in base alle domande degli utenti e alle informazioni acquisite.

sperimentare

Nella parte sperimentale, CodexGraph è stato valutato su tre benchmark rappresentativi a livello di codice base: CrossCodeEval, EvoCodeBench e SWE-bench.



Questi testCopre il completamento del codice tra file, la generazione del codice e la risoluzione automatizzata dei problemi di GitHubecc. sotto molti aspetti.

I risultati sperimentali mostrano che CodexGraph mostra prestazioni eccellenti e stabili in tutti i test di benchmark, verificando l'efficacia del database del grafico del codice come interfaccia tra modelli linguistici e librerie di codici.



L’analisi del documento originale ha inoltre sottolineato che,Quando CodexGraph gestisce attività di ragionamento di diversa difficoltà, ci sono differenze negli effetti della singola query e delle strategie di query multiple.

In CrossCodeEval, più strategie di query sono più efficaci mentre in SWE-bench, una singola strategia di query ha prestazioni migliori.



Inoltre, la rimozione dell'agente Cypher LM aumenterà significativamente il carico di inferenza dell'agente LM primario, con conseguente degrado delle prestazioni.

Ciò dimostra che l'agente Cypher LM svolge un ruolo chiave nell'alleviare la pressione del ragionamento dell'agente LM primario.

Esempi di scenari applicativi reali

Basato sul framework ModelScope-Agent, il valore applicativo pratico di CodexGraph si è riflesso in molteplici scenari, come:

  • Assistente chat di codice(Chat sul codice)
  • Strumenti di debug del codice(Debugger del codice)
  • Generatore di test unitari(Tester di unità di codice)
  • generatore di codici(Generatore di codice)
  • Strumento di annotazione del codice(Commentatore del codice)

Queste applicazioni dimostrano come CodexGraph possa aiutare gli sviluppatori a risolvere problemi pratici in un ambiente di produzione e migliorare l'efficienza e la qualità dello sviluppo del codice.

Riassumere

Utilizzando il database a grafo come mezzo, CodexGraph fornisce un nuovo metodo di interazione tra il modello linguistico e la base di codice.

Non solo migliora la capacità del modello linguistico di comprendere basi di codice complesse, ma migliora anche la precisione del recupero e della navigazione complessivi del codice.

È emerso nel campo dell’ingegneria del software automatizzato,Soprattutto quando si affronta la sfida di RACG, offrendo nuove soluzioni che dimostrano un ampio potenziale e un valore reale in diverse attività di codifica e applicazioni del mondo reale.

Con il continuo sviluppo della tecnologia, si prevede che CodexGraph supporterà più linguaggi di programmazione in futuro e ottimizzerà ulteriormente il flusso di lavoro e l'efficienza della costruzione dell'indice.

Collegamento al codice:

https://github.com/modelscope/modelscope-agent/tree/master/apps/codexgraph_agent

collegamento arXiv:

https://arxiv.org/pdf/2408.03910