noticias

Permitir que la IA administre grandes bases de código, buenas noticias para los desarrolladores Alibaba/Universidad Nacional de Singapur/Universidad Xi'an Jiaotong |

2024-08-11

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

Envío del equipo CodexGraph
Qubits | Cuenta pública QbitAI

¿No puedes finalizar las tareas de generación y finalización del código? !

Es mejor intentar dejar que los modelos de lenguajes grandes (LLM) le ayuden.

Sin embargo, si esLos LLM pueden tener dificultades cuando se trata de bases de código grandes y con varios archivos.En este momento, a menudo se necesita el sistema de generación de código aumentada de recuperación (RACG) para recuperar información de código relevante.

Las soluciones existentes, como la recuperación basada en similitudes semánticas y las herramientas y API diseñadas manualmente, aunque son efectivas en tareas específicas, tienen limitaciones en las capacidades de generalización y aplicabilidad universal.



Para aliviar las deficiencias de universalidad de los métodos RACG existentes, investigadores de la Universidad Nacional de Singapur, Alibaba y la Universidad Xi'an Jiaotong propusieronCódiceGráficoUn sistema que utiliza la base de datos de gráficos de código como medio para conectar el modelo de lenguaje y la base del código.

El equipo de investigación evaluó CodexGraph en tres puntos de referencia académicos representativos y también implementó CodexGraph en cinco escenarios de aplicación de código real basados ​​en ModelScope-Agent.

Los experimentos y las prácticas del mundo real demuestran la eficacia y versatilidad de CodexGraph.



métodos de investigación

CodexGraph conecta de forma innovadora el modelo de lenguaje con la base del código a través de la interfaz de la base de datos del gráfico de código., para superar las deficiencias de los métodos existentes.

El flujo de trabajo de este sistema incluye principalmente los siguientes pasos:

Primero, cree la base de datos del gráfico de código.

Utilice tecnología de análisis estático para asignar símbolos de código (como módulos, clases, funciones, etc.) en la base del código y las relaciones entre ellos en nodos y bordes en la base de datos de gráficos de acuerdo con el esquema predefinido.



En segundo lugar, consultas que tienen en cuenta la estructura del código.

Utilice la flexibilidad del lenguaje de consulta de gráficos y combínelo con las características estructurales de la base de datos de gráficos para lograr consultas complejas y recuperación en profundidad de gráficos de código.

En tercer lugar, la estrategia de “escribir y luego traducir”.

El agente LM primario primero analiza los problemas de código y genera consultas en lenguaje natural.

Luego, un agente LM de traducción especializado traduce estas consultas a un lenguaje de consulta de gráficos formateado.



Cuarto, canalización iterativa.

A través de un enfoque iterativo, el agente LM optimiza gradualmente los resultados de consulta y recuperación en función de las preguntas de los usuarios y la información adquirida.

experimento

En la parte experimental, CodexGraph se evaluó en tres puntos de referencia representativos de nivel base de código: CrossCodeEval, EvoCodeBench y SWE-bench.



Estas pruebasCubre la finalización de código entre archivos, la generación de código y la resolución automatizada de problemas de GitHub.etc. desde muchos aspectos.

Los resultados experimentales muestran que CodexGraph exhibe un rendimiento excelente y estable en todas las pruebas comparativas, verificando la efectividad de la base de datos de gráficos de código como interfaz entre los modelos de lenguaje y las bibliotecas de códigos.



El análisis del artículo original señaló además que,Cuando CodexGraph maneja tareas de razonamiento de diferentes dificultades, existen diferencias en los efectos de las estrategias de consulta única y de consulta múltiple.

En CrossCodeEval, varias estrategias de consulta son más efectivas, mientras que en SWE-bench, una única estrategia de consulta funciona mejor.



Además, eliminar el agente Cypher LM aumentará significativamente la carga de inferencia del agente LM primario, lo que resultará en una degradación del rendimiento.

Esto muestra que el agente Cypher LM desempeña un papel clave a la hora de aliviar la presión de razonamiento del agente LM principal.

Ejemplos de escenarios de aplicación reales

Basado en el marco ModelScope-Agent, el valor de la aplicación práctica de CodexGraph se ha reflejado en múltiples escenarios, tales como:

  • Asistente de chat de código(Chat de código)
  • Herramientas de depuración de código(Depurador de código)
  • Generador de pruebas unitarias(Probador de unidad de código)
  • generador de código(Generador de código)
  • Herramienta de anotación de código(Comentario de código)

Estas aplicaciones demuestran cómo CodexGraph puede ayudar a los desarrolladores a resolver problemas prácticos en un entorno de producción y mejorar la eficiencia y la calidad del desarrollo de código.

Resumir

Utilizando la base de datos de gráficos como medio, CodexGraph proporciona un nuevo método de interacción entre el modelo de lenguaje y la base del código.

No solo mejora la capacidad del modelo de lenguaje para comprender bases de código complejas, sino que también mejora la precisión de la recuperación y navegación general del código.

Surgió en el campo de la ingeniería de software automatizada,Especialmente al enfrentar el desafío de RACG, brindando nuevas soluciones que demuestran un amplio potencial y valor real en diversas tareas de codificación y aplicaciones del mundo real.

Con el desarrollo continuo de la tecnología, se espera que CodexGraph admita más lenguajes de programación en el futuro y optimice aún más su flujo de trabajo y la eficiencia de la construcción de índices.

Enlace de código:

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

enlace arXiv:

https://arxiv.org/pdf/2408.03910