Amazon BedrockのMulti-agent collaborationを細かく検証してみた

## はじめに
はじめまして！
NTTデータ テクノロジーコンサルティング事業本部 デジタルサクセスコンサルティング事業部の@tanaddです。

この記事では、Amazon Bedrockのマルチエージェント機能であるMulti-agent collaborationについて、設定の変更に伴う細かな挙動を検証した結果を紹介します。

# Multi-agent collaborationについて
Multi-agent collaborationはAmazon Bedrockエージェントの機能の1つです。複数のAIエージェントが連携しながら、ユーザから与えられたタスクをこなす仕組みを簡単に構築することができます。

### エージェントの役割
本機能で登場するエージェントは以下のような役割を持っています。
* スーパーバイザエージェント：
ユーザからの指示を分析し、必要に応じて適切なサブエージェントへ指示を与えます。また、サブエージェントの回答を受け取り、ユーザへ返す役割も担います。Multi-agent collaborationは、このスーパーバイザエージェントを作成するための機能です。
* サブエージェント：
特定のタスクをこなすことに特化したエージェントです。スーパーバイザエージェントから指示を受け、ナレッジベースを利用した検索や分析などを行い、回答を返します。

### ルーティングモード・オプションの選択
Multi-agent collaborationにはモードの選択やオプションが存在し、これらを変更することで挙動が変わります。
1. スーパーバイザエージェントのルーティングモード
   * Supervisorモード：
   どのような指示でも、スーパーバイザエージェントが入力を思考分析し、適切なサブエージェントへ指示を送ります。
   * Supervisor with routingモード：
   ユーザの指示がサブエージェントへ任せるべき内容か、Classifierによる判定が最初に入ります。サブエージェントと関連した指示だと判定された場合、スーパーバイザエージェントによる思考判断がスキップされ、直接サブエージェントへ指示がルーティングされます。
2. 会話履歴共有
スーパーバイザエージェントが保持する会話履歴を、サブエージェントへ共有するかどうかを設定できます。

## 整理の結果
検証部分が長いので、検証の結果をもとに整理した、各ルーティングモード・オプションによるメリットとデメリットを先にまとめます。
|  | メリット | デメリット |
|:-:|:-:|:-:|
| Supervisor<br/>モード | ・スーパーバイザエージェントがユーザの指示を全て思考<br/>→より会話感が増す<br/>・スーパーバイザエージェントの思考過程がトレースに残る<br/>→判断の根拠を把握できる | ・スーパーバイザエージェントの<br/>思考過程が入る<br/>→回答に時間がかかる<br/>・スーパーバイザエージェントの<br/>思考精度の問題<br/>→回答をコントロールしにくい |
| Supervisor with routing<br/>モード | ・スーパーバイザエージェントの思考過程が入らない<br/>→回答時間を短縮できる<br/>・Classifierによって適切なサブエージェントへ指示をルーティング<br/>→回答をコントロールしやすい | ・スーパーバイザエージェントの<br/>思考過程を確認できない<br/>→判断の根拠は把握できない  |
| 履歴共有 | ・ユーザの指示やスーパーバイザ<br/>エージェントの回答を<br/>サブエージェントにも連携<br/>→複数のサブエージェントを利用する際に情報の欠落を防げる | ・これまでの履歴がインプットとしてサブエージェントに渡される<br/>→文章量が増えると処理可能な<br/>トークン数やコストに影響する<br/>可能性あり |

実際の挙動を知りたい方は、以下も読んでいただけますと幸いです。

## 検証マルチエージェントの概要
機能検証のため、営業活動を支援することを想定したマルチエージェントを構築しました。1つのスーパーバイザエージェントに、アポイントメントに関するサポートを行う2つのサブエージェント（業界エキスパート、営業エキスパート）を繋げています。今回の検証ポイントはスーパーバイザエージェント側の設定による挙動の違いであるため、スーパーバイザエージェントの構築のみ、簡単に紹介いたします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/a2ec2821-5d60-445d-9cb3-e2bb9f5ab425.png)

### スーパーバイザエージェントの構築
Bedrockコンソールからエージェントを作成します。作成時、Multi-agent collaborationのチェックを入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/08ab231c-e47e-44d7-904f-5982be3df351.png)

利用する基盤モデルや必要なロール、役割を定義した後、エージェントビルダー下部にあるMulti-agent collaborationの編集を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/058de1f9-38ae-4123-bad2-38b203466ada.png)

Multi-agent collaborationの編集画面からAgent collaboratorを展開します。ここで、連携するサブエージェントを設定します。Collaborator instructionには、サブエージェントの説明を記述します。これはスーパーバイザエージェントがどのサブエージェントを利用するか判断する際に利用されます。サブエージェントは事前にエイリアスを含めて作成しておく必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/3cae4630-d5e3-4a8f-b909-99633f25ef2d.png)

Agent collaboratorを追加したら、編集画面上部のSave and exitを選択し、エージェントビルダーに戻ります。正常に設定が完了していれば、エージェントビルダー下部のMulti-agent collaborationにあるView collaboratorsから連携しているエージェントを確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/03410a8b-e894-47c6-acb2-9851883dfb8a.png)

## 機能検証
ここからは、Multi-agent collaborationのルーティングモードやオプションを変更した際の挙動について検証していきます。
## Supervisorモード、履歴共有オン
Multi-agent collaborationの編集画面にある、Collaboration configurationの項目においてSupervisorを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/e0804945-720e-45d7-9fbd-f820388965f2.png)

各Agent collaboratorのEnable conversation history sharingにチェックを入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/5c63686a-4eee-4834-a88c-94e21c547b29.png)

### テストしてみた
【1度目のやり取り】テストエージェントの画像左側に表示されているのが、ユーザからの指示と最終的なエージェントからの回答となります。右側にはエージェントの思考およびエージェント同士のやり取りの過程が記録された、トレースが表示されます。
「アポイントメント準備をお願いします」というユーザの指示をスーパーバイザエージェントが思考、分析し、業界エキスパート（サブエージェント）へ指示を改めて送っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/6a5ae093-da04-42bd-9aba-e1476bdfdd9c.png)

スーパーバイザエージェントからの指示を受け、サブエージェントから回答が返されます。
（サブエージェント側の思考、処理過程もトレースから確認できますが、今回は省略します。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/4e5159e8-4c03-48c9-869f-7a6402c3def9.png)

サブエージェントからの回答をスーパーバイザエージェントが思考、分析した後、ユーザへ最終的な回答を返します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/b876bb8a-84fb-4668-aac2-915a024b488f.png)

【2度目のやり取り】ユーザが「問題ないです」と返答すると、スーパーバイザエージェントは続いてその後の作業に適した別のサブエージェントへ指示を送ります。その後のやり取りは1度目と同じですが、この際、これまでのユーザの指示とスーパーバイザエージェントの回答は別のサブエージェントにも連携されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/2f9c0c4d-b512-4d8d-b101-e6cfec92884a.png)

【処理時間】サブエージェントの処理の前後にスーパーバイザエージェントによる思考分析が入る分、処理時間がかかっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/a48d6441-3425-4620-bab0-cad3ef3c8170.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/191b5413-4344-4d3e-a8f7-a08a2d1172b7.png)

## Supervisor with routingモード、履歴共有オン
Multi-agent collaborationの編集画面にある、Collaboration configurationの項目においてSupervisor with routingを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/d37db679-94f3-463d-b397-971c13282925.png)

各Agent collaboratorのEnable conversation history sharingにチェックを入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/69812851-0a93-4a3d-b8d2-34899b5d6af4.png)

### テストしてみた
【1度目のやり取り】Supervisor with routingモードの場合、ユーザから指示を送ると、スーパーバイザエージェントによる思考の前にClassifierによるルーティング判定が行われます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/34bc58dc-727e-4bf1-a1b0-c4d0b688a471.png)

サブエージェントに関連した指示であると判定された場合は、対応するサブエージェントへ、ユーザの指示を直接送ります。スーパーバイザエージェントによる思考、分析は実施されず、この点がSupervisorモードとの違いになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/c6f5218b-0c0d-4960-9ba7-d6d754a12640.png)

ユーザへの回答も、スーパーバイザエージェントによる思考分析が実施されず、サブエージェントによる回答がそのまま返されます。
（スーパーバイザエージェントとしては、ユーザの指示やサブエージェントの回答はしっかり保持しています。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/9c3035cd-a91d-42cc-b747-d28100b3adf1.png)

【2度目のやり取り】ユーザの返答後も1度目と同様にルーティング処理が入り、その後の作業に適した別のサブエージェントに指示が送られ、回答が返ってきます。この際、これまでのユーザの指示、スーパーバイザエージェントの回答（Supervisor with routingモードの場合はサブエージェントの回答と同義）は別のサブエージェントにも連携されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/bbcfc91c-bc64-4065-ad16-34cb1b2b06d1.png)

【処理時間】Classifierによるルーティングと、サブエージェントからの回答をそのままユーザに返すという挙動により、実質サブエージェントによる思考時間のみかかっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/c5261fcd-ff66-4417-a82d-08ea6e1c37f6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/4322ace8-40f5-465e-8c9e-a378a7d66fdf.png)

## Supervisorモード、履歴共有オフ
Supervisorモードの状態で、Agent collaboratorのEnable conversation history sharingのチェックを外します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/3d50423d-8936-44db-85ee-0c1a1f05d3b6.png)

### テストしてみた
【1度目のやり取り】1度目のやり取りは履歴共有オンの時と同じ挙動になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/e687f6bd-5513-4db8-af4a-71bf88698da2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/fc83bd5e-e6a7-4dcd-8aae-e4dbb35da63b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/da556605-4b92-4522-9646-a19b38f56687.png)

【2度目のやり取り】ユーザの返答後の挙動が変化しており、別のサブエージェントにはスーパーバイザエージェントからの指示のみ連携されます。履歴共有をオフにすると、これまでのユーザの指示やスーパーバイザエージェントの回答は連携されません。Supervisorモードの場合はスーパーバイザエージェントが思考分析してサブエージェントに指示を送るため、これまでの履歴が共有されなくても必要な情報をスーパーバイザエージェントが補完して指示し、問題なく回答が得られます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/7d746894-bdf3-4e1b-a6af-f0b711281420.png)


## Supervisor with routingモード、履歴共有オフ
Supervisor with routingモードの状態で、Agent collaboratorのEnable conversation history sharingのチェックを外します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/09a0a86a-6220-4976-882d-d9b0f1b7d17b.png)

### テストしてみた
【1度目のやり取り】1度目のやり取りは履歴共有オンの時と同じ挙動になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/883e55a4-4c2f-48de-8c95-708f3d785252.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/03b939fd-7b06-4a0d-8945-a89850397e93.png)

【2度目のやり取り】Supervisorモードと同様、ユーザの返答後の挙動が変化しており、別のサブエージェントにはスーパーバイザエージェントからの指示のみ連携されます。Supervisor with routingモードの場合、ルーティング処理が発生するとユーザの指示がそのままサブエージェントに送られるため、「問題ないです」という指示のみ別のサブエージェントに送られてしまいます。その結果、別のサブエージェントはこれまでのやり取りを把握できず、適切な回答を返すことができていません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015305/33a75967-d0af-4e7f-8735-7d6e0ddd3268.png)

## まとめ
ルーティングモードやオプションを変更することで、同じような回答が返ってきているように見えても、内部の挙動としては大きく異なっていることが分かりました。それぞれにメリット、デメリットがあり、ユースケースによって使い分けていくべきだと思います。

## 仲間募集

NTTデータ テクノロジーコンサルティング事業本部 では、以下の職種を募集しています。

<details><summary>1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア)</summary>

クラウド／プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer

</details>

<details><summary>2. データサイエンス領域（データサイエンティスト／データアナリスト）</summary>

データ活用／情報処理／AI／BI／統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX／デジタルサクセスを推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist

</details>

<details><summary>3.お客様のAI活用の成功を推進するAIサクセスマネージャー</summary>

DataRobotをはじめとしたAIソリューションやサービスを使って、
お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、
お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。
https://nttdata.jposting.net/u/job.phtml?job_code=804

</details>

<details><summary>4.DX／デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》</summary>
データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=898

</details>


## ソリューション紹介

<details><summary> Trusted Data Foundationについて</summary><div>

～データ資産を分析活用するための環境をオールインワンで提供するソリューション～
https://enterprise-aiiot.nttdata.com/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ（Datalake+DWH+AI/BI）を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

</div></details>


<details><summary> TDFⓇ-AM（Trusted Data Foundation - Analytics Managed Service）について</summary><div>

～データ活用基盤の段階的な拡張支援（Quick Start) と保守運用のマネジメント（Analytics Managed）をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス～
https://enterprise-aiiot.nttdata.com/service/tdf/tdf_am
TDFⓇ-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

</div></details>


<details><summary>NTTデータとTableauについて </summary><div>

ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。

これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。
https://enterprise-aiiot.nttdata.com/service/tableau

</div></details>


<details><summary>NTTデータとAlteryxについて </summary><div>
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。

Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。

https://enterprise-aiiot.nttdata.com/service/alteryx

</div></details>

<details><summary>NTTデータとDataRobotについて </summary><div>
DataRobotは、包括的なAIライフサイクルプラットフォームです。

NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://enterprise-aiiot.nttdata.com/service/datarobot

</div></details>

<details><summary> NTTデータとInformaticaについて</summary><div>

データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。
https://enterprise-aiiot.nttdata.com/service/informatica

</div></details>

<details><summary>NTTデータとSnowflakeについて </summary><div>
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。

NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://enterprise-aiiot.nttdata.com/service/snowflake

</div></details>