変更要約: 初版: ドメイン2(実装と統合)の5節を作成
2.1エージェンティック AI ソリューションとツール統合
自律的に推論・ツール実行するエージェントの実装を学びます。Strands Agents/Agent Squad によるマルチエージェント、MCP(Model Context Protocol)でのツール連携、Bedrock AgentCore、Step Functions による ReAct/停止条件、Lambda/ECS の MCP サーバを扱います。
エージェントは「推論→ツール実行→観察→次の判断」のループで複雑なタスクを自律的に解きます。プロでは、エージェントを安全かつ本番品質で動かす設計が問われます。
2.1.1エージェントの構成要素
- Strands Agents:モデル駆動の OSS エージェント SDK。agent loop・ツール(MCP)・マルチエージェント・ストリーミングが組み込み。Bedrock が既定プロバイダ。
- Agent Squad:複数エージェントを Classifier で振り分けるオーケストレーション。SupervisorAgent で並列協調。
- Bedrock AgentCore:任意フレームワーク/モデルで本番エージェントを動かす基盤(Runtime・Memory・Gateway・Identity・Code Interpreter・Browser・Observability)。
- MCP:API/Lambda/既存サービスを標準化ツールとしてエージェントに公開するプロトコル。AgentCore Gateway で既存資産を MCP 化できる。
- 安全な制御:Step Functions で ReAct や停止条件、Lambda でタイムアウト、IAM でリソース境界、サーキットブレーカーで暴走を防ぐ。
「OSS のモデル駆動エージェント SDK=Strands」「複数エージェントの振り分け=Agent Squad の Classifier」「任意フレームで本番運用=AgentCore」「既存 API をツール化=MCP(AgentCore Gateway)」「暴走防止=停止条件/タイムアウト/IAM 境界」 は頻出です。
エージェント設計は「単体の堅牢さ」と「協調」に分かれます。単体は Strands Agents の agent loop でツール(@tool/MCP)を呼び、Step Functions で ReAct(推論と行動の交互)や明示的な停止条件、Lambda のタイムアウト、IAM の最小権限でリソース境界を課します。サーキットブレーカーで連鎖失敗を遮断し、人手確認が要る箇所は Step Functions で承認ステップ(human-in-the-loop)を挟みます。協調は Agent Squad(Classifier が入力と履歴から最適エージェントを選ぶ/SupervisorAgent で並列)。ツールは MCP サーバとして公開し、軽量なら Lambda、重い/状態持ちは ECS に置きます。本番運用は Bedrock AgentCore(Runtime でセッション分離・サーバーレス、Memory で短期/長期記憶、Gateway で MCP 化、Identity でエージェント認証、Observability で OTEL トレース)に載せると、インフラ管理なしでスケール・監視・ガバナンスが揃います。
| 目的 | 使うもの | ポイント |
|---|---|---|
| 単体エージェント開発 | Strands Agents | agent loop+MCP ツール |
| 複数エージェントの振り分け | Agent Squad | Classifier/SupervisorAgent |
| 本番運用基盤 | Bedrock AgentCore | Runtime/Memory/Gateway/Identity |
| 暴走/連鎖失敗の防止 | 停止条件・タイムアウト・IAM | サーキットブレーカー |
ひっかけ: 「エージェントには制限を設けず自由にツールを呼ばせるほど性能が上がる」は誤りです。本番では停止条件・タイムアウト・IAM 境界・サーキットブレーカーが必須。また「Strands=AWS マネージドサービス」も誤り(OSS の SDK。マネージド運用基盤は AgentCore)。
2.1.2この節のまとめ
- 単体=Strands/協調=Agent Squad/本番基盤=AgentCore/ツール=MCP
- 安全=停止条件・タイムアウト・IAM 境界・サーキットブレーカー
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. 既存の社内 REST API や Lambda を、エージェントから標準化された方法でツールとして呼び出せるようにしたい。最適なのは?
Q2. ユーザーの問い合わせ内容に応じて、専門の異なる複数エージェント(請求・技術・営業)へ動的に振り分けたい。最適なのは?
Q3. 本番のエージェントが無限ループや過剰なツール呼び出しでコスト暴走するのを防ぎたい。適切な制御の組み合わせは?

