在工具定义上设置 strict: true 可以通过将模型的令牌采样约束为符合模式的输出(一种称为"grammar-constrained sampling"(语法约束采样)的技术),保证 Claude 的工具输入与您的 JSON Schema 匹配。本页介绍了为什么严格模式对代理很重要、如何启用它以及常见用例。有关支持的 JSON Schema 子集,请参阅 JSON Schema 限制。有关非严格模式的指导,请参阅定义工具。
严格工具使用会验证工具参数,确保 Claude 使用正确类型的参数调用您的函数。在以下情况下使用严格工具使用:
构建可靠的代理系统需要有保证的模式一致性。如果没有严格模式,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 始终有效(来自提供的工具或服务器工具)定义您的工具模式
为您工具的 input_schema 创建一个 JSON 模式。该模式使用标准 JSON Schema 格式,但有一些限制(请参阅 JSON Schema 限制)。
添加 strict: true
在您的工具定义中将 "strict": true 设置为顶级属性,与 name、description 和 input_schema 并列。
处理工具调用
当 Claude 使用该工具时,tool_use 块中的 input 字段严格遵循您的 input_schema,并且 name 始终有效。
严格工具使用会使用与结构化输出相同的管道将工具 input_schema 定义编译为语法。工具模式自上次使用后会被临时缓存最多 24 小时。提示和响应在 API 响应之后不会被保留。
严格工具使用符合 HIPAA 资格,但工具模式定义中不得包含 PHI。API 将编译后的模式与消息内容分开缓存,这些缓存的模式不会获得与提示和响应相同的 PHI 保护。请勿在 input_schema 属性名称、enum 值、const 值或 pattern 正则表达式中包含 PHI。PHI 只应出现在消息内容(提示和响应)中,在那里它受到 HIPAA 保护措施的保护。
有关所有功能的 ZDR 和 HIPAA 资格,请参阅 API 和数据保留。
从特定 URL 获取和读取内容,将实时网页内容引入 Claude 的上下文。
跨轮次缓存工具定义以降低成本和延迟。
使用相同的语法约束采样获取经过验证的 JSON 响应。
指定工具模式、编写有效的描述,并控制 Claude 何时调用您的工具。
Was this page helpful?