View a markdown version of this page

Strands Agents SDK と AWS Fargate を使用してマルチエージェント会議インテリジェンスプラットフォームをデプロイする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Strands Agents SDK と AWS Fargate を使用してマルチエージェント会議インテリジェンスプラットフォームをデプロイする

Aishita Batra と Muskan、Amazon Web Services

概要

このパターンは、会議のトランスクリプトから構造化された議事録、エグゼクティブサマリー、オーディオナレーション、フォーマットされた PDF レポートを自動的に生成 AWS Fargate するマルチエージェント会議インテリジェンスプラットフォームを にデプロイします。このソリューションでは、Strands Agents SDK を使用して、4 つの特殊な AI エージェント、言語モデル推論用の Amazon Bedrock、text-to-speech変換用の Amazon Polly をオーケストレーションします。

ユーザーは Streamlit ウェブインターフェイスを介して会議のトランスクリプトをアップロードし、システムは調整されたエージェントパイプラインを介して非同期的に会議トランスクリプトを処理します。インフラストラクチャは AWS AWS Cloud Development Kit (AWS CDK) を使用した GitHub Actions を通じて自動的にデプロイされ、組み込みのモニタリング、自動スケーリング、高可用性が含まれます。

前提条件と制限

前提条件

  • AWS アカウント 管理者権限を持つアクティブな

  • AWS CDK バージョン 2.114.1 以降がインストールされている

  • AWS CLI 適切な AWS Identity and Access Management (IAM) アクセス許可を使用してインストールおよび設定されている

  • Node.js 18 以降

  • Python 3.12 以降

  • インストール済みGit

  • Docker のインストール (オプション、ローカルテスト用)

  • リポジトリシークレットが設定された GitHub アカウント: AWS_ACCESS_KEY_IDおよび AWS_SECRET_ACCESS_KEY

  • リージョンで Anthropic Claude 3 Sonnet モデルにアクセスできる Amazon Bedrock

  • Amazon Polly アクセスが有効 (ほとんどのリージョンでデフォルトで有効)

  • Amazon Simple Storage Service (Amazon S3)、Amazon Elastic Container Service (Amazon ECS)、Fargate、Elastic Load Balancing、Amazon Virtual Private Cloud (Amazon VPC) の IAM アクセス許可

  • Amazon VPC、IAM、Amazon CloudWatch、Amazon Simple Notification Service (Amazon SNS)

制限事項

  • 処理時間は、トランスクリプトの複雑さに応じて、会議ごとに 2~7 分です。

  • 文字起こしの最大長は、リクエストあたり 50,000 文字です。

  • オーディオ概要は自動的に 3,000 文字に要約されます (Amazon Polly 文字制限)。

  • Amazon Bedrock Claude 3 Sonnet の可用性は、 によって異なります AWS リージョン。

  • ジョブのステータスはメモリに保存され、S3-based永続性を設定しない限り、コンテナの再起動間で永続化されません。

  • 直接アップロードは.txtファイルのみをサポートします。

  • Application Load Balancer は、リクエストの処理に 15 分のタイムアウトを適用します。

  • 一部の AWS サービスは、すべての で利用できるわけではありません AWS リージョン。リージョンの可用性については、AWS 「リージョン別のサービス」を参照してください。特定のエンドポイントについて確認するには、「サービスエンドポイントとクォータ」ページを参照し、サービスのリンクを選択してください。

アーキテクチャ

ターゲット アーキテクチャ

このソリューションは、次のアーキテクチャの で Strands Agents SDK を使用してマルチエージェント AI システムをデプロイ AWS Fargate します。

  1. ユーザーは、ローカルまたはリモートサーバーでホストされている Streamlit ウェブアプリケーションを介して会議のトランスクリプトをアップロードします。

  2. パブリックサブネットの Application Load Balancer は、2 つのアベイラビリティーゾーンにトラフィックを Fargate サービスに分散します。

  3. Fargate タスクは、NAT Gateway アクセスを持つプライベートサブネットで実行され、FastAPI バックエンドと Strands エージェントオーケストレーションロジックをホストします。

  4. Strands マルチエージェントシステムは、構造化分生成、簡潔なサマリー生成、オーディオナレーション、PDF レポート作成の 4 つのシーケンシャルエージェントを通じてトランスクリプトを処理します。

  5. Amazon Bedrock は、数分の言語モデル推論 (Claude 3 Sonnet) とサマリー生成エージェントを提供します。

  6. Amazon Polly は簡潔な概要を MP3 オーディオナレーションに変換します。

  7. Amazon S3 は、アップロードされたトランスクリプト、生成された出力ファイル、ジョブステータスをライフサイクル管理ポリシーとともに保存します。

  8. Amazon CloudWatch は、一元化されたログ記録、CPU およびメモリアラーム、Amazon SNS 通知によるサービスヘルスモニタリングを提供します。

  9. GitHub Actions は、ヘルス検証テスト AWS CDK で を通じて CI/CD の自動デプロイを提供します。

自動化とスケール

  • ECS Fargate Auto Scaling – CPU 使用率とメモリ使用率の 70% のしきい値に基づく 1 ~ 3 インスタンスの自動コンテナスケーリング。

  • CloudWatch モニタリング – CPU (65%)、メモリ (80%)、Amazon SNS 通知と統合されたサービスヘルスアラーム。

  • Application Load Balancer – 60 秒ごとのヘルスチェックと、長時間実行される AI 処理タスクの 15 分のアイドルタイムアウトを含むトラフィック分散。

  • バックグラウンドタスク処理 – FastAPI BackgroundTasks を使用した非同期会議分析による同時ジョブ実行。

  • S3-basedジョブ永続性 – コンテナの再起動とスケーリングイベント全体でジョブの継続性を確保する Amazon S3 の永続的なジョブステータスストレージ。

  • GitHub Actions CI/CD – CDK インフラストラクチャのプロビジョニングとヘルス検証テストによる自動デプロイパイプライン。

ツール

AWS サービス

  • Amazon Bedrock – 会議分析および要約エージェント用の言語モデル推論 (Claude 3 Sonnet) を提供します。Amazon Bedrock のドキュメントを参照してください。

  • Amazon CloudWatch – コンテナのパフォーマンスをモニタリングし、アプリケーションログをキャプチャし、CPU、メモリ、サービスのヘルスしきい値のアラームをトリガーします。Amazon CloudWatch CloudWatch ドキュメントを参照してください。

  • Amazon Elastic Container Service (Amazon ECS) – ヘルスチェックとサービス検出を使用して Fargate コンテナタスクを調整します。 「Amazon ECS ドキュメント」を参照してください。

  • Amazon Polly – 会議の概要を MP3 オーディオナレーションに変換します。Amazon Polly のドキュメントを参照してください。

  • Amazon Simple Notification Service (Amazon SNS) – CloudWatch モニタリングからアラーム通知を配信します。Amazon SNSドキュメント」を参照してください。

  • Amazon Simple Storage Service (Amazon S3) – アップロードされたトランスクリプト、生成された出力ファイル、ジョブステータスをライフサイクル管理で保存します。Amazon S3 のドキュメントを参照してください。

  • AWS CDK – すべてのインフラストラクチャをコードとして定義してデプロイします。AWS CDK ドキュメントを参照してください。

  • AWS Fargate – サーバーを管理せずにコンテナ化されたアプリケーションワークロードを実行し、1 ~ 3 インスタンスの自動スケーリングを行います。AWS Fargate ドキュメントを参照してください。

  • Elastic Load Balancing – 受信トラフィックをアベイラビリティーゾーン間で Fargate タスクに分散します。Elastic Load Balancing のドキュメントを参照してください。

その他のツール

  • Docker – ローカルテスト用のコンテナイメージを構築します。Docker ドキュメントを参照してください。

  • FastAPI – ジョブの送信、ステータスチェック、ファイルオペレーション用の REST API バックエンドを提供します。FastAPI ドキュメントを参照してください。

  • GitHub Actions – CI/CD デプロイパイプラインを自動化します。GitHub Actions のドキュメントを参照してください。

  • ReportLab – 構造化された会議の議事録からフォーマットされた PDF レポートを生成します。ReportLab ドキュメント」を参照してください。

  • Strands Agents SDK@toolデコレータパターンを使用して、最小限のコードでマルチエージェントワークフローをオーケストレーションします。「Strands SDK ドキュメント」を参照してください。

  • Streamlit – トランスクリプトのアップロードと出力のダウンロードのためのウェブベースのユーザーインターフェイスを提供します。「Streamlit ドキュメント」を参照してください。

コードリポジトリ

このパターンのコードは、GitHub sample-ai-meeting-minutes-generator リポジトリで入手できます。

ベストプラクティス

  • エージェントごとに明確で焦点を絞ったシステムプロンプトを使用して、一貫した出力形式とプロフェッショナル会議ドキュメントを確保します。

  • コスト最適化と自動ファイルクリーンアップのために、90 日間の保持期間を持つ Amazon S3 ライフサイクル管理を実装します。

  • Amazon S3 ベースのジョブ追跡を使用して、コンテナの再起動とスケーリングイベントの状態を維持し、信頼性の高い処理を実現します。

  • プロアクティブモニタリング用の Amazon SNS 通知を使用して、CPU、メモリ、サービスの状態に関する CloudWatch アラームを設定します。

  • システムエラーやセキュリティの問題を防ぐために、処理前にファイルのアップロードとコンテンツ形式を検証してサニタイズします。

  • 最小特権の原則に従い、タスクの実行に必要な最小限の権限を付与します。詳細については、IAM ドキュメントの「最小限の特権を認める。」と「IAM でのセキュリティのベストプラクティス」を参照してください。

  • マネージドオーケストレーションと簡素化された運用オーバーヘッドを必要とする本番環境のデプロイには、Consume AWS AgentCore を使用します。Strands SDK は、エージェントのインタラクションと特殊なワークフロー制御をより詳細にカスタマイズする必要がある場合に推奨されます。

  • 人間が生成した会議議事録に対するエージェントの出力の体系的な評価を実装して、システムプロンプトとエージェントのパフォーマンスを継続的に改善します。

エピック

タスク説明必要なスキル

リポジトリをクローンします

  1. パターンのリポジトリのクローンを作成するには、次のコマンドを実行します。

git clone https://github.com/aws-samples/sample-ai-meeting-minutes-generator.git
  1. プロジェクトディレクトリに移動します。

cd meeting-minutes-app
AWS DevOps

独自の Git リポジトリを作成する

  1. 任意の Git プラットフォーム (GitHub、GitLab、または Bitbucket) に新しいリポジトリを作成します。

  2. リポジトリを指すようにリモートオリジンを更新します。

git remote set-url origin https://<your-git-platform>.com/<your-username>/<your-repo-name>.git
  1. コードをリポジトリにプッシュします。

git push -u origin main
アプリ開発者

CI/CD のリポジトリシークレットを設定します。

  1. リポジトリの設定ページに移動します。

  2. シークレットと変数を選択し、Git プラットフォームのアクション (GitHub の場合) または同等のセクションを選択します。 GitHub

  3. 次のリポジトリシークレットを追加します。

    • 名前: AWS_ACCESS_KEY_ID、値: <your-aws-access-key-id>

    • 名前: AWS_SECRET_ACCESS_KEY、値: <your-aws-secret-access-key>

DevOps エンジニア

CI/CD ワークフローを使用してインフラストラクチャをデプロイします。

  1. メインブランチにコードをプッシュしてデプロイをトリガーします。

git add . git commit -m "Deploy multi-agent meeting intelligence platform" git push origin main
  1. GitHub Actions ワークフローは、AWS CDK を使用してインフラストラクチャを自動的にプロビジョニングします。

DevOps エンジニア

インフラストラクチャのデプロイを検証する。

  1. リポジトリの CI/CD セクションに移動します (例: https://github.com/<your-username>/<your-repo-name>/actions)。

  2. 実行中のワークフローを選択して、リアルタイムのログと進行状況を表示します。

  3. を開き AWS マネジメントコンソール 、 AWS CloudFormation サービスに移動します。

  4. リストから MeetingMinutesFargateStack スタックを選択します。

  5. スタックのステータスに CREATE_COMPLETE が表示されていることを確認します。

  6. Outputs タブを選択し、次のエピックで使用する ServiceURL 値を書き留めます。

クラウド管理者、DevOps エンジニア
タスク説明必要なスキル

ローカル開発環境をセットアップする

  1. アプリケーションディレクトリに移動します。

cd meeting_minutes_agent/app
  1. Python 仮想環境を作成してアクティブ化します。

python -m venv venv source venv/bin/activate # Linux/Mac # Or on Windows: venv\Scripts\activate
  1. 以下の必要な依存関係をインストールします。

pip install -r requirements.txt pip install streamlit
アプリ開発者

バックエンドサービス URL を取得します。

  1. を開き AWS マネジメントコンソール 、 AWS CloudFormation サービスに移動します。

  2. MeetingMinutesFargateStack スタックを選択します。

  3. [出力] タブを選択します。

  4. ServiceURL キーを見つけ、対応する URL 値をコピーします。

クラウド管理者

アプリケーションを起動し、接続を確認します。

  1. バックエンド URL を使用して Streamlit アプリケーションを起動します。

BACKEND_URL="http://<your-service-url>.us-east-1.elb.amazonaws.com" streamlit run meeting_minutes_agent/app/streamlit_app.py
  1. ウェブブラウザを開き、 に移動しますhttp://localhost:8501

  2. インターフェイスがバックエンド接続ステータスをサイドバーに表示することを確認します。

アプリ開発者
タスク説明必要なスキル

会議のトランスクリプトを処理し、出力を検証します。

  1. 次のいずれかの方法を使用して、会議のトランスクリプトをアップロードします。

    • リポジトリから提供された sample_meeting.txt ファイルを使用します。

    • 独自の会議トランスクリプト (.txt ファイル) をアップロードします。

    • 会議のトランスクリプトコンテンツをテキスト入力エリアに直接貼り付けます。

  2. 分の生成を選択して、マルチエージェント処理ワークフローを開始します。

  3. インターフェイスを使用してリアルタイムの処理の進行状況をモニタリングします。

  4. 生成された出力をダウンロードして検証します。

    • meeting_minutes_*.txt – 構造化された会議の議事録

    • meeting_audio_*.mp3 – オーディオ概要ナレーション

    • meeting_report_*.pdf – 包括的な PDF レポート

  5. 4 つの出力ファイルがすべて存在し、予想されるコンテンツが含まれていることを確認します。

アプリデベロッパー

トラブルシューティング

問題ソリューション

Amazon Bedrock モデルアクセスエラー

Anthropic Claude 3 Sonnet モデルがリージョンで有効になっていることを確認します。Amazon Bedrock コンソールを開き、モデルアクセスを選択し、Claude 3 Sonnet がアクセス許可を表示していることを確認します。

CDK ブートストラップが失敗する

デプロイ前にcdk bootstrap aws://<account-id>/<region>手動で を実行します。 AWS CLI 認証情報に CloudFormation、、Amazon S3、IAM のアクセス許可があることを確認します。

  • Fargate タスクの開始に失敗する

停止したタスクの詳細については、Amazon ECS コンソールを確認してください。一般的な原因には、不正な IAM ロールのアクセス許可、Amazon Bedrock アクセスの欠落、VPC 設定の問題などがあります。タスクの CloudWatch ログを確認します。

処理タイムアウト (15 分の ALB タイムアウト)

Application Load Balancer のアイドルタイムアウトは 15 分です。非常に長いトランスクリプトの場合は、入力サイズを 50,000 文字未満に減らすか、CDK 設定で ALB タイムアウトを増やします。

オーディオ生成が失敗する

Amazon Polly には 3,000 文字の制限があります。簡潔な要約エージェントは、この制限の下でコンテンツを自動的に に圧縮します。オーディオ生成が引き続き失敗する場合は、Amazon Polly アクセスがリージョンで有効になっていることを確認します。

GitHub Actions のデプロイが失敗する

AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYリポジトリのシークレットが正しく設定されていることを確認します。IAM ユーザーが CDK デプロイ (CloudFormation、Amazon ECS、Amazon S3、IAM) のアクセス許可を持っていることを確認します。

バックエンドが接続されていない (Streamlit shows disconnected)

BACKEND_URL 環境変数が CloudFormation Outputs タブの ServiceURL と一致することを確認します。Amazon ECS コンソールで Fargate サービスが実行され、正常であることを確認します。

コンテナの再起動後にジョブステータスが失われました

S3_JOB_TRACKING 環境変数を設定してAmazon S3 ベースのジョブの永続性を有効にします。これがないと、ジョブステータスはメモリにのみ保存され、コンテナの再起動時に失われます。

関連リソース

リファレンス

ツール

追加情報

マルチエージェント処理ワークフロー

このソリューションは、Fargate タスク内で順番に実行される 4 つの専門エージェントを通じて会議処理を調整します。各ジョブには一意のジョブ ID が割り当てられ、スケーラビリティと障害分離のために非同期的に実行されます。

  1. 構造化分ジェネレーター (generate_structured_minutes) – 未加工の会議のトランスクリプトとタイトルを入力として受け取ります。Amazon Bedrock Claude 3 Sonnet を使用して、会議情報、アジェンダ項目、ディスカッションの概要、担当者と期限のあるアクション項目、次のステップなど、包括的な会議議事録を作成します。出力をプレーンテキストファイルとして保存します。

  2. 簡潔なサマリージェネレーター (concise_minutes_agent) – エージェント 1 から構造化された完全な分を入力として受け取ります。Amazon Bedrock Claude 3 Sonnet を使用して、オーディオ生成とクイック読み取り用に 3,000 文字未満のエグゼクティブサマリーを作成します。

  3. オーディオジェネレーター (audio_generator_agent) – エージェント 2 からの入力として簡潔な分を取ります。Amazon Polly で Strands speak ツールを使用して、簡潔な概要を示す MP3 オーディオファイルを生成します。

  4. PDF レポートジェネレーター (create_comprehensive_pdf) – エージェント 1 から構造化された完全な分を入力として受け取ります。ReportLab ライブラリを使用して、カスタムタイトルスタイル、セクションヘッダー、読み取り可能なテキストレイアウト、メタデータを含むプロフェッショナル PDF レポートを作成します。

データフロー

  1. ユーザーアップロード – Streamlit UI または直接 API コールを通じてアップロードされた会議トランスクリプト。

  2. ジョブの初期化 – FastAPI は一意のジョブ ID を作成し、非同期処理のためにすぐに を返します。

  3. バックグラウンド処理 – 4 ステップの Strands エージェントワークフローは順番に実行されます。

  4. ファイル管理 – 生成されたファイルは、署名付きダウンロード URL を使用して Amazon S3 にアップロードされます。 URLs

  5. ジョブの完了 – ステータスは、生成されたすべての出力のダウンロードリンクで更新されます。

今後の機能強化に関する考慮事項

  • コンテナ間の信頼性のための Amazon DynamoDB による永続的なジョブ追跡

  • マルチフォーマット入力のサポート (.docx.pdf、オーディオ文字起こしファイル)

  • WebSocket のリアルタイム進行状況の更新

End-to-Endの処理フロー

  • このソリューションは、Fargate タスク内で実行されている一連の特殊なエージェントの調整を通じて、会議の処理を調整します。

  • 各ジョブには一意のジョブ ID が割り当てられ、スケーラビリティと障害分離を確保するために非同期的に実行されます。

  • ワークフローには、トランスクリプトの取り込み → 構造化された分の生成 → エグゼクティブサマリー → オーディオナレーション → PDF レポートの作成が含まれ、各ステップが検証され、リアルタイムで記録されます

4 ステップのエージェント処理

  1. 構造化分ジェネレーター – 詳細な会議議事録を作成します。

  2. 簡潔なサマリージェネレーター – クイックレビューと音声ナレーションのエグゼクティブサマリーを作成します。

  3. オーディオジェネレーター – 概要の MP3 ナレーションを生成します。

  4. PDF レポートジェネレーター – 洗練されたフォーマットの PDF レポートを生成します。

自動ファイル管理とクラウド統合

  • 自動出力アップロード: 構造化テキスト、オーディオ、PDF レポートは、ジョブ ID による適切なパーティショニングを使用して Amazon S3 に自動的にアップロードされます。 IDs

  • 整合性チェックとライフサイクル管理: アップロードの確認、ファイルの検証、クリーンアップがログに記録され、運用の透明性と信頼性が確保されます。

  • FastAPI バックグラウンドタスクは、非同期ジョブの実行を管理します。

UI 統合と出力

  • Streamlit UI には、バックエンド接続、トランスクリプト入力エリア、S3 署名付き URL を介して会議トランスクリプトをアップロードした後の 分の生成が表示され、ジョブを開始します。

  • 処理が完了すると、構造化テキスト、オーディオ、PDF 出力は署名付き S3 URL 経由でダウンロードでき、UI のクリック可能なボタンからアクセスできます。