618ZXW

AIを活用した大規模コードベースの管理:開発者にとってのメリット | Alibaba/シンガポール国立大学/西安交通大学

コード生成と完了タスクを完了できません?

大規模言語モデル (LMM) を活用してみてはいかがでしょうか?

しかし、 LLMは大規模で複数ファイルからなるコードベースを扱う際に問題が発生する場合があります。このような場合、関連するコード情報を取得するために、Retrieval-Augmented Code Generation(RACG)システムが必要になることがよくあります。

意味的類似性に基づく検索や手動で設計されたツールや API などの既存のソリューションは、特定のタスクには効果的ですが、一般化と普遍性の点で限界があります。

既存の RACG 手法の一般性に関する限界に対処するために、シンガポール国立大学、アリババ、西安交通大学の研究者は、コード グラフ データベースを媒体として言語モデルとコードベースを接続するシステムであるCodexGraph を提案しました

研究チームは、3 つの代表的な学術ベンチマークで CodexGraph を評価し、ModelScope-Agent に基づいて 5 つの実際のコード アプリケーション シナリオに CodexGraph を実装しました。

実験と実際のアプリケーションにより、CodexGraph の有効性と汎用性が実証されています。

研究方法

CodexGraph は、コード グラフ データベース インターフェイスを介して言語モデルとコード リポジトリを革新的に接続し、既存の方法の制限を克服します。

システムのワークフローには主に次の手順が含まれます。

まず、コード グラフ データベースを構築します

事前定義されたスキーマに基づく静的分析手法を使用して、コードベース内のコード シンボル (モジュール、クラス、関数など) とそれらの間の関係がグラフ データベース内のノードとエッジにマッピングされます。

2番目は、コード構造認識クエリです。

グラフ クエリ言語の柔軟性を活用し、それをグラフ データベースの構造特性と組み合わせることで、複雑なクエリやコード グラフの詳細な検索を実現できます。

3 番目は、「書いてから翻訳する」戦略です。

プライマリ LM エージェントは、まずコードの問題を分析し、自然言語クエリを生成します。

次に、特殊な翻訳 LM エージェントがこれらのクエリをフォーマットされたグラフ クエリ言語に変換します。

4番目は、反復的なパイプラインです。

LM エージェントは、反復的なプロセスを通じて、ユーザーの質問とすでに取得されている情報に基づいて、クエリと検索結果を徐々に最適化します。

実験

実験セクションでは、CodexGraph が 3 つの代表的なコードベース レベルのベンチマーク (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..._agent

arXivリンク:

https://arxiv.org/pdf/2408.03910