AWS Certified Generative AI Developer - Professional 資格対策コース
停止条件・タイムアウト・回路ブレーカー・Human-in-the-loop
このレッスンで学ぶこと 対応試験ドメイン D2 タスク 2.1.3(停止条件・障害制御)・2.1.5(Human-in-the-loop)。自律エージェントの無限ループ・暴走・コスト爆発を防ぐガードレール(停止条件・最大反復・タイムアウト・回路ブレーカー)と、Amazon A2I による人手レビュー、IAM による権限の最小化を設計できるようになります。
解説
自律エージェントは便利な反面、ツール呼び出しが無限に続いたり、外部 API 障害に巻き込まれたり、危険な操作を独断で実行したりするリスクがあります。試験では「エージェントを安全に止める・人を介在させる・権限を絞る」設計判断が問われます。
暴走を防ぐ 4 つのガードレール
| ガードレール | 目的 | AWS での実装 |
|---|---|---|
| 停止条件 | 目標達成・想定外状態で確実に終了 | Step Functions の Choice ステートで終了判定 |
| 最大反復回数 | ツール呼び出しの無限ループ防止 | ステート変数でカウンタを持ち上限で停止 |
| タイムアウト | 応答しないツールで止まらない | Step Functions のステート/実行タイムアウト、Lambda タイムアウト |
| 回路ブレーカー(Circuit Breaker) | 連続失敗する依存先への呼び出しを一時遮断 | 失敗率を監視し閾値超過で代替経路へ(Lambda + ステート管理) |
回路ブレーカーは、外部依存が落ちているのに呼び出しを続けて被害を広げないためのパターンです。一定の失敗が続いたら回路を「開いて」呼び出しを止め、一定時間後に半開で試す、という制御を Lambda とステート管理で実装します。
Human-in-the-loop と Amazon A2I
高リスクな操作(送金・契約・医療判断など)や、モデルの信頼度が低い出力は、自動実行せず人にレビューさせて承認/却下を得るべきです。これを Human-in-the-loop と呼びます。
Amazon Augmented AI(Amazon A2I)は、機械学習の予測結果に対し人手レビューワークフローを組み込むマネージドサービスです。信頼度が閾値未満の出力を自動でレビュータスクに回し、レビュアーの判断を取り込めます。Step Functions のワークフロー内で「信頼度が低ければ A2I の人手レビューへ分岐し、承認後に次へ進む」という設計が定石です。
IAM による権限境界(最小権限)
エージェントが呼び出す Lambda には、そのツールが必要とする最小限の権限だけを IAM ロールで付与します。たとえば在庫照会ツールには読み取り専用、注文確定ツールには限定されたリソースへの書き込みだけ、と分離します。これにより、たとえ FM が誤って危険な操作を選んでも、権限がなければ実行できません。エージェントの安全性は「止める仕組み」だけでなく「そもそも実行できる範囲を絞る」ことで二重化します。
コード例(最大反復チェックを行う Lambda)
Step Functions のループ内で反復回数の上限を判定する最小例です。
Python
MAX_ITERATIONS = 8
def handler(event, context):
iteration = event.get("iteration", 0) + 1
if iteration > MAX_ITERATIONS:
return {"status": "STOPPED", "reason": "max_iterations_exceeded"}
# ここでツール実行や推論を行い、続行可否を返す
return {"status": "CONTINUE", "iteration": iteration}試験で問われるポイント
- タイムアウト/反復上限/回路ブレーカーの使い分け。タイムアウトは「1 回の応答が遅い」対策、最大反復は「ループが終わらない」対策、回路ブレーカーは「依存先が連続失敗する」対策。それぞれ別問題に対応する
- Human-in-the-loop は Amazon A2I。信頼度の低い出力や高リスク操作を人手レビューに回すマネージド機能。Step Functions の分岐から呼び出す
- 安全性は二重化。止める仕組み(停止条件・回路ブレーカー)と、実行できる範囲を絞る仕組み(IAM 最小権限)の両方が問われる。「危険操作の権限を持たせない」が正解になりやすい
- 回路ブレーカーとリトライは別物。リトライは「もう一度試す」、回路ブレーカーは「これ以上呼ばない」。連続失敗時に無限リトライするのはアンチパターン
サービスの使い分け早見表
| やりたいこと | 使うもの | 混同しやすいもの |
|---|---|---|
| 信頼度の低い出力を人手レビューに回す | Amazon A2I(Augmented AI) | Amazon SageMaker Ground Truth(学習データのラベリング寄り) |
| 反復・タイムアウト・分岐の制御 | AWS Step Functions | Lambda 単体(実行タイムアウトは持つが分岐制御は弱い) |
| エージェントの実行権限を最小化 | IAM ロール(最小権限) | Bedrock Guardrails(入出力内容の安全化であり権限制御ではない) |
| 連続失敗する依存先の遮断 | 回路ブレーカー(Lambda + ステート) | リトライ(再試行であって遮断ではない) |
まとめ
自律エージェントには「確実に止める」ガードレールが不可欠です。停止条件・最大反復回数・タイムアウト・回路ブレーカーを AWS Step Functions と AWS Lambda で実装し、高リスク出力は Amazon A2I の人手レビューへ回し、IAM の最小権限で実行範囲そのものを絞ります。止める仕組みと権限の二重化が試験の要点です。
次のステップ
次のクイズレッスンで、各ガードレールの使い分けと Human-in-the-loop の設計を問うシナリオ問題に挑戦しましょう。
関連レッスン
- ReAct パターン・推論分解・モデルアンサンブル(pro-agents-react)
- セキュアアクセス(ID フェデレーション・RBAC・最小権限)(pro-secure-access)
- レジリエントな API(バックオフ・フォールバック・ルーティング)(pro-api-resilience)