👨‍💻

GitHubイシューを自動解決するマルチエージェントフレームワーク:MAGIS

に公開

🚀 はじめに:GitHubイシュー解決の課題

ソフトウェア開発において、GitHubリポジトリのイシュー(バグや機能要求)を解決することは、単なるコード追加ではなく、既存コードの維持も含む複雑な課題です。大規模言語モデル(LLM)はコード生成で大きな可能性を示していますが、リポジトリレベルでのGitHubイシュー解決には苦戦しています。

例えば、Djangoフレームワーク(160万以上のプロジェクトで使用)には34,000以上のイシューが存在します。これらを効率的に解決することは、学術界と産業界の両方で重要な課題となっています。

💡 MAGISとは?:AIエージェントによる協調的アプローチ

MAGISとは、前述の問題を解決すべく、2024年3月にMAGIS: LLM-Based Multi-Agent Framework for GitHub Issue Resolutionで紹介された、AIエージェントによる協調的アプローチです。研究者たちは、なぜLLMがGitHubイシューの解決に苦戦するのか分析し、その主な要因を特定しました。その知見に基づき、**MAGIS(Multi-Agent framework for GitHub Issue ReSolution)**という革新的なLLMベースのマルチエージェントフレームワークを開発しました。

MAGISの概念図

MAGISは4種類の専門エージェントで構成されています:

  1. Managerエージェント:チーム編成、ミーティング主催、計画策定を担当
  2. Repository Custodianエージェント:GitHubイシューに関連するリポジトリ内のファイルを特定
  3. Developerエージェント:計画議論に参加し、Managerから割り当てられたタスクを完了
  4. Quality Assurance(QA)エンジニアエージェント:Developerからのコード変更をレビュー

🔄 MAGISの協調プロセス:計画からコーディングまで

MAGISのワークフローは、人間のソフトウェア開発チームの作業プロセスからインスピレーションを得ています。このプロセスは主に2つのフェーズで構成されています:

📋 計画フェーズ

  1. 関連ファイルの特定

    • Repository Custodianが、BM25アルゴリズムを使用してイシュー記述に基づきファイルをランク付け
    • LLMを活用して関連性を評価し、修正が必要なファイルを特定
    • メモリメカニズムを導入して、以前のクエリ情報を再利用し計算コストを削減
  2. チーム構築

    • Managerがイシューを分析し、ファイルレベルのタスクに分解
    • 各タスクに適したDeveloperエージェントの役割を定義
    • タスク固有の専門家チームを編成
  3. キックオフミーティング

    • Managerが会議を開催し、全Developerが参加
    • タスクの妥当性確認と、並行実行可能なタスクの特定
    • 議論に基づいて作業計画を生成

💻 コーディングフェーズ

  1. タスクの実行

    • Developerが割り当てられたタスクに対して作業
    • 修正が必要なコード行を特定
    • 古いコード部分を新しいコードに置き換え
  2. 品質保証

    • QAエンジニアがコード変更をレビュー
    • フィードバックを提供し、必要に応じて修正を要求
    • 品質基準を満たすまで、または最大繰り返し回数に達するまで繰り返し
  3. 最終結果

    • 承認されたコード変更をマージ
    • 全てのテストケースに対する検証

このアプローチにより、複雑なイシュー解決タスクを扱いやすい小さなサブタスクに分解し、各エージェントの専門知識を最大限に活用します。

📊 パフォーマンス評価:従来のLLMとの比較

MAGISの効果を検証するため、研究チームはSWE-benchベンチマークを使用して評価を行いました。SWE-benchは12の人気Pythonリポジトリから抽出した2,294件のイシューで構成されています。

主要な結果:

  • MAGISの解決率: 13.94%(GitHubイシューを正常に解決)
  • 比較対象との差:
    • GPT-3.5: 0.84%
    • Claude-2: 4.88%
    • GPT-4: 1.74%
    • SWE-Llama 13b: 4.36%

特に注目すべき点は、MAGISがベースモデルとしているGPT-4と比較して8倍の性能向上を達成していることです。これは、単一のLLMではなく、協調的なマルチエージェントアプローチの優位性を示しています。

また、QAエンジニアの有無やヒント情報の有無によるアブレーション実験も実施され、これらの要素がパフォーマンスに大きく貢献していることが確認されました。

🧠 MAGISの優位性の秘密:なぜ効果的なのか?

実験分析から、MAGISが従来のLLMよりも優れている主な理由が明らかになりました:

1. 効果的なファイル特定

従来のBM25検索と比較して、MAGISのRepository Custodianは同じリコール率を達成するために必要なファイル数が少なく、より効率的にファイルを特定できます。これにより、LLMの文脈制限の中でも、最も関連性の高いファイルに集中できます。

2. 正確な修正位置の特定

MAGISのDeveloperエージェントは、修正が必要なコード行を高い精度で特定できます。研究では、行特定のカバレッジ率とイシュー解決率の間に強い相関があることが示されました。

3. 複雑さへの対応力

コード変更の複雑さ(修正ファイル数、関数数、ハンク数など)は、イシュー解決成功率に大きく影響します。MAGISは、従来のLLMよりもこれらの複雑さに対するロバスト性が向上しています。

4. 品質保証プロセスの価値

QAエンジニアによるレビューとフィードバックループは、解決率を最大3.31%向上させました。品質保証は、特にヒント情報がない場合に特に重要です。

MAGISのフレームワークの詳細

🔮 将来の展望と応用可能性

MAGISの成功は、LLMベースのマルチエージェントシステムがソフトウェア進化の分野で大きな可能性を秘めていることを示しています。今後の展望として:

  1. より多様なプログラミング言語への拡張:現在はPythonリポジトリが中心ですが、Java、JavaScript、C++などへの拡張

  2. 大規模リポジトリへのスケーリング:より大規模で複雑なソフトウェアプロジェクトにおける有効性の検証

  3. ドメイン特化エージェントの追加:セキュリティ専門家、パフォーマンス最適化専門家などの追加エージェント

  4. 人間-AI協働開発:開発者とAIエージェントが協力してイシューを解決するハイブリッドアプローチ

  5. 継続的改善メカニズム:成功したイシュー解決から学習し、将来のタスクでパフォーマンスを向上

📝 まとめ

MAGISは、GitHubイシュー解決というソフトウェア開発の重要課題に対して、LLMベースのマルチエージェントフレームワークという新しいアプローチを提供しています。単一のLLMでは解決が難しかった複雑なタスクを、専門化されたエージェントの協調によって効果的に解決する方法を示しました。

特に重要なのは、ファイルと行の特定精度の向上、複雑さへの対応力の強化、品質保証プロセスの導入といった要素が、全体のパフォーマンスに大きく貢献していることです。

MAGISの成功は、AIがソフトウェア開発プロセスをどのように変革できるかを示す一例であり、人間の開発者とAIシステムの協力によるソフトウェア進化の新時代を予感させます。

参考リソース

https://arxiv.org/abs/2403.17927


この記事は2025年4月1日に執筆されました。最新の研究状況については、公式の研究論文や関連リソースをご確認ください。

Discussion