載入中

上下文管理

第 10 課6 分鐘
載入中

上下文管理

您發送給 Claude 的每個請求都有一個上下文視窗。一百萬個 token 聽起來很多,但一旦您開始部署真實的代理程式,它消耗的速度會比您想像的快得多。這就是上下文管理發揮作用的地方:它能讓您在不超出視窗限制的情況下,不遺失重要的內容。

什麼算是上下文

上下文是Claude 在某一輪對話中所看到的一切:

  • 系統提示
  • 訊息歷史
  • 工具定義與工具結果
  • 附加的檔案與技能
  • 思考區塊

上下文五個組成部分的示意圖:系統提示、訊息歷史、工具、檔案與技能,以及思考區塊

它是每一次 API 呼叫的輸入。您在輸入時要為它付費,在輸出時也要為它付費。而一旦視窗滿了,請求就會失敗。

所以目標不是把所有東西都塞進去。目標是把正確的東西放進去。

Anthropic 發布了四種模式,用於管理長時間運行代理程式中的上下文。其中三種是一級 API 功能,另一種是設計模式。

管理上下文的四種模式示意圖:即時上下文、壓縮、快取與記憶

模式一:即時上下文

不要一開始就載入所有東西。只載入代理程式現在需要的內容,並讓它在需要時透過工具拉取更多內容。

想像一個合規審查代理程式。它不會把整本建築法規手冊塞進系統提示中——而是在需要特定章節時呼叫 lookup_building_code 工具。這是四種模式中的設計模式:API 本身沒有任何特別之處,只是對於載入什麼內容、何時載入做出有意識的選擇。

模式二:伺服器端壓縮

當對話變得很長時,Anthropic 的伺服器端壓縮會將舊的對話輪次摘要成單一區塊。您可以透過在請求中加入 context_management 鍵,並附帶一個帶有 type 的編輯來選擇啟用:

python
response = client.beta.messages.create(
    betas=["compact-2026-01-12"],
    model="claude-opus-5",
    max_tokens=1024,
    context_management={
        "edits": [
            {"type": "compact_20260112"}
        ]
    },
    messages=messages,
)

當輸入超過觸發閾值時,API 會自動進行摘要。您不需要自己追蹤對話長度。

模式三:提示快取

提示快取讓您可以標記請求中穩定不變的部分——系統提示、工具定義、一份長文件——並以極低的成本在多次呼叫中重複使用它們。

這個數學計算比看起來更重要。如果您的系統提示有 4,000 個 token,而您每小時呼叫 100 次,那麼快取就是「帳單可以接受」與「財務部門打電話來質問」之間的差別。

模式四:記憶工具

有些上下文需要跨會話保留:使用者偏好設定、代理程式的持續筆記、上週做出的決定。建議使用的基本元件是記憶工具。

運作方式如下:

  • Claude 透過工具呼叫讀寫記憶目錄。
  • 您在客戶端實作儲存後端——檔案系統、資料庫、加密儲存,任何您想要的方式都可以。
  • Anthropic 會自動注入一條系統指示,告訴 Claude 在開始工作前先檢查記憶目錄。

在瀏覽器中檢視的記憶目錄,其中有 incidents 和 saas-pricing 資料夾,以及一則來自先前會話的已儲存事件筆記

疊加使用這些模式

在正式環境的應用程式中,您通常會同時疊加使用全部四種模式。合規審查代理程式會快取其系統提示與工具定義,並透過 lookup_building_code 即時拉取建築法規章節。

每種模式處理不同的失敗模式:成本、視窗大小、無狀態性。選擇符合您實際遇到問題的模式。

回顧

  • 上下文是 Claude 在某一輪對話中所看到的一切——而且它既不是免費的,也不是無限的。一旦視窗滿了,請求就會失敗。
  • 即時上下文:載入現在需要的內容,讓工具拉取其餘部分。這是四種模式中的設計模式。
  • 伺服器端壓縮:加入 context_management 鍵,當輸入超過觸發閾值時,API 會自動摘要舊的對話輪次。
  • 提示快取:標記請求中穩定不變的部分,並以極低的成本在多次呼叫中重複使用它們。
  • 記憶工具:Claude 透過工具呼叫讀寫記憶目錄;您擁有儲存後端,因此上下文可以跨會話保留。
  • 四種模式,一個目標。您可以手動串接它們,或使用 Claude 管理的代理程式,這些代理程式預設就內建了快取與壓縮功能。