View a markdown version of this page

保存された思考 - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

保存された思考

概要

Claude Fable 5.1 では、各思考ブロックはそれを生成した会話に関連付けられています。API は、後のリクエストでそのブロックを再生するときに、システムプロンプト、ツールリスト、およびブロック前のすべてのメッセージが変更されていないことを確認します。これにより、 Claudeの推論の整合性が保護されます。ある一連の命令で生成された推論を別のセットで再生することはできません。

ハーネスが受信したとおりに会話履歴を返す場合、何も変更されません。ターンごとのリマインダーの挿入、古いターンの要約、システムプロンプトの再構築など、リクエスト間の履歴を編集すると、API はデフォルトでリクエストを拒否します。

再生時にチェックされる内容

チェック 説明
モデル ブロックを読み取るモデルは、プロデューサーの考え方を読み取ることができます。2 つに明示的に互換性がない限り、モデルは別のモデルの考え方を読み取ることができません。このチェックは、思考能力のあるモデルに適用されます。
会話プレフィックス ブロック前の最上位のシステムプロンプト、ツール、およびすべてのメッセージコンテンツは、ブロックを生成したリクエストから変更されません。Claude Fable 5.1 はこのチェックを実行します。Claude Mythos 5.1 は同じ署名を記録しますが、実行しません。
注記

署名が変更されているか復号できない思考ブロックは、これらのチェックやベータ値に関係なく、常に 400 を返します。

block_binding リクエストオブジェクト (ベータ)

thinking オブジェクトblock_bindingに を追加し、 にベータ値を含めて、プレフィックスの不一致が検出されたときの動作anthropic_betaを制御します。

{ "anthropic_version": "bedrock-2023-05-31", "anthropic_beta": ["thinking-binding-controls-2026-08-01"], "max_tokens": 16000, "thinking": { "type": "adaptive", "block_binding": { "mismatch_behavior": "drop_block" } }, "messages": [{ "role": "user", "content": "Your prompt here" }] }

block_binding は 1 つのフィールド を受け入れます。これはmismatch_behavior、会話プレフィックスチェックに失敗する思考ブロックで API が何をするかを制御します。ベータ値なしで送信され、 は 400 block_bindingを返します。不正な形式の値は、 フィールドに 400 という名前を付けます。

不一致動作の制御

値 失敗したチェックの動作
"error" (デフォルト) リクエストは失敗し、失敗したブロック400 invalid_request_errorに名前を付けます。再試行できません。ストリーミングイベントの前に返されます。
"drop_block" リクエストは 200 で成功します。失敗したブロックは、会話の後の思考ブロックとともにモデルの前に削除され、削除された各ブロックは に一覧表示されますinput_transformations。

どちらの値もモデルチェックを変更せず、常に低下します。

input_transformations レスポンス配列

ベータ値が送信されると、レスポンスには、削除されたブロックを記述する最上位のinput_transformations配列が含まれる場合があります。

{ "type": "message", "role": "assistant", "content": [ ... ], "stop_reason": "end_turn", "usage": {"input_tokens": 18234, "output_tokens": 911}, "input_transformations": [ {"type": "thinking_dropped", "path": "messages.3.content.0", "reason": "prefix_binding_mismatch"} ] }

これは最上位の配列 ( のusage兄弟) で、ベータ値でのみ存在します。削除されたブロック[]がなく、それ以外のブロックがない場合です。各エントリには、削除されたブロックpathを識別する と、 reason model_binding_mismatchまたは のいずれかの が含まれますprefix_binding_mismatch。ストリーミングレスポンスでは、 配列がmessage_startイベント内のメッセージオブジェクト内に表示されます。削除されたブロックは にはカウントされませんinput_tokens。

エラーレスポンス

mismatch_behavior が の場合"error"、プレフィックスの不一致は以下を返します。

{ "type": "error", "error": { "type": "invalid_request_error", "message": "messages.3.content.0: Invalid `signature` in `thinking` block. The block is bound to a different conversation. Remove the block, or set `thinking.block_binding.mismatch_behavior` to \"drop_block\"." } }

このエラーはそのリクエストに対して永続的です。自動再試行ループではクリアされません。キャッチするときは、すべての思考ブロックを履歴から削除して再試行するか、 mismatch_behavior: "drop_block" とベータヘッダーを使用して再試行します。

マルチターンおよびエージェントアプリケーションのガイダンス

  • 再生アシスタントは返されたとおりに回転し、会話内でシステムプロンプトとツールを安定させます。

  • 以前のターンに 1 回限りのコンテンツを挿入しないでください (たとえば、一時的なシステムメッセージや、最後のユーザーのターンに追加されたリマインダーテキスト)。これにより、会話プレフィックスが変更され、後の思考ブロックが無効になります。代わりに会話中のシステムメッセージを使用します。

  • アプリケーションで会話履歴を書き換える場合は、書き換えた時点から思考ブロックを削除するか、 mismatch_behaviorを に設定します"drop_block"。

  • Converse API をそれをサポートするモデルで使用する場合は、ベータ値 と を thinking.block_bindingに渡しますadditionalModelRequestFields。