Strikte Tool-Nutzung
Erzwinge die Einhaltung von JSON Schema bei Claudes Tool-Eingaben mit grammatikbeschränktem Sampling.
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 häufige Anwendungsfälle. Die unterstützte Teilmenge von JSON Schema findest du unter JSON-Schema-Einschränkungen. Hinweise zu nicht-strikten Schemas findest du unter Tools definieren.
„Strict tool use“ (strikte Tool-Nutzung) validiert Tool-Parameter und stellt sicher, dass Claude deine Funktionen mit korrekt typisierten Argumenten aufruft. Verwende strikte Tool-Nutzung, wenn du Folgendes benötigst:
- Tool-Parameter validieren
- Agentische Workflows erstellen
- Typsichere Funktionsaufrufe sicherstellen
- Komplexe Tools mit verschachtelten Eigenschaften handhaben
Warum strikte Tool-Nutzung für Agenten wichtig ist
Der Aufbau zuverlässiger agentischer Systeme erfordert garantierte Schemakonformität. Ohne strikten Modus könnte Claude inkompatible Typen zurückgeben ("2" statt 2) oder erforderliche Felder weglassen, was deine Funktionen bricht und Laufzeitfehler verursacht.
Strikte Tool-Nutzung garantiert typsichere Parameter:
- Funktionen erhalten jedes Mal korrekt typisierte Argumente
- Keine Notwendigkeit, Tool-Aufrufe zu validieren und zu wiederholen
- Produktionsreife Agenten, die im großen Maßstab konsistent funktionieren
Angenommen, ein Buchungssystem benötigt beispielsweise passengers: int. Ohne strikten Modus könnte Claude passengers: "two" oder passengers: "2" liefern. Mit strict: true enthält die Antwort immer passengers: 2.
Schnellstart
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5",
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:
- Tool-
inputfolgt strikt deminput_schema - Tool-
nameist immer gültig (aus den bereitgestellten Tools oder Server-Tools)
So funktioniert es
Definiere dein Tool-Schema
Erstelle ein JSON-Schema für das
input_schemadeines Tools. Das Schema verwendet das Standardformat von JSON Schema mit einigen Einschränkungen (siehe JSON-Schema-Einschränkungen).Füge strict: true hinzu
Setze
"strict": trueals Eigenschaft auf oberster Ebene in deiner Tool-Definition, nebenname,descriptionundinput_schema.Verarbeite Tool-Aufrufe
Wenn Claude das Tool verwendet, folgt das Feld
inputimtool_use-Block strikt deineminput_schema, und dernameist immer gültig.
Die Toolset-Einträge für Computer Use und Browser Use (computer_toolset_20260801 und browser_toolset_20260801) akzeptieren strict: true nicht; eine Anfrage, die es bei einem der beiden Einträge setzt, wird abgelehnt.
Häufige Anwendungsfälle
Stelle sicher, dass Tool-Parameter exakt deinem Schema entsprechen:
client = Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Search for flights to Tokyo departing June 1, 2026",
}
],
tools=[
{
"name": "search_flights",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"destination": {"type": "string"},
"departure_date": {"type": "string", "format": "date"},
"passengers": {
"type": "integer",
"enum": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
},
},
"required": ["destination", "departure_date"],
"additionalProperties": False,
},
}
],
)
print(response)Erstelle zuverlässige mehrstufige Agenten mit garantierten Tool-Parametern:
client = Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Help me plan a trip from New York to Paris for 2 people, departing June 1, 2026",
}
],
tools=[
{
"name": "search_flights",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"origin": {"type": "string"},
"destination": {"type": "string"},
"departure_date": {"type": "string", "format": "date"},
"travelers": {"type": "integer", "enum": [1, 2, 3, 4, 5, 6]},
},
"required": ["origin", "destination", "departure_date"],
"additionalProperties": False,
},
},
{
"name": "search_hotels",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"city": {"type": "string"},
"check_in": {"type": "string", "format": "date"},
"guests": {"type": "integer", "enum": [1, 2, 3, 4]},
},
"required": ["city", "check_in"],
"additionalProperties": False,
},
},
],
)
print(response)Datenaufbewahrung
Strikte Tool-Nutzung kompiliert input_schema-Definitionen von Tools zu Grammatiken und verwendet dabei dieselbe Pipeline wie strukturierte Ausgaben. Tool-Schemas werden vorübergehend für bis zu 24 Stunden seit der letzten Verwendung zwischengespeichert. Prompts und Antworten werden nicht über die API-Antwort hinaus aufbewahrt.
Strikte Tool-Nutzung ist HIPAA-fähig, aber „protected health information“ (geschützte Gesundheitsinformationen), oder 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-Werte, const-Werte oder reguläre Ausdrücke in pattern ein. PHI sollten nur im Nachrichteninhalt (Prompts und Antworten) erscheinen, wo sie durch HIPAA-Schutzmaßnahmen geschützt sind.
Informationen zur ZDR- und HIPAA-Fähigkeit aller Funktionen findest du unter API und Datenaufbewahrung.
Nächste Schritte
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.
Lege Tool-Schemas fest, schreibe wirksame Beschreibungen und steuere, wann Claude deine Tools aufruft.
Was this page helpful?