Das Setzen von strict: true in einer Tool-Definition garantiert, dass Claudes Tool-Eingaben deinem JSON-Schema entsprechen, indem das Token-Sampling des Modells auf schemakonforme Ausgaben beschränkt wird (eine Technik namens „grammar-constrained sampling" (grammatikbeschränktes Sampling)). Diese Seite behandelt, warum der strikte Modus für Agenten wichtig ist, wie du ihn aktivierst und gängige Anwendungsfälle. Für die unterstützte JSON-Schema-Teilmenge siehe JSON-Schema-Einschränkungen. Für Hinweise zu nicht-strikten Schemas siehe Tools definieren.
Strikte Tool-Nutzung validiert Tool-Parameter und stellt sicher, dass Claude deine Funktionen mit korrekt typisierten Argumenten aufruft. Verwende strikte Tool-Nutzung, wenn du:
Der Aufbau zuverlässiger agentischer Systeme erfordert garantierte Schema-Konformität. Ohne strikten Modus könnte Claude inkompatible Typen zurückgeben ("2" statt 2) oder erforderliche Felder auslassen, was deine Funktionen unterbricht und Laufzeitfehler verursacht.
Strikte Tool-Nutzung garantiert typsichere Parameter:
Angenommen, ein Buchungssystem benötigt passengers: int. Ohne strikten Modus könnte Claude passengers: "two" oder passengers: "2" liefern. Mit strict: true enthält die Antwort immer 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)Antwortformat: Tool-Use-Blöcke mit validierten Eingaben in response.content[x].input
{
"type": "tool_use",
"name": "get_weather",
"input": {
"location": "San Francisco, CA"
}
}Garantien:
input folgt strikt dem input_schemaname ist immer gültig (aus den bereitgestellten Tools oder Server-Tools)Definiere dein Tool-Schema
Erstelle ein JSON-Schema für das input_schema deines Tools. Das Schema verwendet das Standard-JSON-Schema-Format mit einigen Einschränkungen (siehe JSON-Schema-Einschränkungen).
Füge strict: true hinzu
Setze "strict": true als Top-Level-Eigenschaft in deiner Tool-Definition, neben name, description und input_schema.
Verarbeite Tool-Aufrufe
Wenn Claude das Tool verwendet, folgt das input-Feld im tool_use-Block strikt deinem input_schema, und der name ist immer gültig.
Strikte Tool-Nutzung kompiliert Tool-input_schema-Definitionen in Grammatiken und verwendet dabei dieselbe Pipeline wie strukturierte Ausgaben. Tool-Schemas werden temporär für bis zu 24 Stunden seit der letzten Verwendung zwischengespeichert. Prompts und Antworten werden über die API-Antwort hinaus nicht gespeichert.
Strikte Tool-Nutzung ist HIPAA-konform, aber PHI dürfen nicht in Tool-Schema-Definitionen enthalten sein. Die API speichert kompilierte Schemas getrennt vom Nachrichteninhalt zwischen, und diese zwischengespeicherten Schemas erhalten nicht denselben PHI-Schutz wie Prompts und Antworten. Füge keine PHI in input_schema-Eigenschaftsnamen, enum-Werten, const-Werten oder pattern-Regulären-Ausdrücken ein. PHI sollten nur im Nachrichteninhalt (Prompts und Antworten) erscheinen, wo sie unter HIPAA-Schutzmaßnahmen geschützt sind.
Für ZDR- und HIPAA-Eignung über alle Funktionen hinweg siehe API und Datenspeicherung.
Rufe Inhalte von bestimmten URLs ab und lies sie, um Live-Webinhalte in Claudes Kontext zu bringen.
Speichere Tool-Definitionen über mehrere Turns hinweg zwischen, um Kosten und Latenz zu reduzieren.
Erhalte validierte JSON-Antworten mit demselben grammatikbeschränkten Sampling.
Spezifiziere Tool-Schemas, schreibe effektive Beschreibungen und steuere, wann Claude deine Tools aufruft.
Was this page helpful?