こんにちは!皆さんは、プログラミングのバグ修正や機能追加に苦労したことはありませんか?
そんな悩みを解決してくれる夢のようなツール「AutoCodeRover」を、今回はDocker Composeを使って手軽に動かす方法を紹介します。
こちらの記事もおすすめ
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つのステージで処理を行います。
-
コンテキストの収集
- LLMにコード検索APIを提供し、関連するソースコードを収集
- ファイル単位ではなく、抽象構文木(AST)を解析してメソッドやクラスを検索
-
修正パッチの生成
- 収集したコンテキストを基に、LLMが修正パッチを生成
- テストスイートがある場合はテストも実行し、パッチの品質を確認
この一連の処理を、AutoCodeRoverは全自動で行ってくれるのです。
おわりに
Docker Composeを使えば、AutoCodeRoverを手軽に動かすことができます。
環境構築の手間を大幅に減らせるので、ぜひ試してみてくださいね。
AutoCodeRoverのようなツールは、開発者の作業を大きく変える可能性を秘めています。
バグ修正や機能追加の自動化が進めば、開発者はより創造的なタスクに集中できるようになるでしょう。
皆さんも、ぜひAutoCodeRoverを使って、開発の効率化と品質向上に挑戦してみてください!
コメント