理解上下文視窗

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

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

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

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

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

當使用延伸思考時,所有輸入和輸出token,包括用於思考的token,都計入上下文視窗限制,但在多輪對話情況下有一些細微差別。

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

然而,先前的思考區塊會被Anthropic API自動從上下文視窗計算中剔除,不作為模型在後續輪次中「看到」的對話歷史的一部分,為實際對話內容保留token容量。

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

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

這種架構在token使用上是高效的,允許進行廣泛的推理而不浪費token,因為思考區塊在長度上可能相當可觀。

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

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

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

1

第一輪架構

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

工具結果處理(第二輪)

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

第三步

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

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

Claude Sonnet 3.7不支持交錯思考,因此在沒有中間非tool_result用戶輪次的情況下,無法交錯延伸思考和工具調用。

有關使用工具與延伸思考的更多信息,請參閱我們的延伸思考指南

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

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

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

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

下一步