清水理史の「イニシャルB」

Microsoft「AutoGen」で、生成AIの新時代“マルチエージェント”を試す

Microsoft Research発のマルチエージェントAIアプリケーションフレームワーク「AutoGen」

 2023年9月末、Microsoft Researchから「AutoGen」と呼ばれる実験的なAIアプリケーション開発フレームワークが発表された。Advanced Data Analytics(旧Code Interpreter)のようなコード実行環境としても機能するが、最大の特徴は「マルチエージェント」を簡単に利用できる点だ。

 プログラム開発ではコーダーとチェッカー、健康管理の目的でシェフと医師など、役割を設定した複数のAIエージェントを定義し、相談させることでタスクを解決できる。AI同士が協力する時代の到来だ。

生成AIはマルチエージェントの時代へ

 AIがより賢く、正確にタスクを実行できるようにするにはどうすればいいだろうか?

 そのひとつのかたちとして注目されているのが、AI同士が協働するマルチエージェントと呼ばれる仕組みだ。マルチエージェントの例としては、ドット絵のキャラが印象的な「ChatDEV」が今年の夏ごろに話題なったが、その後も「MetaGPT」や今回紹介する「AutoGen」など、続々と新しい取り組みが登場している。

AIが協調してプログラムのコードやドキュメントを生成してくれる「ChatDEV」

 大規模言語モデル(LLM)を活用したAIは、文章の生成というシンプルなタスクのみだった時代(といっても、まだ今年の初めのことだが……)から、OpenAIのAdvanced Data Analytics(旧Code Interpreter)やOpen Interpreterの登場によって計算能力(コード実行環境)を手に入れることに成功してきたが、さらにマルチエージェントによる進化を手に入れることになった。

マルチエージェントのしくみ。文字通り、複数のAIによる協調の実現だ

 現状は、主にコードの生成で使われるケースが多い。例えば、「統括者」「プログラマー」「検証者」「実行者」という4つの役割を、別々のAIとして定義し、「〇〇を実現するプログラムを作って」というお題を出す。すると、統括者が全体の作業プランを考え、プログラマーがコードを書き、検証者がコードをチェックして修正し、実行者がコードを実行するというように、それぞれが自らの役割で協調しながらタスクを実行する。

 従来のAdvanced Data Analyticsなどでも、1系統のAIのみで、こうしたプロセスを段階的に実行することは可能だった。しかし、正確に実行するためには、人間が詳細かつ想定されるエラーを回避できるようなプロントプトを事前に与える必要があったり、AI自身で問題を解決する際にトライ&エラーが繰り返されがちだったり(それにより、APIの課金額が上がってしまう)と、なかなか使いこなすのが難しかった。

ChatGPTのAdvanced Data Analysis。コードの実行や計算などを含むタスクの実行を1系統のAIが単独で実行する

 マルチエージェントAIの場合、的確な指示を与える役割やエラーをチェックする役割として個別のAIを定義できるため、より正確性がアップし、効率的にタスクを実行することが可能になっている。

 AutoGenは、こうしたマルチエージェント環境を手軽に構築できるフレームワークで、何人のエージェントを用意するか、それぞれにどのような役割を定義するか、どのように相談させるかといったことを柔軟に決められるようになっている。

マルチエージェントの活用例

AutoGenを実行してみよう

 では、実際にどのようにAI同士が協調するのかを見てみよう。

 AutoGenでは、もちろんコードの生成や実行もできるが、今回は、お互いの話し合いだけで解決できるシンプルな例を提示する。具体的には、下図のように「floor_manager」「chef」「doctor」「kitchen_manager」という4つの役割を定義し、1週間分の夕食の献立を考えてもらう。

今回の検証は、コードの生成や計算、実行などを伴わないシンプルな構成でマルチエージェントを体験する

 人間からのオーダーをfloor_managerがほかのエージェントに伝えると、chefがレシピを考案し、それに対してdoctorが健康面を考慮したアドバイスをし、chefがメニューを修正。決定したメニューからkitchen_managerが調達すべき食材などをリストアップするという流れだ。

 実行環境としては、Google Colabを利用した。公式サイトで公開されているAutoGenのサンプルも「Open in Colab」からGoogle Colabで開けるようになっており、簡単に試せるようになっている。本稿で取り上げるサンプルも以下のリンクから開いて実行できるので、試してみるといいだろう。

▼AutoGenのサンプル(AutoGen公式サイト)
AutoGen - Automated Multi Agent Chat

▼本稿で紹介するサンプル
Autogenサンプル-グループチャット(メニュー考案)

本稿で紹介するサンプルの画面

 各役割は、下図のようにサンプルコード内で定義されている。例えば「floor_manager」なら「system_message」として「人間との対話を通じて、ChefやDoctor、Kitchen_Managerと相談しながら調理や食材に関する課題を解決してください。」という役割が与えられている。

 このように、登場させたいAIに、それぞれの役割を言葉で与えて定義しておくだけでいい。増やしたければ、コピペして名前や役割を書き換え、最後の「groupchat = autogen.GroupChat(agents=[floor_manager, chef, doctor, kitchen_manager], messages=[], max_round=12)」の中に、追加した役割の名前を入れておけばいい。

コード内で定義されているエージェント

シンプルなプロンプトで複雑なタスクを実行できる

 実行は簡単で、上記リンクから開いたノートブックを「ドライブにコピー」で自分の環境に複製してから、OpenAIのAPIキーを追記して、各コードブロック左上の実行ボタンを上から順番に押していけばいい。

 今回の例では、人間の介入は最後のみなので、自動的にエージェント同士が会話して最終的にメニューと食材が表示される。

実行の様子

 各エージェントの会話をわかりやすく図式化したのが以下だ。Chefが提案したメニューにdoctorが意見を述べる様子がわかるだろう。今回の例は、お題がシンプルなのでやり取りが少ないうえ、やり取りの回数も「max_round=12」と少なく設定されているが、複雑なケースでは、こうしたやり取りが何度も何度も繰り返される。

人間の依頼をfloor_managerが伝え、chefがメニューを考案
doctorがchefのメニューに意見を述べる
kitchen_managerが献立を確定し、必要な食材をリストアップする

 このように、AutoGenを利用すると、人間が与える質問や依頼がシンプルであったとしても、専門の役割を持ったエージェントがタスクを実行するためのプロセスを考慮し、お互いに知恵を出し合いながら処理することができる。人間がプロンプトを工夫しなくても複雑なタスクができる点が最大の魅力だ。

APIのコストが嵩むのが難点だ……

 以上、今回はAutoGenを実際に試してみた。

 従来のLLMを「一問一答式」と例えるとすれば、マルチエージェントは「グループワーク」というイメージで、回答のクオリティがブラッシュアップされる印象だ。

 もちろん、冒頭でも触れたようにインターネットアクセスやコード実行環境も備えているため、サンプルで提示されているように「MetaとTeslaの年初から今日までの株価の上昇率を比べて」とか、「次の条件を満たすa+b+cの値を求めて。条件:xは-1でない、ax-by+c=x+7……」のような計算をしてもらうとか、「GitHubのFLAMLで「Open Good」というタグが付いた最初のイシューの修正を提案して」だとか、さらにはチェスのプレイだとか、いろいろなお題を解決することができる。

 残念ながら、インターネット上の調べものやコードの生成に関しては、エージェント同士の相談によって膨大なトークンが生成されるため、大量のトークンを入力できるモデルを指定しないとエラーが発生してしまう(1分間に16000トークンほどになるケースもざらだ)。筆者が契約しているプランでは使えないため試していないが、大量のトーンが必要になる場合は、GPT-4-32Kのようなモデルを使う必要があるだろう。

 当然、APIコストも嵩み、試行錯誤していると、あっという間に十数ドルの課金が発生している場合もある。

検証日のAPI利用料金。繰り返し検証したとはいえ15ドルを超えてしまった
1回の実行でリクエストが数十回を超えることも多く、トークン数も2万を超えがち。コード生成と外部アクセスなどの調べものを併用すると、20~50万トークンになる場合もある

 AutoGenは、このあたりのコスト計算のチューニングにも活用でき、GPT-4やGPT-3.5-Turboなどを用途によって使い分けることもできるようだが、今回は、そこまで検証できていない。

 このように、コストは嵩むものの、マルチエージェントは最終的な課題に対して、AIが知恵を出し、それぞれのミスを補完し合うという、有意義なしくみと言える。人間の介入が最低限となる未来を実感できるので、ぜひ、試してみることをおすすめする。

清水 理史

製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。最新刊「できるWindows 11」ほか多数の著書がある。