在工具定義上設定 strict: true 可保證 Claude 的工具輸入符合您的 JSON Schema,方法是將模型的 token 取樣限制在符合 schema 的輸出範圍內(這種技術稱為「grammar-constrained sampling」(文法約束取樣))。本頁說明為什麼嚴格模式對代理(agent)很重要、如何啟用它,以及常見的使用案例。有關支援的 JSON Schema 子集,請參閱 JSON Schema 限制。有關非嚴格 schema 的指引,請參閱定義工具。
嚴格工具使用會驗證工具參數,確保 Claude 以正確型別的引數呼叫您的函式。在您需要以下功能時,請使用嚴格工具使用:
建構可靠的代理式系統需要有保證的 schema 一致性。如果沒有嚴格模式,Claude 可能會回傳不相容的型別("2" 而不是 2)或省略必要欄位,導致您的函式失效並造成執行階段錯誤。
嚴格工具使用保證型別安全的參數:
例如,假設一個訂位系統需要 passengers: int。如果沒有嚴格模式,Claude 可能會提供 passengers: "two" 或 passengers: "2"。使用 strict: true 時,回應永遠包含 passengers: 2。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
tools=[
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"strict": True, # Enable strict mode
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The unit of temperature, either 'celsius' or 'fahrenheit'",
},
},
"required": ["location"],
"additionalProperties": False,
},
}
],
)
print(response.content)**回應格式:**在 response.content[x].input 中帶有已驗證輸入的工具使用區塊
{
"type": "tool_use",
"name": "get_weather",
"input": {
"location": "San Francisco, CA"
}
}保證:
input 嚴格遵循 input_schemaname 永遠有效(來自提供的工具或伺服器工具)定義您的工具 schema
為您工具的 input_schema 建立 JSON schema。該 schema 使用標準 JSON Schema 格式,但有一些限制(請參閱 JSON Schema 限制)。
加入 strict: true
在您的工具定義中將 "strict": true 設定為頂層屬性,與 name、description 和 input_schema 並列。
處理工具呼叫
當 Claude 使用該工具時,tool_use 區塊中的 input 欄位會嚴格遵循您的 input_schema,且 name 永遠有效。
嚴格工具使用會使用與結構化輸出相同的管線,將工具的 input_schema 定義編譯為文法。工具 schema 會在最後一次使用後暫時快取最多 24 小時。提示和回應不會在 API 回應之後被保留。
嚴格工具使用符合 HIPAA 資格,但工具 schema 定義中不得包含 PHI。API 會將編譯後的 schema 與訊息內容分開快取,而這些快取的 schema 不會獲得與提示和回應相同的 PHI 保護。請勿在 input_schema 的屬性名稱、enum 值、const 值或 pattern 正規表達式中包含 PHI。PHI 只應出現在訊息內容(提示和回應)中,在那裡它會受到 HIPAA 保護措施的保障。
有關所有功能的 ZDR 和 HIPAA 資格,請參閱 API 與資料保留。
從特定 URL 擷取並讀取內容,將即時網頁內容帶入 Claude 的上下文中。
跨回合快取工具定義,以降低成本和延遲。
使用相同的文法約束取樣取得已驗證的 JSON 回應。
指定工具 schema、撰寫有效的描述,並控制 Claude 何時呼叫您的工具。
Was this page helpful?