- 上下文效率: 工具定義可能會消耗上下文窗口的大部分(50 個工具可能使用 10-20K 個令牌),留下較少的空間用於實際工作。
- 工具選擇準確性: 同時加載超過 30-50 個工具時,工具選擇準確性會下降。
工具搜尋的工作原理
當工具搜尋處於活動狀態時,工具定義會從上下文窗口中隱藏。代理會收到可用工具的摘要,並在任務需要尚未加載的功能時搜尋相關工具。最相關的 3-5 個工具會被加載到上下文中,在後續輪次中保持可用。如果對話足夠長,以至於 SDK 壓縮早期消息以釋放空間,之前發現的工具可能會被移除,代理會根據需要再次搜尋。 工具搜尋在 Claude 首次發現工具時增加一個額外的往返(搜尋步驟),但對於大型工具集,這會被每個輪次上下文較小所抵消。對於少於約 10 個工具的情況,預先加載所有工具通常更快。 有關底層 API 機制的詳細信息,請參閱 API 中的工具搜尋。工具搜尋需要 Claude Sonnet 4 或更高版本,或 Claude Opus 4 或更高版本。Haiku 模型不支援工具搜尋。
配置工具搜尋
工具搜尋預設為開啟。在 Vertex AI 上預設為關閉,其中支援 Claude Sonnet 4.5 及更高版本以及 Claude Opus 4.5 及更高版本。當ANTHROPIC_BASE_URL 指向非第一方主機時,它也會被禁用,因為大多數代理不轉發 tool_reference 塊。您可以使用 ENABLE_TOOL_SEARCH 環境變數覆蓋任一預設值:
| 值 | 行為 |
|---|---|
| (未設置) | 工具搜尋已開啟。工具定義被延遲並按需發現。在 Vertex AI 或非第一方 ANTHROPIC_BASE_URL 上回退到預先加載。 |
true | 工具搜尋始終開啟。SDK 即使在 Vertex AI 和通過代理時也會發送 beta 標頭。在 Sonnet 4.5 或 Opus 4.5 之前的 Vertex AI 模型上,或在不支援 tool_reference 塊的代理上,請求會失敗。 |
auto | 檢查所有工具定義的組合令牌計數與模型的上下文窗口。如果超過 10%,工具搜尋會啟動。如果低於 10%,所有工具會正常加載到上下文中。 |
auto:N | 與 auto 相同,但具有自訂百分比。auto:5 在工具定義超過上下文窗口的 5% 時啟動。較低的值會更早啟動。 |
false | 工具搜尋已關閉。所有工具定義在每個輪次都被加載到上下文中。 |
auto 時,閾值基於所有伺服器上所有工具定義的組合大小。
在 query() 上的 env 選項中設置該值。此示例連接到公開許多工具的遠端 MCP 伺服器,使用萬用字元預先批准所有工具,並使用 auto:5 以便在工具定義超過上下文窗口的 5% 時啟動工具搜尋:
ENABLE_TOOL_SEARCH 設置為 "false" 會禁用工具搜尋,並在每個輪次將所有工具定義加載到上下文中。這會移除搜尋往返,當工具集較小(少於約 10 個工具)且定義舒適地適應上下文窗口時,這可能會更快。
優化工具發現
搜尋機制將查詢與工具名稱和描述進行匹配。search_slack_messages 之類的名稱比 query_slack 適用於更廣泛的請求。具有特定關鍵字的描述(「按關鍵字、頻道或日期範圍搜尋 Slack 消息」)比通用描述(「查詢 Slack」)匹配更多查詢。
您也可以添加一個系統提示部分,列出可用的工具類別。這為代理提供了有關可搜尋的工具類型的上下文:
限制
- 最大工具數: 您的目錄中有 10,000 個工具
- 搜尋結果: 每次搜尋返回 3-5 個最相關的工具
- 模型支援: Claude Sonnet 4 及更高版本、Claude Opus 4 及更高版本(不支援 Haiku)
相關文檔
- API 中的工具搜尋:工具搜尋的完整 API 文檔,包括自訂實現
- 連接 MCP 伺服器:通過 MCP 伺服器連接到外部工具
- 自訂工具:使用 SDK MCP 伺服器構建您自己的工具
- TypeScript SDK 參考:完整 API 參考
- Python SDK 參考:完整 API 參考