AI News HubLIVE
站内改写

Strands Agents、NVIDIA NIM、Amazon Bedrock AgentCoreを使用した高性能生成AIシステムの構築

NVIDIA NIMによるGPU高速化推論、Amazon Bedrock AgentCoreによるマネージドランタイム、Strands Agentsによるサーバーレスオーケストレーションを組み合わせたマルチエージェントキャンペーンレビューシステムの構築方法を学びます。並列推論、コンテキスト永続化、可観測性を実現します。

記事インテリジェンス

エンジニア上級

要点

  • NVIDIA NIM、Amazon Bedrock AgentCore、Strands Agentsを組み合わせた高性能マルチエージェントAIシステム。
  • 並列推論、コンテキスト永続化、トレース可能な実行パスを実現。
  • AWS SAMテンプレートでデプロイ可能、可観測性とメモリ機能を内蔵。
  • デジタルアシスタント、レビュー自動化、RAGパイプラインに適用可能。

重要な理由

このニュースが重要なのは、NVIDIA NIM、Amazon Bedrock AgentCore、Strands Agentsを組み合わせた高性能マルチエージェントAIシステムためです。

技術的影響

モデル選定、推論コスト、プロダクト能力、評価基準に影響する可能性があります。

高性能な生成AIエージェントを構築するには、高速な推論、複数エージェントの調整、プロダクションワークロード下での信頼性を提供するアーキテクチャが必要です。レビューの自動化、デジタルアシスタントの駆動、複雑な意思決定ワークフローのサポートのために生成AIエージェントを構築している場合、これらのエージェントは優れたパフォーマンスを発揮する必要があります。手作業を削減し、ほぼリアルタイムで応答し、追加のインフラ管理なしで数千ものインタラクションにスケールする必要があります。この記事では、AWS上でGPU高速化推論、サーバーレスオーケストレーション、共有メモリ、組み込み可観測性を組み合わせて、これらの高性能エージェントを構築する方法を学びます。これらの機能は、実験的なプロトタイプから一貫したビジネス価値を提供するシステムへの移行に不可欠です。

プロダクション環境でエージェントワークロードが増大するにつれ、同時リクエスト下での推論レイテンシが大幅に増加し、応答の低下やユーザーエクスペリエンスの悪化を招く可能性があります。ステートレスな実行環境では、エージェントがインタラクション間で会話やタスクのコンテキストを失うことが多く、その結果、作業の重複や一貫性のない出力が発生します。エージェント実行の可視性が限られているため、障害の診断、推論パスの理解、運用コストの制御が困難になります。これらの課題は、複数のエージェントが並行して実行され、コンテキストを共有し、結果を集約する必要があるマルチエージェントシステムでより顕著になります。

並列推論、コンテキスト永続化、トレース可能な実行パスを示すマルチエージェントキャンペーンレビューシステムを構築します。このアーキテクチャは、GPU高速化推論にNVIDIA NIM、マネージドランタイム、共有メモリ、組み込み可観測性にAmazon Bedrock AgentCore、サーバーレスマルチエージェントオーケストレーションにStrands Agentsを組み合わせています。このアプローチは、プロダクション環境でのパフォーマンス、スケーラビリティ、運用インサイトをサポートします。例はマーケティングコンテンツレビューに焦点を当てていますが、同じパターンはデジタルアシスタント、レビュー自動化、検索拡張生成パイプラインにも適用できます。

これらの概念を具体化するために、以下のセクションでは、これらのコンポーネントが実際にどのように連携するかを示す参照アーキテクチャと実装について説明します。

**ソリューション概要**

並行して動作する3つの専門エージェントで構成されるシステムを構築します。ペルソナレビューエージェントは、複数のオーディエンスの視点からキャンペーンコンテンツを評価し、共感スコアを生成します。バリデーターエージェントは、法的およびブランドガイドラインに照らしてコンテンツをチェックします。ファイナライザーエージェントは出力を集約し、統合された推奨事項セットを生成します。Reactベースのフロントエンドを介してドキュメントを送信すると、非同期的に結果をポーリングし、利用可能になった時点でエージェントのフィードバックを表示します。

当社のソリューションは、build.nvidia.comから利用可能なホスト型NVIDIA NIM APIを使用して、完全マネージドサービスとして高性能GPU高速化推論を提供します。これらのエンドポイントは、NVIDIA管理のGPUバックエンド上で最適化された大規模言語モデルを実行します。これらのバックエンドは、Compute Unified Device Architecture(CUDA)やTensorRT-LLMなどのテクノロジーを使用して、エージェントワークフローに低レイテンシ、高スループットの応答を提供します。OpenAI互換のChat Completion APIを公開することで、NIMはモデル固有の適応を必要とせずに、Strandsベースのマルチエージェントオーケストレーションレイヤーと統合します。

エージェントオーケストレーションは、ツールベースの推論ワークフローを調整するためのAWSのマルチエージェントフレームワークであるStrands Agentsを使用して実装します。Strandsを使用すると、エージェントのインタラクションを明示的にモデル化できるため、複数のエージェントにわたる並列実行、制御フロー、結果の集約を管理しやすくなります。Strandsオーケストレーターと専門エージェントをDockerコンテナーにまとめ、Amazon Bedrock AgentCore Runtimeにデプロイします。AgentCore Runtimeは、チェックポイントとリカバリ機能を備えたマネージド実行環境を提供します。これらの機能により、エージェントは中断からグレースフルに回復し、手動のインフラ管理なしで数千の同時呼び出しにスケールできます。

Amazon Bedrock AgentCore Observabilityを使用して、エージェントワークフローの各ステップの詳細な可視化を提供し、開発者が実行パスを検査し、中間出力を監査し、パフォーマンスのボトルネックをデバッグできるようにします。Amazon CloudWatchを介して、レイテンシ、トークン使用量、エラー率などの運用メトリクスを監視できます。この可視性により、エージェントの動作を理解し、本番環境でのパフォーマンスのボトルネックを特定できます。

また、Amazon Bedrock AgentCore Memoryを使用して、エージェント呼び出し間での共有コンテキストを提供し、マルチターン会話をサポートします。AgentCore Memoryは会話の状態と履歴を保存するための組み込みサポートを提供するため、この実装を拡張してAIアシスタントの自然言語インターフェースを提供できます。

このソリューションの中核的な側面の1つは、AWS Serverless Application Model(AWS SAM)テンプレートを使用したBedrock AgentCore Runtimeへの簡単なデプロイです。テンプレートによってプロビジョニングされたAmazon API Gatewayインターフェースを呼び出し、Strandsエージェントとそのすべての依存関係をパッケージ化してデプロイするとともに、AgentCore ObservabilityとAgentCore Memoryを有効にします。

次のアーキテクチャ図は、NVIDIA NIM、Strands Agents、およびAmazon Bedrock AgentCoreが、デプロイメント内の推論、オーケストレーション、メモリ、および可観測性をサポートするためにどのように連携するかを示しています。

**前提条件**

このソリューションをデプロイする前に、開発環境をセットアップし、以下のツールを前提条件としてインストールする必要があります。

  • AWS Command Line Interface(AWS CLI)のインストール
  • AWS SAM CLI v1.100.0+のインストール
  • Docker v20.x+のインストール
  • Node.js v18.x+のインストール
  • Python v3.11+のインストール

**依存関係**

Strands Agentsの実装には、DockerFileにパッケージ化された以下の依存関係も必要です。

  • AWS Strandsマルチエージェントフレームワーク:strands-agents
  • Strandsエージェントツールとユーティリティ:strands-agents-tools
  • API呼び出し用のHTTPライブラリ:requests
  • Amazon Bedrockエージェントコア機能:bedrock-agentcore
  • AWS SDK for Python:boto3

**ソリューションのデプロイ**

アーキテクチャを理解したところで、以下の手順に従ってAWS環境にソリューションをデプロイします。NVIDIA NIMを使用するには、NVIDIA AI Enterprise EULA(AWS MarketplaceサブスクリプションまたはNGC登録時に入手可能)への同意が必要です。

当社のソリューションはGitHubリポジトリからダウンロードできます。以下のステップバイステップのガイダンス(GitHubリポジトリのDeploymentセクションにも正確に記載されています)に従って、AWS環境にソリューションをデプロイしアクセスします。

**ステップ1:リポジトリのクローン**

git clone <repo-url>
cd aws-genai-campaign-review-strands-agentcore

**ステップ2:AWS認証情報の設定** AWS CLIの設定:

aws configure

認証情報の確認:

aws sts get-caller-identity

**ステップ3:Amazon DynamoDBペルソナテーブルのセットアップ** スクリプトを実行可能にする:

chmod +x scripts/setup_persona_table.sh

セットアップスクリプトの実行:

./scripts/setup_persona_table.sh

**ステップ4:AWS SAMアプリケーションのビルド**

sam build

**ステップ5:インフラストラクチャのデプロイ** ガイド付きデプロイを使用し、プロンプトに従ってスタック名、エージェント名、AWSリージョンを指定し、その他の領域はデフォルト値を受け入れます。

sam deploy --guided

**ステップ6:デプロイ出力の取得** APIエンドポイントの取得:

aws cloudformation describe-stacks --stack-name <stack-name> --query 'Stacks[0].Outputs' --output table

以下の値を保存します。

  • ApiEndpoint – HTTP API URL
  • CampaignOrchestratorApi – エージェントAPI URL
  • CloudFrontURL – フロントエンドURL
  • FrontendBucket – フロントエンド用S3バケット

**ステップ7:AgentCore Runtimeへのエージェントのデプロイ** これにより、StrandsエージェントがBedrock AgentCoreにデプロイされ、エージェントARNがSystems Managerに書き込まれます。

curl -X POST -H "Content-Type: application/json" -d '{"action":"deploy","agent_name":"<your-agent-name>"}' <ApiEndpoint>/deploy

これには約5分かかります。API Gatewayはタイムアウト(29秒)しますが、AWS Lambda関数は実行を継続します。

進捗の監視:

aws logs tail /aws/lambda/deploy-agentcore --region <region> --follow

「Agent Core Runtime is READY!」と「Wrote Agent ARN to SSM」が表示されるまで待ちます。

確認:

aws ssm get-parameter --name /agentcore/<agent-name>/agent-arn --region <region>

**ステップ8:フロントエンド環境の設定**

API_URL=$(aws cloudformation describe-stacks --stack-name <stack-name> --query 'Stacks[0].Outputs[?OutputKey==`ApiEndpoint`].OutputValue' --output text)
AGENT_API_URL=$(aws cloudformation describe-stacks --stack-name <stack-name> --query 'Stacks[0].Outputs[?OutputKey==`CampaignOrchestratorApi`].OutputValue' --output text)
cat > .env <<EOF
VITE_API_URL=$API_URL
VITE_AGENT_API_URL=$AGENT_API_URL
EOF

**ステップ9:フロントエンドのビルドとデプロイ** 依存関係のインストール:

npm install

フロントエンドのビルド:

npm run build

フロントエンドバケット名の取得:

FRONTEND_BUCKET=$(aws cloudformation describe-stacks --stack-name <stack-name> --query 'Stacks[0].Outputs[?OutputKey==`FrontendBucket`].OutputValue' --output text)

S3へのデプロイ:

aws s3 sync dist/ s3://$FRONTEND_BUCKET --delete

(オプション)CloudFrontキャッシュの無効化(更新時):

DISTRIBUTION_ID=$(aws cloudfront list-distributions --query "DistributionList.Items[?Origins.Items[0].DomainName=='${FRONTEND_BUCKET}.s3.us-west-2.amazonaws.com'].Id" --output text)
aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths "/*"

**ステップ10:アプリケーションへのアクセス** CloudFront URLの取得:

aws cloudformation describe-stacks --stack-name <stack-name> --query 'Stacks[0].Outputs[?OutputKey==`CloudFrontURL`].OutputValue' --output text

ブラウザでURLを開いてアプリケーションにアクセスします。campaign_brief.mdファイルをサンプルキャンペーンドキュメントとして使用し、左側のパネルにアップロードします。すると、右側のパネルにマルチエージェントオーケストレーションからのキャンペーンレビュー出力が表示されます。

Bedrock AgentCore Observabilityコンソールに移動し、エージェントを選択すると、エージェントワークフローの各ステップの詳細な可視化が表示されます。

**クリーンアップ**

継続的な課金を避けるため、ソリューションを試した後はAWSアカウントをクリーンアップします。

AWS CloudFormationスタックの削除:

sam delete --stack-name <stack-name>

DynamoDBテーブルの削除:

aws dynamodb delete-table --table-name PersonaTable --region <region>

**結論**

この記事では、NVIDIA NIMをGPU高速化推論に、Amazon Bedrock AgentCoreとStrands AgentsをAWS上のサーバーレスオーケストレーションに組み合わせて、本番稼働可能な生成AIエージェントシステムを構築する方法を学びました。推論をエージェント調整から分離することで、このアーキテクチャは独立したスケーリング、エージェント間の共有コンテキスト、実行とパフォーマンスの詳細な可視性をサポートします。

この記事のアプローチは、並列推論、コンテキスト永続化、運用インサイトを必要とするマルチエージェントシステムの実用的な基盤を提供します。レビュー自動化、デジタルアシスタント、またはその他のエージェント駆動型アプリケーションを構築している場合でも、ここで示されたパターンは、実験的なプロトタイプからAWS上で確実にデプロイ、観察、スケーリングできるシステムへの移行に役立ちます。

**著者について**

Kanishk Mahajanは、AWS Professional ServicesのプリンシパルAI/MLです。この役割において、彼は通信およびメディア・エンターテインメント分野におけるAWSの主要顧客向けのGenAIおよびエージェント変革をリードしています。

Akshay Parkhiは、Amazon Web Servicesの機械学習エンジニアであり、SAP、クラウド、DevOps、AI/MLにわたるエンタープライズ変革をリードしてきた16年以上の経験があります。彼は、複雑な実世界環境で重要なビジネス成果を促進する、プロダクショングレードのAIおよびエージェントシステムを設計し、スケールしています。