【正解】C
【0からの解説】
本問の要件を分解すると、(1) 一時的なエラーの自動再試行、(2) ピーク時に Bedrock を過負荷にしない、(3) サービス可用性の変化への適応、(4) レスポンスストリーミングのサポート、(5) トークンを考慮したリクエスト処理、の 5 点です。
・AWS SDK の再試行モード:SDK には standard モード(指数バックオフ+ジッター付きの自動再試行)が組み込まれており、自前実装なしで一時的エラーを処理できます。「ジッター」とは再試行タイミングを意図的にランダム化することで、多数のクライアントが同時に再試行してサービスを過負荷にする「再試行の嵐」を防ぐ手法です。
・トークントリミング:FM にはコンテキストウィンドウ(一度に扱えるトークン数の上限)があるため、リクエストごとに入力を適切に切り詰めて制限内に収める処理が「トークンを考慮したリクエスト処理」に当たります。
【C が正解の理由】
C は 5 つの要件をすべて満たします。SDK の standard モード+ジッター付き再試行で (1)(2)(3) を、欠落チャンクのみの再取得とインメモリバッファによるストリーム再開で (4) を、リクエストごとのトークントリミングで (5) をカバーしています。失敗時のキャッシュ済み応答の返却は、障害時にもユーザー体験を維持するグレースフルデグラデーションとして機能します。
【誤りの選択肢】
A:固定 1 秒遅延の再試行は、ピーク時に全クライアントが同じタイミングで再試行を繰り返すため、Bedrock への過負荷を防げません。ストリーム全体の再起動は受信済みデータを捨てる非効率な方法で、「変化する可用性への適応」の仕組みもありません。
B:再試行とストリーミングの設計は優れていますが、「トークンを考慮したリクエスト処理」に関する対策が一切含まれていません。本問では入力の切り捨てやトークン制限超過が明示的な課題として挙げられているため、この要件を欠く B は不完全です。
D:「静的なトークン使用上限」と「コンテキストを考慮したトークン制限」が矛盾しています。また、パフォーマンス劣化時に新規リクエストを停止するロードシェディングは可用性を犠牲にする手段であり、「自動的にエラーを処理して適応する」という要件の解決策としては不適切です。
【参考】
AWS SDK の再試行動作Amazon Bedrock InvokeModelWithResponseStream API