AutoCodeRover入門 – 自動プログラム修正ツールを動かしてみよう!

チュートリアル

こんにちは!皆さんは、プログラミングのバグ修正や機能追加に苦労したことはありませんか?
そんな悩みを解決してくれる夢のようなツール「AutoCodeRover」を、今回はDocker Composeを使って手軽に動かす方法を紹介します。


こちらの記事もおすすめ

日本語版:AutoCodeRover: 自律的なプログラム改善 (AutoCodeRover: Autonomous Program Improvement)
概要この論文は、GitHub issues を自動的に解決し、プログラムの修正や機能追加を自律的に行うアプローチ「AutoCodeRover」を提案しています。AutoCodeRoverは、大規模言語モデル(Large Language M...
AIエージェント達の仮想ソフトウェア開発会社【ChatDev】を日本語対応のローカルLLMで動かしてみた【LMStudio】
はじめにAI技術が急速に進化する中で、AGIっぽいAIが注目を集めています。その中心となるのが、AIエージェント達が協力して動作する仮想ソフトウェア開発会社「ChatDev」です。この記事では、ChatDevを日本語環境で設定し、ローカルの...

AutoCodeRoverとは?

AutoCodeRoverは、GitHubのissue(バグ修正や機能追加のリクエスト)を全自動で解決するための革新的なシステムです。
大規模言語モデル(LLM)を用いて、ソースコードを解析・デバッグし、修正パッチを自動生成します。

その特徴は以下の通りです。

  • プログラムの構造(クラス/メソッドなど)を意識したコード検索ができる
  • テストスイートがある場合は、統計的欠陥局所化手法を使ってより正確な修正箇所の特定ができる

SWE-bench liteというデータセット(300件の実際のGitHubイシュー)での評価では、約22%のイシューを自動解決できました。
これは最新のAIソフトウェアエンジニアを上回る驚きの性能です。

動かしてみよう

前提条件

  • Dockerがインストール済みであること
  • OpenAIのAPIキーを取得済みであること

AutoCodeRoverリポジトリのクローン

まずは、AutoCodeRoverのリポジトリをクローンしましょう。

git clone https://github.com/Sunwood-ai-labs/auto-code-rover
cd auto-code-rover

Docker Composeで環境を起動

プロジェクトのルートディレクトリに移動したら、以下のコマンドでDocker Composeを起動します。

docker-compose up -d

-dオプションを付けることで、バックグラウンドで起動できます。

起動が完了したら、以下のコマンドでコンテナ内にログインします。

docker-compose exec auto-code-rover bash

環境変数の設定

コンテナ内では、AutoCodeRoverの実行に必要な環境変数を設定します。
取得済みのOpenAIのAPIキーを、以下のように設定してください。

export OPENAI_KEY=sk-XXXXXXXXXXXXXXXXXXXXXXXXXXX

SWE-benchのタスクをセットアップ

AutoCodeRoverは、SWE-benchというベンチマークデータセットを使用します。
ここでは、django__django-11133というタスクを例にセットアップ手順を説明します。

まず、タスクのIDをファイルに記述します。

cd /opt/SWE-bench
echo django__django-11133 > tasks.txt

次に、SWE-bench用のconda環境をアクティベートし、セットアップスクリプトを実行します。

cd /opt/SWE-bench
conda activate swe-bench
python harness/run_setup.py --log_dir logs --testbed testbed --result_dir setup_result --subset_file tasks.txt

正常に完了すると、以下のようなメッセージが表示されます。

setup_map is saved to setup_result/setup_map.json
tasks_map is saved to setup_result/tasks_map.json

AutoCodeRoverの実行

セットアップが完了したら、AutoCodeRover用のconda環境をアクティベートし、main.pyを実行します。

cd /opt/auto-code-rover
conda activate auto-code-rover
PYTHONPATH=. python app/main.py --enable-layered --model gpt-4-0125-preview --setup-map ../SWE-bench/setup_result/setup_map.json --tasks-map ../SWE-bench/setup_result/tasks_map.json --output-dir output --task django__django-11133

複数のタスクを一括で実行する場合は、タスクIDをファイルに記述し、--task-list-fileオプションで指定します。

PYTHONPATH=. python app/main.py --enable-layered --model gpt-4-0125-preview --setup-map ../SWE-bench/setup_result/setup_map.json --tasks-map ../SWE-bench/setup_result/tasks_map.json --output-dir output --task-list-file tasks.txt

実行結果は、outputディレクトリ以下に出力されます。

AutoCodeRoverの仕組み

AutoCodeRoverは、大きく分けて2つのステージで処理を行います。

  1. コンテキストの収集

    • LLMにコード検索APIを提供し、関連するソースコードを収集
    • ファイル単位ではなく、抽象構文木(AST)を解析してメソッドやクラスを検索
  2. 修正パッチの生成

    • 収集したコンテキストを基に、LLMが修正パッチを生成
    • テストスイートがある場合はテストも実行し、パッチの品質を確認

この一連の処理を、AutoCodeRoverは全自動で行ってくれるのです。

おわりに

Docker Composeを使えば、AutoCodeRoverを手軽に動かすことができます。
環境構築の手間を大幅に減らせるので、ぜひ試してみてくださいね。

AutoCodeRoverのようなツールは、開発者の作業を大きく変える可能性を秘めています。
バグ修正や機能追加の自動化が進めば、開発者はより創造的なタスクに集中できるようになるでしょう。

皆さんも、ぜひAutoCodeRoverを使って、開発の効率化と品質向上に挑戦してみてください!

リポジトリ

GitHub - Sunwood-ai-labs/auto-code-rover: A project structure aware autonomous software engineer aiming for autonomous program improvement
A project structure aware autonomous software engineer aiming for autonomous program improvement - Sunwood-ai-labs/auto-code-rover

参考サイト

GitHub - nus-apr/auto-code-rover: A project structure aware autonomous software engineer aiming for autonomous program improvement
A project structure aware autonomous software engineer aiming for autonomous program improvement - nus-apr/auto-code-rover
AutoCodeRover: Autonomous Program Improvement
Researchers have made significant progress in automating the software development process in the past decades. Automated techniques for issue summarization, bug...

コメント

タイトルとURLをコピーしました