

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

# 延伸思考
<a name="claude-messages-extended-thinking"></a>

延伸思考可為複雜任務提供 Claude 增強的推理功能，同時在交付最終答案之前，為其逐步思考程序提供不同程度的透明度。每當您啟用 Claude 的思考模式時，您將需要為 Claude 可用於其內部推理程序的字符數量上限設定預算。

支援的模型如下：


| 模型 | 模型 ID | 
| --- | --- | 
| Claude Opus 4.5 | `anthropic.claude-opus-4-5-20251101-v1:0` | 
| Claude Opus 4 | `anthropic.claude-opus-4-20250514-v1:0` | 
| Claude Sonnet 4 | `anthropic.claude-sonnet-4-20250514-v1:0` | 
| Claude Sonnet 4.5 | `anthropic.claude-sonnet-4-5-20250929-v1:0` | 
| Claude Sonnet 4.6 | `anthropic.claude-sonnet-4-6` | 
| Claude Opus 4.6 | `anthropic.claude-opus-4-6-v1` | 
| Claude Haiku 4.5 | `anthropic.claude-haiku-4-5-20251001-v1:0` | 
| Claude 3.7 Sonnet | `anthropic.claude-3-7-sonnet-20250219-v1:0` | 

**注意**  
API 行為在 Claude 3.7 和 Claude 4 模型之間有所不同。如需詳細資訊，請參閱[跨模型版本思考的差異](claude-messages-thinking-differences.md)。

**Topics**
+ [延伸思考的最佳實務和考量事項](#claude-messages-extended-thinking-bps)
+ [延伸思考的運作方式](#claude-messages-how-extended-thinking-works)
+ [如何使用延伸思考](#claude-messages-use-extended-thinking)
+ [工具使用的延伸思考](#claude-messages-extended-thinking-tool-use)
+ [思維區塊清除 (Beta 版）](#claude-messages-thinking-block-clearing)
+ [具有提示快取的延伸思考](#claude-messages-extended-thinking-prompt-caching)
+ [了解思考區塊快取行為](#claude-messages-extended-thinking-caching-behavior)
+ [具有延伸思考的字符上限和內容視窗大小](#claude-messages-extended-thinking-max-tokens)
+ [延伸思考字符成本考量](#claude-messages-extended-thinking-cost)

## 延伸思考的最佳實務和考量事項
<a name="claude-messages-extended-thinking-bps"></a>

使用指引
+ **任務選擇**：針對數學、編碼和分析等需要逐步推理的特別複雜任務，使用延伸思考。
+ **內容處理**：您不需要自行移除先前的思考區塊。Anthropic API 會自動忽略先前回合的思考區塊，而且計算內容用量時不會包含這些區塊。
+ **提示工程**：如果您想要最大化 Claude 的思考功能，請檢閱 Anthropic 的[延伸思考提示秘訣](https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/extended-thinking-tips)。

效能考量
+ **回應時間**：由於推理程序所需的額外處理，因此請為可能較長的回應時間做好準備。考量產生思考區塊可能會增加整體回應時間。
+ **串流需求**：當 `max_tokens` 大於 21,333 時，需要串流。串流時，請準備好在 `thinking` 和 `text` 內容區塊到達時同時處理這些區塊。

功能相容性
+ 思考與 `temperature`、`top_p` 或 `top_k` 修改或[強制工具使用](https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/implement-tool-use#forcing-tool-use)不相容。
+ 啟用思考時，您無法預先填入回應。
+ 變更思考預算會使內含訊息的快取提示字首失效。不過，當思考參數變更時，快取的系統提示和工具定義將繼續運作。

使用思考預算
+ **預算最佳化**：最低預算為 1,024 個字符。Anthropic 建議從最低值開始，並逐步提高思考預算，以找出適合您使用案例的最佳範圍。較大的字符計數可能允許更全面和細微的推理，但也可能根據任務減少回合。思考預算是目標 (而不是嚴格的限制) - 實際字符用量可能會根據任務而有所不同。
+ **最低和最佳設定**：最低預算為 1,024 個字符。我們建議您從最低值開始，並逐步提高思考預算，以尋找最適合您使用案例的 Claude 最佳範圍。較高的字符計數可能允許您實現更全面和細微的推理，但也可能根據任務減少回合。思考預算是目標 (而不是嚴格的限制) - 實際字符用量可能會根據任務而有所不同。
+ **實驗**：模型在不同的最大思考預算設定中可能會有不同的效能。提高思考預算上限可以讓模型有更完善或更深入的思考，但代價是延遲的增加。對於關鍵任務，請考慮測試不同的預算設定，以找出品質和效能之間的最佳平衡。
+ **大筆預算**：對於超過 32K 的思考預算，我們建議您使用批次處理來避免聯網問題。推送模型以思考超過 32K 字符的請求會導致長時間執行的請求，這可能會導致系統逾時和開放連線限制。請注意，`max_tokens` 限制因 Claude 模型而異。如需詳細資訊，請參閱[具有延伸思考的字符上限和內容視窗大小](#claude-messages-extended-thinking-max-tokens)。
+ **字符用量追蹤**：監控思考字符用量，以最佳化成本和效能。

## 延伸思考的運作方式
<a name="claude-messages-how-extended-thinking-works"></a>

開啟延伸思考時，Claude 會在輸出其內部推理的位置建立 `thinking` 內容區塊。Claude 會在製作最終回應之前納入此推理的洞見。API 回應將包含 `thinking` 內容區塊，後面接著 `text` 內容區塊。

以下是預設回應格式的範例：

```
{
  "content": [
    {
      "type": "thinking",
      "thinking": "Let me analyze this step by step...",
      "signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
    },
    {
      "type": "text", 
      "text": "Based on my analysis..."
    }
  ]
}
```

如需延伸思考回應格式的詳細資訊，請參閱 Anthropic 的訊息 API [請求與回應](model-parameters-anthropic-claude-messages-request-response.md)。

## 如何使用延伸思考
<a name="claude-messages-use-extended-thinking"></a>

若要開啟延伸思考，請新增 `thinking` 物件，並將 `thinking` 參數設為已啟用，並將 `budget_tokens` 設定為指定的延伸思考字符預算。

`budget_tokens` 參數會決定 Claude 允許用於其內部推理程序的字符數量上限。在 Claude 4 模型中，此限制適用於完整的思考字符，不適用於摘要輸出。較大的預算可以透過對複雜問題進行更徹底的分析來改善回應品質，但 Claude 可能不會使用分配的整個預算，尤其是在 32K 以上的範圍。

`budget_tokens` 的值必須設定為小於 `max_tokens` 的值。不過，使用[交錯思考 (Beta 版)](#claude-messages-extended-thinking-tool-use-interleaved) 搭配工具時，您可以超過此限制，因為字符限制會成為整個內容視窗 (20 萬個字符)。

### 摘要思考
<a name="claude-messages-use-extended-thinking-summarized"></a>

啟用延伸思考後，Claude 4 模型的訊息 API 會傳回 Claude 完整思考程序的摘要。摘要思考提供延伸思考的完整智慧優勢，同時能夠防止誤用。

以下是摘要思考的一些重要考量：
+ 您需要為原始請求所產生的完整思考字符 (而不是摘要字符) 付費。
+ 計費輸出字符計數與您在回應中看到的字符計數不相符。
+ 提供給摘要器模型的提示可能會有所變更。
+ 思考輸出的前幾行更為詳細，提供詳細的推理，對於提示工程目的特別有用。

**注意**  
Claude 3.7 Sonnet 仍會傳回完整的思考輸出。

### 串流思考
<a name="claude-messages-use-extended-thinking-streaming"></a>

您可以使用伺服器傳送事件 (SSE) 串流延伸思考回應。啟用串流以進行延伸思考時，您會透過 `thinking_delta` 事件接收思考內容。串流事件不保證會以固定速率傳回。串流事件之間可能會有延遲。如需透過訊息 API 進行串流的詳細資訊，請參閱[串流訊息](https://docs.anthropic.com/en/docs/build-with-claude/streaming)。

以下是如何使用 **InvokeModelWithResponseStream** 以思考方式處理串流：

```
{
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 10000,
    "thinking": {
        "type": "enabled",
        "budget_tokens": 4000
    },
    "messages": [
        {
            "role": "user",
            "content": "What is 27 * 453?"
        }
    ]
}
```

回應：

```
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-3-7-sonnet-20250219", "stop_reason": null, "stop_sequence": null}}

event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": ""}}

event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "Let me solve this step by step:\n\n1. First break down 27 * 453"}}

event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n2. 453 = 400 + 50 + 3"}}

// Additional thinking deltas...

event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "signature_delta", "signature": "EqQBCgIYAhIM1gbcDa9GJwZA2b3hGgxBdjrkzLoky3dl1pkiMOYds..."}}

event: content_block_stop
data: {"type": "content_block_stop", "index": 0}

event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "text", "text": ""}}

event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "text_delta", "text": "27 * 453 = 12,231"}}

// Additional text deltas...

event: content_block_stop
data: {"type": "content_block_stop", "index": 1}

event: message_delta
data: {"type": "message_delta", "delta": {"stop_reason": "end_turn", "stop_sequence": null}}

event: message_stop
data: {"type": "message_stop"}
```

**關於具有思考的串流行為**  
在啟用思考的情況下使用串流時，您可能會注意到文字有時會以較大的區塊傳送，有時則會交替以較小的區塊逐字符傳送。這是預期的行為，特別是用於思考內容。串流系統需要批次處理內容以獲得最佳效能，這可能會導致此交付模式。

## 工具使用的延伸思考
<a name="claude-messages-extended-thinking-tool-use"></a>

延伸的思考可以與 [工具使用](model-parameters-anthropic-claude-messages-tool-use.md) 一起使用，允許 Claude 透過工具選擇和結果處理來進行推理。將延伸思考與工具使用搭配使用時，請注意下列限制：
+ **工具選擇限制**：工具搭配只支援 `tool_choice: auto`（預設） 或 的思維使用`tool_choice: none`。它不支援強制工具使用 (`any` 或指定特定工具）。
+ **保留思考區塊**：工具使用期間，您必須將最後一個助理訊息的思考區塊傳回 API。將完整的未修改區塊回傳至 API，以維持推理持續性。

以下是內容視窗管理如何與工具搭配使用：

```
{
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 10000,
    "thinking": {
        "type": "enabled",
        "budget_tokens": 4000
    },
  "tools": [
  {
    "name": "get_weather",
    "description": "Get current weather for a location",
    "input_schema": {
      "type": "object",
      "properties": {
        "location": {
          "type": "string"
        }
      },
      "required": [
        "location"
      ]
    }
  }
],
    "messages": [
        {
            "role": "user",
            "content": "What's the weather in Paris?"
        }
    ]
}
```

第一個回應如下：

```
{
    "content": [
        {
            "type": "thinking",
            "thinking": "The user wants to know the current weather in Paris. I have access to a function `get_weather`...",
            "signature": "BDaL4VrbR2Oj0hO4XpJxT28J5TILnCrrUXoKiiNBZW9P+nr8XSj1zuZzAl4egiCCpQNvfyUuFFJP5CncdYZEQPPmLxYsNrcs...."
        },
        {
            "type": "text",
            "text": "I can help you get the current weather information for Paris. Let me check that for you"
        },
        {
            "type": "tool_use",
            "id": "toolu_01CswdEQBMshySk6Y9DFKrfq",
            "name": "get_weather",
            "input": {
                "location": "Paris"
            }
        }
    ]
}
```

繼續與工具使用的對話會產生另一個回應。請注意，`thinking_block` 和 `tool_use_block` 都會傳入。如果未傳入，則會發生錯誤。

```
{
  "anthropic_version": "bedrock-2023-05-31",
  "max_tokens": 10000,
  "thinking": {
    "type": "enabled",
    "budget_tokens": 4000
  },
  "tools": [
    {
      "name": "get_weather",
      "description": "Get current weather for a location",
      "input_schema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string"
          }
        },
        "required": [
          "location"
        ]
      }
    }
  ],
      "messages": [
        {
          "role": "user",
          "content": "What's the weather in Paris?"
        },
        {
          "role": "assistant",
          "content": [
            {
              "type": "thinking",
              "thinking": "The user wants to know the current weather in Paris. I have access to a function `get_weather`…",
              "signature": "BDaL4VrbR2Oj0hO4XpJxT28J5TILnCrrUXoKiiNBZW9P+nr8XSj1zuZzAl4egiCCpQNvfyUuFFJP5CncdYZEQPPmLxY",
            },
            {
              "type": "tool_use",
              "id": "toolu_01CswdEQBMshySk6Y9DFKrfq",
              "name": "get_weather",
              "input": {
                "location": "Paris"
              }
            }
          ]
        },
        {
          "role": "user",
          "content": [
            {
              "type": "tool_result",
              "tool_use_id": "toolu_01CswdEQBMshySk6Y9DFKrfq",
              "content": "Current temperature: 88°F"
            }
          ]
        }
      ]
    }
```

API 回應現只會包含文字

```
{
  "content": [
    {
      "type": "text",
      "text": "Currently in Paris, the temperature is 88°F (31°C)"
    }
  ]
}
```

### 保留思考區塊
<a name="claude-messages-extended-thinking-tool-use-thinking-blocks"></a>

在工具使用期間，您必須將思考區塊傳回 API，而且您必須將完整的未修改區塊回傳至 API。這對於維護模型的推理流程和對話完整性至關重要。

**提示**  
雖然您可以省略先前 `assistant` 角色輪換中的 `thinking` 區塊，但我們建議一律將所有思考區塊傳回給 API，以進行任何多回合對話。API 會執行下列動作：  
自動篩選提供的思考區塊
使用保留模型推理所需的相關思考區塊
僅針對向 Claude 顯示的區塊輸入的字符進行計費

當 Claude 調用工具時，其會暫停其回應的建構，以等待外部資訊。傳回工具結果時，Claude 將繼續建置該現有回應。這需要在工具使用期間保留思考區塊，原因如下：
+ **推理持續性**：思考區塊會擷取導致工具請求的 Claude 逐步推理。當您發佈工具結果 (包括原始思考) 時，可確保 Claude 可以從停止的位置繼續推理。
+ **內容維護**：雖然工具結果在 API 結構中顯示為使用者訊息，但其是持續推理流程的一部分。保留思考區塊可跨多個 API 呼叫維持此概念流程。

**重要**  
提供思考區塊時，整個連續思考區塊序列必須符合模型在原始請求期間產生的輸出；您無法重新排列或修改這些區塊的序列。

### 交錯思考 (Beta 版)
<a name="claude-messages-extended-thinking-tool-use-interleaved"></a>

**警告**  
交錯思維是以「Beta Service」的形式提供給您，如 AWS 服務條款所定義。它受您與 AWS 和 AWS 服務條款以及適用模型 EULA 的協議約束。

Claude 4 模型支援交錯思考，這項功能可讓 Claude 在工具呼叫之間進行思考，並在接收工具結果後執行更複雜的推理。這允許更複雜的代理互動，其中 Claude 可以執行下列動作：
+ 在決定接下來要做什麼之前，思考工具呼叫的結果
+ 在之間使用推理步驟鏈結多個工具呼叫
+ 根據中繼結果制定更細微的決策

若要啟用交錯思考，請將 Beta 版標頭 `interleaved-thinking-2025-05-14` 新增至 API 請求。

**注意**  
使用交錯思考時，`budget_tokens` 可能超過 `max_tokens` 參數，因為其代表單一助理回合內所有思考區塊的總預算。

## 思維區塊清除 (Beta 版）
<a name="claude-messages-thinking-block-clearing"></a>

**警告**  
思維區塊清除是以「Beta Service」的形式提供，如 AWS 服務條款所定義。

**注意**  
Claude Sonnet 4/4.5、Claude Haiku 4.5 和 Claude Opus 4/4.1/4.5 目前支援此功能。

思維區塊清除是 Anthropic Claude 模型功能 （測試版）。透過此功能，Claude 可以自動清除先前回合中較舊的思維區塊。若要使用思維區塊清除，您需要將 `context-management-2025-06-27`新增至 anthropic\_beta 請求參數上的 Beta 標頭清單。您也需要指定 的使用`clear_thinking_20251015`，並從下列組態選項中選擇。

這些是 `clear_thinking_20251015` 內容管理策略的可用控制項。全部皆為選用或具有預設值：


| **組態選項** | **Description** | 
| --- | --- | 
| `keep`<br />預設：1 次思考 | 定義最近有多少助理輪換要保留的思維區塊。`{"type": "thinking_turns", "value": N}` 使用 N 必須 > 0 以保持最後 N 圈，或`{"type": "all"}`保留所有思維區塊。 | 

------
#### [ Request ]

```
{
      "anthropic_version": "bedrock-2023-05-31",
      "max_tokens": 10000,
      "anthropic_beta": [
        "context-management-2025-06-27"
      ],
      "thinking": {
        "type": "enabled",
        "budget_tokens": 4000
      },
      "tools": [
        {
          "name": "get_weather",
          "description": "Get current weather for a location",
          "input_schema": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string"
              }
            },
            "required": [
              "location"
            ]
          }
        }
      ],
      "messages": [
        {
          "role": "user",
          "content": "What's the weather in Paris?"
        },
        {
          "role": "assistant",
          "content": [
            {
              "type": "thinking",
              "thinking": "The user is asking for the weather in Paris. I have access to a get_weather function that takes a location as a parameter. I have all the information I need to make this call - the location is \"Paris\".\n\nLet me call the get_weather function with \"Paris\" as the location.",
              "signature": "ErgDCkgIChABGAIqQC/Ccv8GC+5VfcMEiq78XmpU2Ef2cT+96pHKMedKcRNuPz1x0kFlo5HBpW0r1NcQFVQUPuj6PDmP7jdHY7GsrUwSDKNBMogjaM7wYkwfPhoMswjlmfF09JLjZfFlIjB03NkghGOxLbr3VCQHIY0lMaV9UBvt7ZwTpJKzlz+mulBysfvAmDfcnvdJ/6CZre4qnQJsTZaiXdEgASwPIc5jOExBguerrtYSWVC/oPjSi7KZM8PfhP/SPXupyLi8hwYxeqomqkeG7AQhD+3487ecerZJcpJSOSsf0I1OaMpmQEE/b7ehnvTV/A4nLhxIjP4msyIBW+dVwHNFRFlpJLBHUJvN99b4run6YmqBSf4y9TyNMfOr+FtfxedGE0HfJMBd4FHXmUFyW5y91jAHMWqwNxDgacaKkFCAMaqce5rm0ShOxXn1uwDUAS3jeRP26Pynihq8fw5DQwlqOpo7vvXtqb5jjiCmqfOe6un5xeIdhhbzWddhEk1Vmtg7I817pM4MZjVaeQN02drPs8QgDxihnP6ZooGhd6FCBP2X3Ymdlj5zMlbVHxmSkA4wcNtg4IAYAQ=="
            },
            {
              "type": "tool_use",
              "id": "toolu_bdrk_01U7emCvL5v5z5GT7PDr2vzc",
              "name": "get_weather",
              "input": {
                "location": "Paris"
              }
            }
          ]
        },
        {
          "role": "user",
          "content": [
            {
              "type": "tool_result",
              "tool_use_id": "toolu_bdrk_01U7emCvL5v5z5GT7PDr2vzc",
              "content": "Current temperature: 88°F"
            }
          ]
        }
      ],
      "context_management": {
        "edits": [
          {
            "type": "clear_thinking_20251015",
            "keep": {
              "type": "thinking_turns",
              "value": 1
            }
          }
        ]
      }
    }
```

------
#### [ Response ]

```
{
      "model": "claude-haiku-4-5-20251001",
      "id": "msg_bdrk_01KyTbyFbdG2kzPwWMJY1kum",
      "type": "message",
      "role": "assistant",
      "content": [
        {
          "type": "text",
          "text": "The current weather in Paris is **88°F** (approximately 31°C). It's quite warm! If you need more detailed information like humidity, wind conditions, or a forecast, please let me know."
        }
      ],
      "stop_reason": "end_turn",
      "stop_sequence": null,
      "usage": {
        "input_tokens": 736,
        "cache_creation_input_tokens": 0,
        "cache_read_input_tokens": 0,
        "cache_creation": {
          "ephemeral_5m_input_tokens": 0,
          "ephemeral_1h_input_tokens": 0
        },
        "output_tokens": 47
      },
      "context_management": {
        "applied_edits": [...]
      }
    }
```

------

## 具有提示快取的延伸思考
<a name="claude-messages-extended-thinking-prompt-caching"></a>

具有思考的[提示快取](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html)有幾個重要的考量：

**思考區塊內容移除**
+ 先前回合中的思考區塊會從內容中移除，這可能會影響快取中斷點。
+ 繼續與工具使用的對話時，系統會快取思考區塊，並在從快取讀取時計為輸入字符。這會產生權衡，其中思考區塊不會以視覺方式使用內容視窗空間，但在快取時仍會計入您的輸入字符用量。
+ 如果思考功能變成停用狀態，如果您在目前工具使用回合中傳遞思考內容，請求將會失敗。在其他內容中，只會忽略傳遞給 API 的思考內容。

**快取失效模式**
+ 變更思考參數 (例如啟用、停用或修改預算分配) 會使訊息快取中斷點失效。
+ [交錯思考 (Beta 版)](#claude-messages-extended-thinking-tool-use-interleaved) 會增強快取失效，因為多個工具呼叫之間可能會發生思考區塊。
+ 儘管思考參數變更或區塊移除，系統提示和工具仍會保持快取狀態。

**注意**  
雖然移除了用於快取和內容計算的思維區塊，但在繼續使用工具進行對話時必須保留它們，尤其是交錯思維。

## 了解思考區塊快取行為
<a name="claude-messages-extended-thinking-caching-behavior"></a>

將延伸思考與工具使用搭配使用時，思考區塊會展現特定快取行為，此行為會影響字符計數。下列序列會示範其運作方式。

1. 只有在您提出內含工具結果的後續請求時，才會發生快取。

1. 提出後續請求時，可以快取先前的對話歷史記錄 (包括思考區塊)。

1. 從快取讀取這些快取的思考區塊時，這些區塊會計入用量指標中的輸入字符。

1. 當包含非工具結果使用者區塊時，會忽略所有先前的思考區塊，並將這些區塊從內容中去掉。

以下是詳細的範例流程：

請求 1：

```
User: "What's the weather in Paris?"
```

回應 1：

```
[thinking_block 1] + [tool_use block 1]
```

請求 2：

```
User: "What's the weather in Paris?",
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True]
```

回應 2：

```
[thinking_block 2] + [text block 2]
```

請求 2 會寫入請求內容 (而非回應) 的快取。快取包含原始使用者訊息、第一個思考區塊、工具使用區塊，以及工具結果。

請求 3：

```
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [thinking_block_2] + [text block 2],
User: [Text response, cache=True]
```

由於包含非工具結果使用者區塊，因此會忽略所有先前的思考區塊。此請求的處理方式與下列請求相同：

請求 3 替代：

```
User: ["What's the weather in Paris?"]
Assistant: [tool_use block 1]
User: [tool_result_1, cache=True]
Assistant: [text block 2]
User: [Text response, cache=True]
```

無論使用一般思考還是交錯思考，此行為都是一致的。

## 具有延伸思考的字符上限和內容視窗大小
<a name="claude-messages-extended-thinking-max-tokens"></a>

在較舊的Claude模型中 （在 之前Claude 3.7 Sonnet)，如果提示字符和 max\_tokens 的總和超過模型的內容視窗，系統會自動調整 max\_tokens 以符合內容限制。這表示您可以設定較大的 max\_tokens 值，系統會視需要以無提示的方式減少該值。使用 Claude 3.7 和 4 模型時，會以嚴格限制的形式強制執行 `max_tokens` (包括啟用思考時的思考預算)。如果提示字符 \+ max\_tokens 超過內容視窗大小，系統現在會傳回驗證錯誤。

### 具有延伸思考的內容視窗
<a name="claude-messages-extended-thinking-max-tokens-calculate"></a>

在計算啟用思考的情況下的內容視窗用量時，需要注意一些考量事項：
+ 先前回合的思考區塊會遭移除，不會計入您的內容視窗。
+ 目前的回合思考會計入該回合 `max_tokens` 的限制。

有效內容視窗的計算方式為：內容視窗 = (目前輸入字符 - 先前的思考字符) \+ (思考字符 \+ 加密思考字符 \+ 文字輸出字符)。

### 使用延伸思考和工具使用來管理字符
<a name="claude-messages-extended-thinking-max-tokens-manage-tool"></a>

將延伸思考與工具使用搭配使用時，必須明確保留思考區塊，並隨工具結果傳回。使用工具進行延伸思考的有效內容視窗計算會變成以下內容：

`context window = (current input tokens + previous thinking tokens + tool use tokens) + (thinking tokens + encrypted thinking tokens + text output tokens)`

### 以延伸思考管理字符
<a name="claude-messages-extended-thinking-max-tokens-manage"></a>

鑑於內容視窗和具有延伸思考 Claude 3.7 和 4 模型的 `max_tokens` 行為，您可能需要執行下列其中一個動作：
+ 更積極地監控和管理字符用量。
+ 在提示長度變更時調整 `max_tokens` 值。
+ 請注意，先前的思考區塊不會累積在內容視窗中。此變更旨在提供更可預測且透明的行為，特別是當字符上限大幅增加時。

## 延伸思考字符成本考量
<a name="claude-messages-extended-thinking-cost"></a>

思考程序會產生下列費用：
+ 思考期間使用的字符 (輸出字符)
+ 在後續請求中包含的最後一個助理回合中的思考區塊 (輸入字符)
+ 標準文字輸出字符

**提示**  
啟用延伸思考時，會自動包含專用的 28 或 29 字符系統提示，以支援此功能。

`budget_tokens` 參數會決定 Claude 允許用於其內部推理程序的字符數量上限。較大的預算可以透過對複雜問題進行更徹底的分析來改善回應品質，但 Claude 可能不會使用分配的整個預算，尤其是在 32K 以上的範圍。

使用交錯思考時，`budget_tokens` 可能超過 `max_tokens` 參數，因為其代表單一助理回合內所有思考區塊的總預算。

使用摘要思考時，請記住下列資訊：
+ **輸入字符**：原始請求中的字符
+ **輸出字符 (已計費)**：內部產生 Claude 的原始思考字符
+ **輸出字符 (可見)**：您在回應中看到的摘要思考字符
+ **免費**：用於產生摘要的字符
+ `summary_status` 欄位可以指出字符限制是否影響摘要
+ 計費的輸出字符計數與回應中可見的字符計數不相符。您需要為完整思考程序 (而不是您看到的摘要) 付費。