소식

AI가 대규모 코드 기반을 관리하게 하세요. 개발자에게 희소식입니다. Alibaba/싱가포르국립대학교/Xi'an Jiaotong University |

2024-08-11

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

CodexGraph 팀 제출
Qubits 공개 계정 QbitAI

코드 생성 및 완료 작업을 완료할 수 없나요? !

LLM(대형 언어 모델)의 도움을 받는 것이 더 좋습니다.

그러나 만약 그렇다면LLM은 대규모 다중 파일 코드 기반을 처리할 때 어려움을 겪을 수 있습니다.이때 관련 코드 정보를 검색하기 위해서는 RACG(Retrieval-Augmented Code Generation) 시스템이 필요한 경우가 많다.

의미 유사성 기반 검색, 수동으로 설계된 도구 및 API와 같은 기존 솔루션은 특정 작업에 효과적이지만 일반화 기능과 보편적 적용 가능성에 한계가 있습니다.



기존 RACG 방식의 보편성 단점을 완화하기 위해 싱가포르 국립대학교, 알리바바, 시안교통대학교 연구진은 제안코덱스그래프코드 그래프 데이터베이스를 매개체로 언어 모델과 코드 베이스를 연결하는 시스템입니다.

연구팀은 세 가지 대표적인 학술 벤치마크를 통해 CodexGraph를 평가했으며, ModelScope-Agent를 기반으로 한 다섯 가지 실제 코드 응용 시나리오에서 CodexGraph를 구현했습니다.

실험과 실제 사례는 CodexGraph의 효율성과 다양성을 보여줍니다.



연구 방법

CodexGraph는 코드 그래프 데이터베이스 인터페이스를 통해 언어 모델을 코드 베이스에 혁신적으로 연결합니다., 기존 방법의 단점을 극복하기 위해.

이 시스템의 작업 흐름에는 주로 다음 단계가 포함됩니다.

먼저 코드 그래프 데이터베이스를 구축합니다.

정적 분석 기술을 사용하여 코드 베이스의 코드 기호(예: 모듈, 클래스, 함수 등)와 이들 사이의 관계를 사전 정의된 스키마에 따라 그래프 데이터베이스의 노드 및 에지로 매핑합니다.



둘째, 코드 구조 인식 쿼리입니다.

그래프 쿼리 언어의 유연성을 활용하고 이를 그래프 데이터베이스의 구조적 특성과 결합하여 복잡한 쿼리와 코드 그래프의 심층 검색을 수행합니다.

셋째, '쓰고 번역하기' 전략이다.

기본 LM 에이전트는 먼저 코드 문제를 분석하고 자연어 쿼리를 생성합니다.

그러면 전문 번역 LM 에이전트가 이러한 쿼리를 형식화된 그래프 쿼리 언어로 변환합니다.



넷째, 반복적인 파이프라인입니다.

LM 에이전트는 반복적인 접근 방식을 통해 사용자 질문과 획득된 정보를 기반으로 질의 및 검색 결과를 점진적으로 최적화합니다.

실험

실험 부분에서 CodexGraph는 세 가지 대표적인 코드 기반 수준 벤치마크인 CrossCodeEval, EvoCodeBench 및 SWE-bench에서 평가되었습니다.



이러한 테스트파일 간 코드 완성, 코드 생성 및 자동화된 GitHub 문제 해결을 다룹니다.등등 다방면에서요.

실험 결과 CodexGraph는 모든 벤치마크 테스트에서 우수하고 안정적인 성능을 보여 언어 모델과 코드 라이브러리 간의 인터페이스로서 코드 그래프 데이터베이스의 효율성을 검증했습니다.



원본 논문의 분석은 다음과 같이 지적했습니다.CodexGraph가 다양한 난이도의 추론 작업을 처리할 때 단일 쿼리와 다중 쿼리 전략의 효과에 차이가 있습니다.

CrossCodeEval에서는 여러 쿼리 전략이 더 효과적인 반면 SWE-bench에서는 단일 쿼리 전략이 더 잘 수행됩니다.



또한 Cypher LM 에이전트를 제거하면 기본 LM 에이전트의 추론 부담이 크게 증가하여 성능 저하가 발생합니다.

이는 Cypher LM Agent가 Primary LM Agent의 추론 압력을 완화하는데 핵심적인 역할을 한다는 것을 보여준다.

실제 적용 시나리오 예시

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