ツール定義に 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_schema に厳密に従いますname は常に有効です(提供されたツールまたはサーバーツールから)ツールスキーマを定義する
ツールの input_schema 用のJSONスキーマを作成します。スキーマは標準のJSON Schema形式を使用しますが、いくつかの制限があります(JSON Schemaの制限事項を参照)。
strict: true を追加する
ツール定義のトップレベルプロパティとして、name、description、input_schema と並べて "strict": true を設定します。
ツール呼び出しを処理する
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からコンテンツを取得して読み取り、ライブWebコンテンツをClaudeのコンテキストに取り込みます。
ターン間でツール定義をキャッシュして、コストとレイテンシを削減します。
同じ文法制約サンプリングを使用して、検証済みのJSONレスポンスを取得します。
ツールスキーマを指定し、効果的な説明を記述し、Claudeがツールを呼び出すタイミングを制御します。
Was this page helpful?