理解上下文視窗

「上下文視窗」是指語言模型在生成新文本時可以回顧和參考的全部文本量,加上它生成的新文本。這與語言模型訓練時使用的大型資料語料庫不同,而是代表模型的「工作記憶體」。較大的上下文視窗允許模型理解和回應更複雜和冗長的提示,而較小的上下文視窗可能會限制模型處理較長提示或在延長對話中保持連貫性的能力。

下圖說明了 API 請求的標準上下文視窗行為1

1對於聊天介面,例如 claude.ai,上下文視窗也可以設置為滾動的「先進先出」系統。

  • 漸進式代幣累積: 隨著對話在回合中推進,每個使用者訊息和助理回應都會在上下文視窗內累積。先前的回合會完全保留。
  • 線性增長模式: 上下文使用量隨著每個回合線性增長,先前的回合完全保留。
  • 200K 代幣容量: 總可用上下文視窗(200,000 個代幣)代表儲存對話歷史和從 Claude 生成新輸出的最大容量。
  • 輸入-輸出流程: 每個回合包含:
    • 輸入階段: 包含所有先前的對話歷史加上當前使用者訊息
    • 輸出階段: 生成成為未來輸入一部分的文本回應

延伸思考的上下文視窗

當使用延伸思考時,所有輸入和輸出代幣,包括用於思考的代幣,都會計入上下文視窗限制,在多回合情況下有一些細微差別。

思考預算代幣是您的 max_tokens 參數的子集,按輸出代幣計費,並計入速率限制。

然而,先前的思考區塊會自動從 Anthropic API 的上下文視窗計算中剝離,不是模型在後續回合中「看到」的對話歷史的一部分,為實際對話內容保留代幣容量。

下圖展示了啟用延伸思考時的專門代幣管理:

  • 剝離延伸思考: 延伸思考區塊(以深灰色顯示)在每個回合的輸出階段生成,但不會作為輸入代幣傳遞到後續回合。您不需要自己剝離思考區塊。如果您將它們傳回,Anthropic API 會自動為您執行此操作。
  • 技術實作細節:
    • 當您將思考區塊作為對話歷史的一部分傳回時,API 會自動排除先前回合的思考區塊。
    • 延伸思考代幣僅在生成期間作為輸出代幣計費一次。
    • 有效的上下文視窗計算變為:context_window = (input_tokens - previous_thinking_tokens) + current_turn_tokens
    • 思考代幣包括 thinking 區塊和 redacted_thinking 區塊。

這種架構具有代幣效率,允許廣泛推理而不浪費代幣,因為思考區塊的長度可能相當可觀。

您可以在我們的延伸思考指南中閱讀更多關於上下文視窗和延伸思考的內容。

延伸思考和工具使用的上下文視窗

下圖說明了結合延伸思考與工具使用時的上下文視窗代幣管理:

1

第一回合架構

  • 輸入組件: 工具配置和使用者訊息
  • 輸出組件: 延伸思考 + 文本回應 + 工具使用請求
  • 代幣計算: 所有輸入和輸出組件都計入上下文視窗,所有輸出組件都按輸出代幣計費。
2

工具結果處理(第二回合)

  • 輸入組件: 第一回合中的每個區塊以及 tool_result。延伸思考區塊必須與相應的工具結果一起返回。這是您必須返回思考區塊的唯一情況。
  • 輸出組件: 工具結果傳回給 Claude 後,Claude 將僅以文本回應(在下一個 user 訊息之前不會有額外的延伸思考)。
  • 代幣計算: 所有輸入和輸出組件都計入上下文視窗,所有輸出組件都按輸出代幣計費。
3

第三步

  • 輸入組件: 所有輸入和前一回合的輸出都會傳遞,除了思考區塊,現在 Claude 已完成整個工具使用週期,可以丟棄該區塊。如果您將其傳回,API 會自動為您剝離思考區塊,或者您可以在此階段自由地自己剝離它。這也是您添加下一個 User 回合的地方。
  • 輸出組件: 由於在工具使用週期之外有新的 User 回合,Claude 將生成新的延伸思考區塊並從那裡繼續。
  • 代幣計算: 先前的思考代幣會自動從上下文視窗計算中剝離。所有其他先前區塊仍計為代幣視窗的一部分,當前 Assistant 回合中的思考區塊計為上下文視窗的一部分。
  • 延伸思考與工具使用的考量:
    • 發布工具結果時,必須包含伴隨該特定工具請求的整個未修改思考區塊(包括簽名/編輯部分)。
    • 延伸思考與工具使用的有效上下文視窗計算變為:context_window = input_tokens + current_turn_tokens
    • 系統使用加密簽名來驗證思考區塊的真實性。在工具使用期間未能保留思考區塊可能會破壞 Claude 的推理連續性。因此,如果您修改思考區塊,API 將返回錯誤。

Claude 4 模型支援交錯思考,這使 Claude 能夠在工具調用之間思考,並在接收工具結果後進行更複雜的推理。

Claude Sonnet 3.7 不支援交錯思考,因此在沒有非 tool_result 使用者回合的情況下,延伸思考和工具調用之間沒有交錯。

有關將工具與延伸思考一起使用的更多資訊,請參閱我們的延伸思考指南

1M 代幣上下文視窗

Claude Sonnet 4 支援 100 萬代幣的上下文視窗。這個擴展的上下文視窗允許您處理更大的文件、維持更長的對話,並使用更廣泛的程式碼庫。

1M 代幣上下文視窗目前對使用層級 4 的組織和具有自訂速率限制的組織處於測試階段。1M 代幣上下文視窗僅適用於 Claude Sonnet 4。

要使用 1M 代幣上下文視窗,請在您的 API 請求中包含 context-1m-2025-08-07 測試標頭

from anthropic import Anthropic

client = Anthropic()

response = client.beta.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Process this large document..."}
    ],
    betas=["context-1m-2025-08-07"]
)

重要考量:

  • 測試狀態:這是一個可能會變更的測試功能。功能和定價可能在未來版本中修改或移除。
  • 使用層級要求:1M 代幣上下文視窗適用於使用層級 4 的組織和具有自訂速率限制的組織。較低層級的組織必須升級到使用層級 4 才能存取此功能。
  • 可用性:1M 代幣上下文視窗目前在 Anthropic API 和 Amazon Bedrock 上可用。Google Vertex AI 的支援將隨後提供。
  • 定價:超過 200K 代幣的請求會自動按高級費率收費(2 倍輸入,1.5 倍輸出定價)。詳情請參閱定價文件
  • 速率限制:長上下文請求有專用的速率限制。詳情請參閱速率限制文件
  • 多模態考量:處理大量圖像或 PDF 時,請注意檔案的代幣使用量可能會有所不同。當將大型提示與大量圖像配對時,您可能會達到請求大小限制

較新 Claude 模型的上下文視窗管理

在較新的 Claude 模型中(從 Claude Sonnet 3.7 開始),如果提示代幣和輸出代幣的總和超過模型的上下文視窗,系統將返回驗證錯誤,而不是靜默截斷上下文。這種變更提供了更可預測的行為,但需要更仔細的代幣管理。

要規劃您的代幣使用並確保您保持在上下文視窗限制內,您可以使用代幣計數 API來估計您的訊息在發送給 Claude 之前將使用多少代幣。

請參閱我們的模型比較表格,了解各模型的上下文視窗大小列表。

下一步