новости

Позвольте искусственному интеллекту управлять большими базами кода: хорошие новости для разработчиков Alibaba/Национальный университет Сингапура/Сианьский университет Цзяотун |

2024-08-11

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

Представление команды CodexGraph
Кубиты | Публичный аккаунт QbitAI

Не можете завершить задачи по созданию и завершению кода? !

Лучше попробовать воспользоваться моделями больших языков (LLM).

Однако, если этоLLM могут столкнуться с трудностями при работе с большими многофайловыми базами кода.В настоящее время для получения соответствующей информации о коде часто требуется система генерации расширенного поиска (RACG).

Существующие решения, такие как поиск на основе семантического сходства и разработанные вручную инструменты и API, хотя и эффективны для конкретных задач, имеют ограничения в возможностях обобщения и универсальной применимости.



Чтобы устранить недостатки универсальности существующих методов RACG, исследователи из Национального университета Сингапура, Alibaba и Сианьского университета Цзяотун предложилиCodexGraphСистема, которая использует базу данных кодовых графов в качестве средства для соединения языковой модели и базы кода.

Исследовательская группа оценила CodexGraph по трем репрезентативным академическим критериям, а также внедрила CodexGraph в пяти реальных сценариях применения кода на основе ModelScope-Agent.

Эксперименты и реальная практика демонстрируют эффективность и универсальность CodexGraph.



методы исследования

CodexGraph инновационным образом соединяет языковую модель с базой кода через интерфейс базы данных графов кода., преодолеть недостатки существующих методов.

Рабочий процесс этой системы в основном включает в себя следующие этапы:

Сначала создайте базу данных графов кода.

Используйте технологию статического анализа для отображения символов кода (таких как модули, классы, функции и т. д.) в базе кода и связей между ними в узлы и ребра в базе данных графов в соответствии с предопределенной схемой.



Во-вторых, запросы с учетом структуры кода.

Используйте гибкость языка запросов к графам и объединяйте их со структурными характеристиками базы данных графов для выполнения сложных запросов и углубленного поиска графов кода.

В-третьих, стратегия «Напиши, потом переведи».

Первичный агент LM сначала анализирует проблемы кода и генерирует запросы на естественном языке.

Специализированный агент перевода LM затем переводит эти запросы на язык запросов форматированного графа.



В-четвертых, итеративный конвейер.

Используя итеративный подход, агент LM постепенно оптимизирует результаты запросов и извлечения данных на основе вопросов пользователей и полученной информации.

эксперимент

В экспериментальной части CodexGraph оценивался в трех репрезентативных тестах базового уровня кода: CrossCodeEval, EvoCodeBench и SWE-bench.



Эти тестыОхватывает межфайловое завершение кода, генерацию кода и автоматическое решение проблем GitHub.и т. д. со многих сторон.

Результаты экспериментов показывают, что CodexGraph демонстрирует отличную и стабильную производительность во всех тестах производительности, подтверждая эффективность базы данных графов кода в качестве интерфейса между языковыми моделями и библиотеками кода.



Анализ оригинальной статьи также показал, что:Когда CodexGraph решает задачи рассуждения различной сложности, существуют различия в эффектах стратегий одного запроса и нескольких запросов.

В CrossCodeEval стратегии нескольких запросов более эффективны, тогда как в SWE-bench лучше работает стратегия одного запроса;



Кроме того, удаление агента Cypher LM значительно увеличит нагрузку на основной агент LM, что приведет к снижению производительности.

Это показывает, что агент Cypher LM играет ключевую роль в облегчении рассуждений основного агента LM.

Примеры сценариев реального применения

На основе платформы ModelScope-Agent практическая ценность применения CodexGraph отражена в нескольких сценариях, таких как:

  • Кодовый чат-помощник(Кодовый чат)
  • Инструменты отладки кода(Отладчик кода)
  • Генератор модульных тестов(Тестер кодового модуля)
  • генератор кода(Генератор кода)
  • Инструмент аннотации кода(Комментатор кода)

Эти приложения демонстрируют, как CodexGraph может помочь разработчикам решать практические проблемы в производственной среде и повышать эффективность и качество разработки кода.

Подвести итог

Используя графовую базу данных в качестве среды, CodexGraph предоставляет новый метод взаимодействия между языковой моделью и базой кода.

Это не только улучшает способность языковой модели понимать сложные базы кода, но также повышает точность общего поиска кода и навигации.

Он появился в области автоматизированной разработки программного обеспечения,Особенно, когда сталкиваешься с проблемой RACG, предлагая новые решения, демонстрирующие широкий потенциал и реальную ценность в различных задачах кодирования и реальных приложениях.

Ожидается, что благодаря постоянному развитию технологий CodexGraph в будущем будет поддерживать больше языков программирования и дополнительно оптимизировать рабочий процесс и эффективность построения индексов.

Ссылка на код:

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

ссылка на arXiv:

https://arxiv.org/pdf/2408.03910