(このレッスンのビデオを見るには上の画像をクリックしてください)
複数のエージェントが関わるプロジェクトに取り組み始めると、マルチエージェント設計パターンを考慮する必要があります。しかし、いつマルチエージェントに切り替えるべきか、その利点は何かがすぐには明確でないかもしれません。
このレッスンでは、次の質問に答えることを目指します:
このレッスンの後、あなたは次のことができるようになるはずです:
より大きな視点とは?
マルチエージェントは、共通の目標を達成するために複数のエージェントが協力する設計パターンです。
このパターンは、ロボティクス、自律システム、分散コンピューティングなど様々な分野で広く使われています。
マルチエージェントを使うのに適したシナリオとは何でしょうか?多くのシナリオで複数のエージェントの利用は有益ですが、特に以下のケースが挙げられます:
単一のエージェントシステムは単純なタスクには有効ですが、より複雑なタスクでは複数のエージェントを使うことで次のような利点があります:
例として、ユーザーの旅行予約を考えましょう。単一エージェントシステムはフライトの検索からホテルやレンタカーの予約まで全てを処理しなければなりません。これを単一のエージェントで実現するには、多くの機能を持たせる必要があり、複雑で保守・拡張が難しいモノリシックなシステムになる可能性があります。一方、マルチエージェントシステムでは、フライト検索、ホテル予約、レンタカー予約それぞれに特化したエージェントを持ちます。これによりシステムはモジュール化され、保守しやすく拡張可能になります。
これを、小さな家族経営の旅行代理店とフランチャイズ型の旅行代理店の違いになぞらえることができます。家族経営店は単一エージェントが全ての予約プロセスを担当し、フランチャイズは異なるエージェントが予約プロセスの異なる側面を担当します。
マルチエージェント設計パターンを実装する前に、その構成要素を理解する必要があります。
もう一度ユーザーの旅行予約の例を使って具体的に考えてみましょう。この場合、構成要素には以下が含まれます:
複数のエージェントがどのように相互作用しているかを可視化することは非常に重要です。これは、デバッグ、最適化、システム全体の効果を確保するために不可欠です。これを実現するために、エージェントの活動や相互作用を追跡するためのツールや手法が必要です。ログ記録やモニタリングツール、ビジュアライゼーションツール、パフォーマンス指標がその例です。
例えば、ユーザーの旅行予約の場合、各エージェントの状態、ユーザーの好みや制約、エージェント間の相互作用を示すダッシュボードを作ることができます。このダッシュボードはユーザーの旅行日程、フライト検索エージェントの推奨フライト、ホテル予約エージェントの推奨ホテル、レンタカー予約エージェントの推奨レンタカーなどを表示します。これにより、エージェント間の相互作用とユーザーの好み・制約が満たされているかを明確に確認できます。
それぞれの側面をより詳しく見ていきましょう。
ログ記録とモニタリングツール:エージェントが行う各アクションに対してログを取りたいです。ログエントリはアクションを実行したエージェント、実行したアクション、実行時間と結果の情報を格納できます。この情報はデバッグや最適化などに活用できます。
ビジュアライゼーションツール:ビジュアライゼーションツールはエージェント間の相互作用をより直感的に見るのに役立ちます。例えばエージェント間の情報の流れを示すグラフがあり、システム内のボトルネックや非効率、その他の問題を特定するのに有用です。
パフォーマンス指標:マルチエージェントシステムの効果を追跡するのに役立ちます。例えば、タスクの完了にかかる時間、一単位時間あたりの完了タスク数、エージェントが行う推奨の精度などを追跡できます。これらの情報は改善点の特定やシステムの最適化に役立ちます。
マルチエージェントアプリを作成する際に使える具体的なパターンについて掘り下げましょう。ここでは検討に値する興味深いパターンを紹介します:
このパターンは複数のエージェントが互いに通信できるグループチャットアプリケーションを作成したい時に有用です。典型的なユースケースはチームコラボレーション、カスタマーサポート、ソーシャルネットワーキングです。
このパターンでは、各エージェントがグループチャットのユーザーを表し、メッセージはメッセージングプロトコルを使ってエージェント間で交換されます。エージェントはグループチャットにメッセージを送り、メッセージを受け取り、他のエージェントからのメッセージに応答できます。
このパターンは中央集権型アーキテクチャで全メッセージが中央サーバーを経由する方式や、分散型アーキテクチャでエージェント同士が直接メッセージを交換する方式で実装できます。

このパターンは複数のエージェントがタスクを互いに引き継ぐアプリケーションを作成したい時に有用です。
典型的なユースケースはカスタマーサポート、タスク管理、ワークフロー自動化です。
このパターンでは各エージェントがタスクやワークフローのステップを表し、エージェントはあらかじめ定められたルールに基づいて他のエージェントにタスクを引き継ぎます。

このパターンは複数のエージェントが協力してユーザーへの推薦を行うアプリケーションに有用です。
複数のエージェントが協力する理由は、それぞれ異なる専門知識を持ち、推薦プロセスへの貢献が異なるためです。
例えば、ユーザーが株式市場で買うべき最適な株の推薦を求める場合を考えましょう。

顧客が商品の返金を求める場合を考えます。このプロセスにはかなり多くのエージェントが関わることがありますが、この返金専用のエージェントと他のプロセスでも使える一般的なエージェントに分けてみましょう。
返金プロセス専用エージェント:
次のようなエージェントが返金プロセスに関与する可能性があります:
一般的なエージェント:
これらのエージェントは事業の他の部分でも使用できます。
以前挙げたエージェントは返金プロセス専用のものだけでなく事業の他部分でも利用可能な一般的なものも多く含まれていました。これにより、マルチエージェントシステムでどのエージェントを使うかの考え方の参考になるはずです。
カスタマーサポートプロセスのためのマルチエージェントシステムを設計してください。プロセスに関わるエージェント、彼らの役割と責任、相互のやり取りを特定してください。カスタマーサポートプロセス専用のエージェントと事業の他部分でも使える一般エージェントの両方を考慮してください。
以下の解決策を読む前に考えてみてください。思っているよりも多くのエージェントが必要になるかもしれません。
TIP: カスタマーサポートプロセスのさまざまな段階を考え、システムに必要なエージェントも検討してください。
マルチエージェントシステムに最も適しているシナリオはどれですか?
通常、単一エージェントのほうが良いのはどんな場合ですか?
このレッスンでは、マルチエージェント設計パターンについて、適用可能なシナリオ、単一エージェントよりもマルチエージェントを使用する利点、実装の構成要素、そして複数のエージェントがどのように相互作用しているかを可視化する方法を学びました。
Microsoft Foundry Discord に参加して、他の学習者と交流し、オフィスアワーに参加してAIエージェントに関する質問に答えてもらいましょう。
免責事項: 本書類は AI 翻訳サービス Co-op Translator を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や解釈違いについても、当方は責任を負いかねます。