notícias

Deixe a IA gerenciar grandes bases de código, uma boa notícia para os desenvolvedores |

2024-08-11

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

Envio da equipe CodexGraph
Qubits | Conta pública QbitAI

Não consegue concluir as tarefas de geração e conclusão do código? !

É melhor tentar deixar a ajuda dos Large Language Models (LLMs).

Contudo, se forOs LLMs podem ter dificuldades ao lidar com bases de código grandes e com vários arquivos.Neste momento, o sistema Retrieval-Augmented Code Generation (RACG) é frequentemente necessário para recuperar informações de código relevantes.

As soluções existentes, como a recuperação baseada em similaridade semântica e ferramentas e APIs projetadas manualmente, embora eficazes em tarefas específicas, têm limitações nas capacidades de generalização e na aplicabilidade universal.



A fim de aliviar as deficiências de universalidade dos métodos RACG existentes, pesquisadores da Universidade Nacional de Cingapura, Alibaba e da Universidade Xi'an Jiaotong propuseramCodexGraphUm sistema que usa o banco de dados gráfico de código como meio para conectar o modelo de linguagem e a base de código.

A equipe de pesquisa avaliou o CodexGraph em três benchmarks acadêmicos representativos e também implementou o CodexGraph em cinco cenários reais de aplicação de código baseados no ModelScope-Agent.

Experimentos e práticas do mundo real demonstram a eficácia e versatilidade do CodexGraph.



métodos de pesquisa

CodexGraph conecta de forma inovadora o modelo de linguagem à base de código por meio da interface do banco de dados gráfico de código., para superar as deficiências dos métodos existentes.

O fluxo de trabalho deste sistema inclui principalmente as seguintes etapas:

Primeiro, construa o banco de dados do gráfico de código

Use tecnologia de análise estática para mapear símbolos de código (como módulos, classes, funções, etc.) na base de código e os relacionamentos entre eles em nós e arestas no banco de dados gráfico de acordo com o esquema predefinido.



Em segundo lugar, consultas com reconhecimento de estrutura de código.

Utilize a flexibilidade da linguagem de consulta gráfica e combine-a com as características estruturais do banco de dados gráfico para obter consultas complexas e recuperação detalhada de gráficos de código.

Terceiro, a estratégia “Escreva e traduza”.

O agente LM primário primeiro analisa problemas de código e gera consultas em linguagem natural.

Um agente LM de tradução especializado traduz essas consultas em uma linguagem de consulta gráfica formatada.



Quarto, pipeline iterativo.

Através de uma abordagem iterativa, o agente LM otimiza gradualmente os resultados da consulta e recuperação com base nas perguntas do usuário e nas informações adquiridas.

experimentar

Na parte experimental, o CodexGraph foi avaliado em três benchmarks representativos de nível base de código: CrossCodeEval, EvoCodeBench e SWE-bench.



Esses testesAbrange a conclusão de código entre arquivos, geração de código e resolução automatizada de problemas no GitHubetc. de muitos aspectos.

Resultados experimentais mostram que o CodexGraph apresenta desempenho excelente e estável em todos os testes de benchmark, verificando a eficácia do banco de dados gráfico de código como interface entre modelos de linguagem e bibliotecas de código.



A análise do artigo original apontou ainda que,Quando o CodexGraph lida com tarefas de raciocínio de diferentes dificuldades, há diferenças nos efeitos da consulta única e das estratégias de consulta múltipla.

No CrossCodeEval, múltiplas estratégias de consulta são mais eficazes, enquanto no SWE-bench, uma única estratégia de consulta tem melhor desempenho;



Além disso, a remoção do agente Cypher LM aumentará significativamente a carga de inferência do agente LM primário, resultando na degradação do desempenho.

Isso mostra que o agente Cypher LM desempenha um papel fundamental no alívio da pressão de raciocínio do agente LM primário.

Exemplos reais de cenários de aplicação

Com base na estrutura ModelScope-Agent, o valor prático da aplicação do CodexGraph foi refletido em vários cenários, como:

  • Assistente de bate-papo de código(Bate-papo de código)
  • Ferramentas de depuração de código(Depurador de código)
  • Gerador de teste unitário(Testador de unidade de código)
  • gerador de código(Gerador de código)
  • Ferramenta de anotação de código(Comentador de código)

Esses aplicativos demonstram como o CodexGraph pode ajudar os desenvolvedores a resolver problemas práticos em um ambiente de produção e melhorar a eficiência e a qualidade do desenvolvimento de código.

Resumir

Usando banco de dados gráfico como meio, CodexGraph fornece um novo método de interação entre o modelo de linguagem e a base de código.

Isso não apenas melhora a capacidade do modelo de linguagem de compreender bases de código complexas, mas também aumenta a precisão da recuperação e navegação geral do código.

Surgiu no campo da engenharia de software automatizada,Especialmente quando enfrentamos o desafio do RACG, trazendo novas soluções que demonstram amplo potencial e valor real em diversas tarefas de codificação e aplicações do mundo real.

Com o desenvolvimento contínuo da tecnologia, espera-se que o CodexGraph suporte mais linguagens de programação no futuro e otimize ainda mais seu fluxo de trabalho e eficiência na construção de índices.

Link do código:

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

link arXiv:

https://arxiv.org/pdf/2408.03910