Claude Platform Docs
Messages工具基礎架構

管理工具上下文

在工具搜尋、程式化工具呼叫、提示快取與上下文編輯之間做出選擇,以管理上下文膨脹問題。

工具定義與累積的 tool_result 區塊會消耗您的「context window」(上下文視窗)。擁有許多工具或經歷許多輪次的長時間執行代理,可能會在任務完成之前就耗盡可用的上下文。有四種方法可在流程的不同環節解決此問題。

四種方法

每種方法針對不同的上下文壓力來源。請選擇與您的 token 消耗去向相符的方法。

方法減少的內容適用時機了解更多
工具搜尋預先載入的工具定義大型工具集(20 個以上工具),且大多數工具並非每一輪都需要工具搜尋工具
程式化工具呼叫tool_result 往返次數可作為單一腳本執行的工具呼叫鏈程式化工具呼叫
提示快取重複工具定義的 token 成本跨多個請求保持穩定的工具集搭配提示快取的工具使用
上下文編輯歷史記錄中的舊 tool_result 區塊早期結果已不再相關的長對話上下文編輯

「Tool search」(工具搜尋)會將工具定義保留在上下文視窗之外,直到 Claude 要求取用為止。您無需預先傳送 50 個工具結構描述,而是只傳送單一的 tool_search 工具,讓 Claude 按需探索其餘工具。這是以少量的「latency」(延遲)(多一輪查詢工具)換取基準上下文使用量的大幅降低。

程式化工具呼叫

「Programmatic tool calling」(程式化工具呼叫)會將一連串工具呼叫摺疊為單一程式碼區塊,由 Claude 撰寫並在 Anthropic 的程式碼執行沙箱中執行。Claude 不需進行五次 tool_usetool_result 的往返,而是輸出一個腳本,在沙箱內呼叫全部五個函式。中間結果永遠不會進入對話歷史記錄。

提示快取

「Prompt caching」(提示快取)不會減少上下文中的 token 數量,但會降低您在後續請求中為這些 token 支付的費用。如果您的工具定義是穩定的,只需快取一次,即可在數千個請求中重複使用已快取的前綴。當工具集龐大但固定時,這是正確的選擇。

上下文編輯

「Context editing」(上下文編輯)會在舊的 tool_result 區塊完成其用途後,將其從對話歷史記錄中移除。一個長時間的代理迴圈可能會產生數百個中間結果,這些結果在當時很有用,但現在已成為累贅。上下文編輯讓您無需重新開始對話即可將其修剪掉。

組合使用多種方法

這些方法可以組合使用。一個長時間執行的代理可能會使用工具搜尋來保持工具集精簡、使用提示快取來分攤其餘定義的成本,並使用上下文編輯在對話增長時修剪過時的結果。每種方法解決問題的不同部分,因此同時使用它們並不衝突。

對於高流量代理,一個合理的起點是:

  1. 從第一天起就對您的工具定義啟用提示快取。快取寫入的費用比基本輸入定價高出 25%,在第二個命中快取的請求時即可回本。
  2. 當您的工具集增長到超過約 20 個工具,或基準上下文使用量變得明顯時,加入工具搜尋。
  3. 當個別對話開始長到早期結果變得不相關時,加入上下文編輯。
  4. 如果您注意到有重複的小型工具呼叫鏈可以作為單一批次執行,請考慮使用程式化工具呼叫。

後續步驟

按需載入工具定義,而非預先載入。

將工具呼叫鏈摺疊為單一可執行腳本。

跨請求快取工具定義以降低 token 成本。

從長時間執行的對話中修剪過時的工具結果。

Was this page helpful?