project
AutoDev - マイクロソフトのAIプログラミングおよびアプリケーション開発用インテリジェントエージェントフレームワーク
AutoDevは、Microsoftの研究者によって開発されたAIプログラミングおよびアプリケーション開発のためのインテリジェントエージェントフレームワークです。コード作成、デバッグ、テスト、バージョン管理などの複雑なソフトウェアエンジニアリングタスクを自律的に計画および実行するために特別に設計されています。
AutoDevとは何ですか?
AutoDevは、マイクロソフトの研究者によって開発されたAIプログラミングツールです。コーディング、デバッグ、テスト、バージョン管理といった複雑なソフトウェアエンジニアリングタスクを自律的に計画・実行するために特別に設計されています。AutoDevは、ソフトウェア開発の効率と品質を向上させると同時に、開発者が特定の反復的または退屈なタスクに費やす負担を軽減することを目的としています。
- arXivの研究論文:https://arxiv.org/abs/2403.08299
AutoDevの主な機能
- 目標設定とタスク割り当てユーザーは複雑なソフトウェアエンジニアリングの目標を定義することができ、AutoDevはこれらの目標を自律型AIエージェントに割り当てて達成させます。これには、コード作成、テスト、ビルド、デプロイなどのタスクが含まれますが、これらに限定されません。
- コード生成AutoDevは、ユーザーのニーズに基づいてコードを生成できます。これには、新機能の実装、既存コードの改善や最適化などが含まれます。
- テストの生成と実行AutoDevはテストケースを作成し、これらのテストを実行してコードの正しさを検証できます。また、テスト結果を分析し、必要に応じてコードを調整してエラーを修正することも可能です。
- コードの保守とデバッグAutoDevは、既存コードのレビューと保守を行うことができ、潜在的なバグの特定と修正、コードパフォーマンスの最適化、新しい要件を満たすためのコードの更新などが含まれます。
- バージョン管理AutoDevはGit操作をサポートしており、コミット、プッシュ、マージなどの操作を含め、コードバージョンの管理に役立ちます。
- 文書の編集と管理AutoDevは、コードベース内のファイルの内容を追加、変更、削除するなど、ファイル編集タスクを実行できます。
- 検索と情報抽出AutoDevは、コードリポジトリから情報を取得し、コードの再利用、パターン認識、知識抽出などのタスクの完了を支援することができます。
- 構築と実行AutoDevはコードライブラリのコンパイル、ビルド、実行が可能であり、コードの実行可能性とパフォーマンスを保証します。
- マルチエージェントコラボレーションAutoDevのアーキテクチャは、それぞれが特定の役割と責任を持ち、複数のエージェントが協力して複雑なソフトウェアエンジニアリングタスクを共同で完了することをサポートします。
- 対話管理AutoDevは会話マネージャーを通じてユーザーとやり取りし、会話履歴を管理し、ユーザーとAIエージェント間の効果的なコミュニケーションを保証します。
- セキュリティとプライバシーの保護AutoDevはDocker環境でタスクを実行するため、操作のセキュリティとプライバシーが確保され、潜在的なセキュリティリスクが防止されます。
- 自己評価と反復AutoDevは、生成したコードとテストを自己評価し、反復的なプロセスを通じてタスクの実行を継続的に改善および最適化することができます。
AutoDevのアーキテクチャ
AutoDevは4つの主要な機能モジュールで構成されています。その技術アーキテクチャは、効率性、セキュリティ、および制御性を維持しながら、複雑なソフトウェアエンジニアリングタスクを自動化するように設計されています。このアーキテクチャにより、AutoDevは人間の介入なしにタスクを自律的に完了できるだけでなく、ユーザーがAutoDevの動作を特定のニーズに合わせてカスタマイズできる柔軟性も備えています。
- 会話マネージャー:
- セッション履歴の初期化と管理を担当します。
- AIエージェントおよび評価環境からの運用結果を維持する。
- これには、パーサー、出力オーガナイザー、セッションターミネータが含まれており、これらはエージェントの応答を解釈し、出力情報を整理し、セッションを終了するタイミングを決定するために使用されます。
- ツールライブラリ:
- これは、AIエージェントがコードベース上で操作を実行できるようにする一連のコマンドを提供する。
- コマンドには、ファイル編集、取得、構築と実行、テストと検証、Git操作、通信などのカテゴリが含まれます。
- エージェントスケジューラー:
- ユーザーが定義した目標を達成するために、AIエージェントを調整する責任を負う。
- エージェントが会話に参加する順序と方法を決定するために、ラウンドロビン方式、トークンベース方式、または優先度ベース方式のアルゴリズムを使用します。
- 環境を評価する:
- Dockerコンテナ内で実行することで、ファイルの編集、取得、構築、実行、テストなどのコマンドを安全に実行できます。
- これはAIエージェント向けに簡素化されたインターフェースを提供し、基盤となるコマンドの複雑さを抽象化します。
- AIエージェント:
- これは、大規模な言語モデル(OpenAI GPT-4など)と、コード生成に最適化された小規模な言語モデルで構成されています。
- 対象と対話履歴を受信し、ルールとアクションに従って指定されたアクションを設定します。
- ルール、アクション、および目標の設定:
- ユーザーは、YAMLファイルを通じてルールと操作を設定することでプロセスを開始します。
- これは、AIエージェントが実行できるコマンド(操作)と、ユーザーが有効/無効にできる特定のコマンドを定義します。