AIP実装と統合
法律テック企業がBedrock Agentを使った契約書ドラフト支援システムを構築しています。エージェントが重要な免責条項を生成した際、上席弁護士の承認を得てから条項を確定する必要があります。承認待ち中も会話コンテキストを完全に保持し、承認後は同一セッション内で処理を継続する要件があります。最も適切な実装方法はどれですか?
AアクショングループのLambda関数内でSQSキューをポーリングして弁護士承認を待機し、承認後にAgentへ結果を返す
Lambda関数内でSQSキューをポーリングする方式は実装可能ですが、Lambdaには最大15分のタイムアウト制限があり、弁護士承認に時間がかかる場合はタイムアウトが発生してセッションが中断するリスクがあります。
BReturn of Control(ROC)機能でアプリケーション側に制御を返し、弁護士承認後にsessionIdとinvocationIdで同一セッションを再開する
✓ 正解
Return of Controlにより、Agentはアプリケーション層に制御を委ね、同一のsessionIdとinvocationIdを使って承認後に会話コンテキストを完全に保持したまま処理を再開できます。セッション中断なしに人間の承認を組み込める最適な方式です。
CStep FunctionsのwaitForTaskTokenパターンをアクショングループLambdaから起動し、承認後にタスクトークンを送信してフローを再開する
Step FunctionsのwaitForTaskTokenパターンは非同期ワークフローに適していますが、Bedrock Agentの会話セッションとは独立したオーケストレーションになるため、エージェントの会話コンテキスト保持が保証されません。
DBedrock Agentのメモリ機能で条項内容を保存してセッションを終了し、承認後に新規セッションを開始してメモリから内容を復元する
メモリ機能でセッションを終了した後に新規セッションを開始すると、元の会話の詳細なコンテキストは要約された情報としてのみ復元されるため、セッション継続という要件を完全には満たせません。
解説
選択肢BのReturn of Control(ROC)はBedrock Agentsがアクション実行の制御をアプリケーション層に委ねる機能です。エージェントはactionInvocationIdと実行すべきアクションの詳細を含むレスポンスを返し(completionReason: RETURN_OF_CONTROL)、アプリケーション側で弁護士承認を取得します。承認後、InvokeAgent APIのreturnControlInvocationResultsパラメータに結果を渡して同一sessionIdで呼び出すことで、完全なコンテキストを保持したまま処理を継続できます。
選択肢AのLambda内でSQSをポーリングする方法はLambdaの15分タイムアウト制限に抵触するリスクがあります。
選択肢CのStep FunctionsのwaitForTaskTokenパターンはワークフロー用途であり、エージェントセッションのコンテキスト保持という要件には適していません。
選択肢DのBedrock Agentのメモリ機能を使用したセッション終了・新規セッション開始では、完全なコンテキスト保持が保証されず、複数ターンの会話状態を完全に復元できません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでAIPを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →