ついに登場！AWS Bedrockマルチエージェント機能Multi-Agent Collaboration

# 1 はじめに
Multi-agent collaborationは複雑なタスクを解決するために、複数のBedrock Agentと協力して細分化したタスクを解決していく機能で、re:Invent2024のKeynoteで発表された機能です。

すでにOSSなどでマルチエージェントフレームワークは多く公開されていますが、Bedrock Agentsとシームレスに統合でき、マネージドコンソールから構築できるものとしては初めてとなります。

## 1.1 本記事の内容
* re:Invent 2024で発表された生成AIサービスBedrockへの新機能Multi-agent collaborationについて、その概要を紹介します
* 公開されているサンプルコードを実際に動かして、その動作概要やマルチエージェントを利用する利点についても把握します

# 2 Bedrock Agents
## AIエージェントとは？

* AIエージェントは、ユーザからの複雑なリクエストを解決するために、”どのような行動が必要か”、“どのように行動するべきか”を自律的に計画する
* 計画したそれぞれの行動は、LLM自身が持つ情報や外部情報を取り込むツールなどを用いて解決していく
* どのようなツールを使うかなどの具体的な行動内容もエージェント自身が思考して決定する

## BedrockにおけるAIエージェント
* Amazon Bedrock Agentsサービスを使うことで、CLI/GUI問わずに簡単にAIエージェントの構築、設定できる
* 定義可能な行動の種類
  1. LLMの実行
  1. アクショングループ:事前定義したLambda関数を実行
  1. ナレッジベース: Bedrock Knowledge basesから情報を検索


# 3 Multi-agent collaboration
* Bedrockで利用できるフルマネージド型の機能
* 特定の複数のエージェントと、それらをオーケストレーションするエージェントにより複雑なタスクの問題解決を実現する
    * オーケストレーションするエージェントをスーパーバイザーエージェントと呼ぶ
* スーパーバイザエージェントがユーザリクエストをブレイクダウン、必要なタスクを決定する。タスクをそれぞれ得意とする専門エージェントに移譲、最後に結果を集約し、ユーザに回答する

![fig3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367655/d24be75c-c8ae-8b79-15cc-000b14d5dc20.png)

## なぜMulti-agent collaborationを使うのか
* AIエージェント間のコラボレーションをGUIベースで簡単に構築可能！
* 既存のBedrock Agentsをそのまま活用し、複雑なエージェントシステムが構築可能！
* AWSが提供するトレーシングツールやデバッグコンソールを活用可能！


# 3 Multi-agent collaboration

## そもそもなぜマルチエージェントシステムが必要なのか？
* 複雑で規模が大きな課題であっても、解決できるから！

| メリット | 概要 |
| :-------------- | :------------------------------------------------------------------------------------------ |
| **専門性の向上**   | 各エージェントを特定ドメインに特化させることで専門性を高められる ※1つのエージェントを複雑にすると、専門性を高めるチューニングがより困難になる  |
| **変更・管理コストの削減** | エージェント単位で実装変更できるため、管理が容易になる ※シングルエージェントではシステム全体に変更の影響が発生する                               |
| **タスクの分割と効率化** | タスクを複数エージェントに分割するため、負荷も分散される ※シングルエージェントでは負荷が集中し、並行処理も困難  |
| **システムのスケラビリティ**| 新たな専門エージェントを追加することで、機能拡張可能 ※シングルエージェントだと、できることに上限ができてしまう            |


# 4 動作検証プロジェクト

* AWS提供のサンプルプロジェクトを用いてMulti-agent Collaboration機能の動作を確認する
  * bedrock-multi-agents-collaboration-workshop

![energy_manager_agent.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367655/391026ce-ee11-c13d-7311-3760967bbb3e.png)

図はGitHubより引用


# 4 動作検証プロジェクト

## システム構成
* 3つの専門エージェントと、1つのスーパーバイザーエージェントにより構成
* 専門エージェント
    1.  Energy Forecast Agent
        * 過去のエネルギー量計算、使用予測の提供、使用統計の生成、特定顧客の予測更新
        * アクショングループ(Lambda関数)、ナレッジベース、Code Interpreter(数値計算に利用)
    2.  Solar Panel Maintenance Agent
         * 設置方法の提供、メンテナンス手順の提供、一般的な問題へのトラブルシューティング、専門家へのサポートチケット作成
         * アクショングループ(Lambda関数)、ナレッジベース
    3.  Peak Load Manager Agent
        * IoTデバイスからデータ取得、ピーク時の必須でない負荷の特定とオフピークへの移行提案、スケジュール調整の推奨
        * アクショングループ(Lambda関数)


# 4 動作検証プロジェクト

* スーパーバイザーエージェント
    * Multi-agent Collaborationの中心となるエージェント
    * 3つの専門エージェントを統括する
    * ユーザからの質問を受け取り、その質問に内容に応じて最適な専門エージェントに課題解決を依頼する

![fig4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367655/c24aadb6-088b-53fd-05d2-b867093a51a7.png)


# 5 動作検証内容

* 実行環境は参考プロジェクトのNotebookに沿って構築
* 今回は2つのケースを実行し、エージェント動作内容を検証:
    * ケース1: Energy Forecast Agentのみで課題解決
    * ケース2: Energy Forecast AgentとPeak Load Manager Agentの2つの専門エージェントの回答を組み合わせて課題解決
* マネージドコンソール上のBedrock Agentsの画面からテスト実行により確認

# 5-a テストケース1の実行結果

![fig5-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367655/b92c5543-feb6-9a1e-9011-401c6c9d015a.png)

# 5-a テストケース1の実行結果
* マネージドコンソールのテスト実行では、各エージェントのトレースタイムラインを確認可能
* ケース1では実行後すぐにEnergy Forecast Agentが実行されていることがわかる
* 処理時間のほぼすべてがEnergy Forecast Agentでの処理時間のため、応答精度を改善する場合はEnergy Forecast Agentを確認すればよいことがわかる

![fig5-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367655/0ea5fefc-5e01-cbb8-da5d-607ceaebe364.png)

# 5-b テストケース2の実行結果
![fig5-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367655/362d1076-854c-ff5e-8600-3ed29f15b2c3.png)


# 5-b テストケース2の実行結果
* トレースタイムラインを確認すると、2つの専門エージェントがスーパーパイザーエージェントから呼び出されていることがわかる
* 2つの専門エージェント間では依存関係がないため、並列で処理が実行されている
* シングルエージェントよりも高速にユーザへ回答することが可能に！
* ケース1と異なり、2つの専門エージェントの回答を組み合わせる処理も必要なため、専門エージェントの呼び出し前後で処理時間がかかっている

![fig5-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367655/c16b9d58-aea6-03d2-410f-c23d0efb7f9f.png)

# 6 まとめ
* re:Invent 2024で発表されたBedrockの新機能Multi-agent collaborationの実行環境を構築し、動作を検証した
* マネージドコンソールでも構築/管理することができ、ノーコード/ローコードでマルチエージェントシステムが構築できる
    * 補足:今回はサンプルプロジェクトのNotebookから環境を構築したため、コード実装あり
    * 同等の手順をマネージドコンソールからGUIベースで実行可能
* ユーザクエリに応じて適した専門エージェントが呼び出されることを確認できた
* 複数の専門エージェントで処理が並行実行できることを確認できた