ニュース

AIが大規模なコードベースを管理します。開発者のための良いニュース|

2024-08-11

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

Codexgraphチームの提出
パブリックアカウント QbitAI

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

大規模な言語モデル(LLM)を助けてみる方が良いでしょう。

ただし、そうであればLLMは、大規模なマルチファイルコードベースを扱うときに苦労する可能性があります。現時点では、関連するコード情報を取得するために、検索コード生成(RACG)システムがしばしば必要です。

セマンティックな類似性ベースの検索や手動で設計されたツールとAPIなどの既存のソリューションは、特定のタスクに効果的ですが、一般化機能と普遍的な適用性に制限があります。



既存のRACGメソッドの普遍性の欠点を軽減するために、シンガポール国立大学、アリババ、Xi'an Jiaotong大学の研究者が提案しました。コーデックスグラフコードグラフデータベースを媒体として使用して、言語モデルとコードベースを接続するシステム。

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

実験と現実世界の実践は、Codexgraphの有効性と汎用性を示しています。



研究方法

Codexgraphは、コードグラフデータベースインターフェイスを介して言語モデルをコードベースに革新的に接続します。、既存の方法の欠点を克服します。

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

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

静的分析テクノロジーを使用して、コードベースのコードシンボル(モジュール、クラス、関数など)と、事前定義されたスキーマに従ってグラフデータベースのノードとエッジとの関係をマッピングします。



第二に、コード構造認識クエリ。

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

第三に、「書き込み、戦略を翻訳します。

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

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



第4、反復パイプライン。

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

実験

実験部分では、Codexgraphは、CrossCodeeval、Evocodebench、SWE-Benchの3つの代表的なコードベースレベルのベンチマークで評価されました。



これらのテストクロスファイルコードの完了、コード生成、自動化されたGitHub発行解決をカバーする多くの側面から。

実験結果は、Codexgraphがすべてのベンチマークテストで優れた安定したパフォーマンスを示し、言語モデルとコードライブラリの間のインターフェイスとしてコードグラフデータベースの有効性を検証することを示しています。



元の論文の分析は、それをさらに指摘しました、Codexgraphがさまざまな難しさの推論タスクを処理する場合、単一のクエリと複数のクエリ戦略の効果に違いがあります。

CrossCodeevalでは、複数のクエリ戦略がより効果的です。



さらに、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