この論文は、GitHub Copilot に代表される IDE に統合された AI コーディングアシスタントが、主にチャット インターフェースでコードスニペットを提案したりファイルを操作したりするだけで、ビルド、テスト、 コードの実行、git 操作といった IDE の機能を使っていないと主張する。そのため開発者は依然として、 自分でテストを実行し、失敗ログをチャットに貼り戻し、検証を繰り返さなければならない。この隙間を 埋めるため、全員が Microsoft に所属する著者らは AutoDev を提示する。これは 完全に自動化された AI 駆動開発フレームワークであり、ユーザーが複雑なソフトウェアエンジニアリング上の 目標を定義し、それを自律型 AI エージェントがリポジトリ内で直接遂行する。

AutoDev は 4 つの機能群で構成される。ユーザーとエージェントの間の会話を追跡し、エージェントが提案する すべてのコマンドを解析して権限チェックする Conversation Manager、ファイル編集、取得、ビルドと実行、 テストと検証、git、コミュニケーションのためのコマンドを備えた Tools Library、1 つ以上のエージェントを オーケストレーションする Agent Scheduler、そしてコマンドを Docker コンテナ内で実行する Evaluation Environment である。ユーザーは、許可するコマンド、エージェントの数、それぞれの役割を YAML ファイルで 設定する。著者らはこれを、エージェントがコードリポジトリと直接やり取りできるように AutoGen を会話管理の先へ拡張したものであり、また Auto-GPT の上にコードと IDE に特化した機能を加えたものだと説明している。評価には、コード生成には HumanEval を、テスト生成には その改変版を用いている。

要点

  • 1 つの GPT-4 エージェント(gpt-4-1106-preview)で、AutoDev は HumanEval のコード生成において 91.5% の Pass@1 に達し、GPT-4 のゼロショットのベースラインである 67% から引き上げた(相対 30% の改善)。著者らはこれを当時の HumanEval リーダーボードで Language Agent Tree Search(94.4%)に次ぐ 2 位とし、追加の学習データを必要としないアプローチの中では最高だと位置づけている。
  • テスト生成(AutoDev が人間の書いた解答に対するテストを書くように HumanEval を改変したもの)では 87.8% の Pass@1 に達し、ゼロショットの GPT-4 に対して相対 17% の改善となった。成功したテストのカバレッジは 99.3% で、これに対して人間が書いたテストでは 99.4% である。失敗したテストをカバーされていないものとして数えると、全体のカバレッジは 88.8% となる。
  • コード生成タスクでは平均 5.5 個、テスト生成タスクでは平均 6.5 個のコマンドが使われた。テスト生成では取得と誤ったコマンドがより多く、誤ったコマンドの大半は、エージェントが自然言語とコードやコマンドを混在させたことに起因していた。
  • 会話の平均トークン数はコード生成で 1,656、テスト生成で 1,863 であり、ゼロショットの GPT-4 の推定値 200 と 373 を上回る。著者らは、その増分の多くは本来なら開発者が行うはずのテスト、検証、説明に費やされていると論じ、Docker ベースの環境を実行コストの主因として挙げている。
  • エージェントのすべてのアクションは Docker コンテナ内で実行され、ユーザーは個々のコマンドを有効化・無効化できる。たとえばエージェントにプッシュは許さずローカルコミットのみを許可できる。著者らはこれをプライバシーとファイルのセキュリティのためのガードレールとして提示している。
  • 結果は HumanEval のみに基づいており、評価ではマルチエージェントの協調は無効化されていた。AI Developer と AI Reviewer のペアが複雑なバグに役立ったという点については、著者らは予備的で逸話的な観察を報告するにとどまっている。

補足

評価では意図的に ask コマンドが無効化されていたため、エージェントは最初の目標以外に人間からの フィードバックなしで動作した。talk と ask の各コマンドは開発者がエージェントの意図を追ううえで 役立つとされており、ask はパイロットスタディ中の開発者の要望で追加された。このパイロットスタディでは、 AutoDev は CLI コマンドとして使われ、会話は VS Code で観察できた。著者らは今後、より難しい実世界の データセットでの評価、チャットボット体験としての IDE への AutoDev の統合、そして CI/CD パイプラインや PR レビュープラットフォームへの組み込みを計画している。著者らはこの成果を、AI の提案を手作業で検証する 立場から、マルチエージェントの協調を監督する立場への開発者の役割の変化として位置づけている。