View a markdown version of this page

保留的思維 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

保留的思維

概觀

在 Claude Fable 5.1 上,每個思維區塊都與產生它的對話繫結在一起。當您在稍後的請求中重播該區塊時,API 會檢查系統提示、工具清單和區塊之前的所有訊息是否保持不變。這可保護 Claude推理的完整性:在一組指示下產生的推理無法在另一組下重播。

如果您的繫帶將對話歷史記錄傳送回原來的位置,則不會有任何變更。如果您在請求之間編輯歷史記錄 — 注入每圈提醒、摘要較舊的回合或重建系統提示 — API 預設會拒絕請求。

重播時檢查的內容

檢查 Description
模型 允許讀取區塊的模型讀取生產者的思維。除非兩者明確相容,否則模型無法讀取另一個模型的思維。此檢查適用於任何具備思考能力的模型。
對話字首 區塊前的最上層系統提示、工具和所有訊息內容與產生它的請求保持不變。Claude Fable 5.1 會執行此檢查。Claude Mythos 5.1 會記錄相同的簽章,但不會執行。
注意

簽章已變更或無法解密的思維區塊一律會傳回 400,無論這些檢查或 Beta 值為何。

block_binding 請求物件 (beta)

將 block_binding新增至thinking物件,並在 中包含 Beta 值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 接受一個欄位 mismatch_behavior,它控制 API 對未通過對話字首檢查的思維區塊執行的操作。在沒有 Beta 值的情況下傳送, block_binding會傳回 400。格式不正確的值也會傳回 400 命名 欄位。

控制不相符行為

Value 失敗檢查的行為
"error" (default) 請求失敗並400 invalid_request_error命名失敗的區塊。無法重試;在任何串流事件之前傳回。
"drop_block" 使用 200 請求成功。失敗的區塊會在模型之前移除,以及對話中的每個後續思考區塊,而每個移除的區塊都會列在 中input_transformations。

這兩個值都不會變更模型檢查,一律會捨棄。

input_transformations 回應陣列

傳送 Beta 值時,回應可能包含頂層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),僅具有 Beta 值;未移除任何區塊且沒有其他區塊[]時。每個項目都包含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" 和 Beta 版標頭重試。

多迴轉和代理應用程式的指引

  • 重播助理會完全依照傳回的方式旋轉,並在對話中保持系統提示和工具的穩定。

  • 避免一次性內容插入較早的回合 (例如,暫時性系統訊息或附加到上次使用者回合的提醒文字)。這些變更了對話字首,並使稍後的思維區塊失效。請改用中融合系統訊息。

  • 如果您的應用程式重寫對話歷史記錄,請從重寫點捨棄思維區塊,或將 mismatch_behavior設定為 "drop_block"。

  • 將 Converse API 與支援它的模型搭配使用時,請透過 傳遞 Beta 值 和 thinking.block_binding additionalModelRequestFields。