Uso rigoroso degli strumenti
Imponi la conformità allo schema JSON sugli input degli strumenti di Claude con il campionamento vincolato dalla grammatica.
Impostare strict: true su una definizione di strumento garantisce che gli input degli strumenti di Claude corrispondano al tuo schema JSON, vincolando il campionamento dei token del modello a output validi rispetto allo schema (una tecnica chiamata "grammar-constrained sampling", ovvero campionamento vincolato dalla grammatica). Questa pagina spiega perché la modalità strict è importante per gli agenti, come abilitarla e i casi d'uso comuni. Per il sottoinsieme di JSON Schema supportato, consulta Limitazioni di JSON Schema. Per indicazioni sugli schemi non strict, consulta Definire gli strumenti.
Lo "strict tool use" (uso rigoroso degli strumenti) convalida i parametri degli strumenti, garantendo che Claude chiami le tue funzioni con argomenti correttamente tipizzati. Usa l'uso rigoroso degli strumenti quando hai bisogno di:
- Convalidare i parametri degli strumenti
- Costruire flussi di lavoro agentici
- Garantire chiamate di funzione type-safe
- Gestire strumenti complessi con proprietà annidate
Perché l'uso rigoroso degli strumenti è importante per gli agenti
Costruire sistemi agentici affidabili richiede una conformità allo schema garantita. Senza la modalità strict, Claude potrebbe restituire tipi incompatibili ("2" invece di 2) oppure omettere campi obbligatori, rompendo le tue funzioni e causando errori a runtime.
L'uso rigoroso degli strumenti garantisce parametri type-safe:
- Le funzioni ricevono ogni volta argomenti correttamente tipizzati
- Nessuna necessità di convalidare e ritentare le chiamate agli strumenti
- Agenti pronti per la produzione che funzionano in modo coerente su larga scala
Ad esempio, supponi che un sistema di prenotazione richieda passengers: int. Senza la modalità strict, Claude potrebbe fornire passengers: "two" oppure passengers: "2". Con strict: true, la risposta contiene sempre passengers: 2.
Avvio rapido
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-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)Formato della risposta: blocchi di uso degli strumenti con input convalidati in response.content[x].input
{
"type": "tool_use",
"name": "get_weather",
"input": {
"location": "San Francisco, CA"
}
}Garanzie:
- L'
inputdello strumento segue rigorosamente l'input_schema - Il
namedello strumento è sempre valido (tra gli strumenti forniti o gli strumenti server)
Come funziona
Definisci lo schema del tuo strumento
Crea uno schema JSON per l'
input_schemadel tuo strumento. Lo schema usa il formato JSON Schema standard con alcune limitazioni (consulta Limitazioni di JSON Schema).Aggiungi strict: true
Imposta
"strict": truecome proprietà di primo livello nella definizione del tuo strumento, accanto aname,descriptioneinput_schema.Gestisci le chiamate agli strumenti
Quando Claude usa lo strumento, il campo
inputnel bloccotool_usesegue rigorosamente il tuoinput_schema, e ilnameè sempre valido.
Le voci dei toolset computer use e browser use (computer_toolset_20260801 e browser_toolset_20260801) non accettano strict: true; una richiesta che lo imposta su una di queste voci viene rifiutata.
Casi d'uso comuni
Assicurati che i parametri degli strumenti corrispondano esattamente al tuo schema:
client = Anthropic()
response = client.messages.create(
model="claude-opus-5-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)Costruisci agenti multistep affidabili con parametri degli strumenti garantiti:
client = Anthropic()
response = client.messages.create(
model="claude-opus-5-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)Conservazione dei dati
L'uso rigoroso degli strumenti compila le definizioni input_schema degli strumenti in grammatiche usando la stessa pipeline degli output strutturati. Gli schemi degli strumenti vengono temporaneamente memorizzati nella cache per un massimo di 24 ore dall'ultimo utilizzo. I prompt e le risposte non vengono conservati oltre la risposta dell'API.
L'uso rigoroso degli strumenti è idoneo per HIPAA, ma le informazioni sanitarie protette ("protected health information", o PHI) non devono essere incluse nelle definizioni degli schemi degli strumenti. L'API memorizza nella cache gli schemi compilati separatamente dal contenuto dei messaggi, e questi schemi in cache non ricevono le stesse protezioni PHI dei prompt e delle risposte. Non includere PHI nei nomi delle proprietà di input_schema, nei valori enum, nei valori const o nelle espressioni regolari pattern. Le PHI devono comparire solo nel contenuto dei messaggi (prompt e risposte), dove sono protette dalle garanzie HIPAA.
Per l'idoneità ZDR e HIPAA di tutte le funzionalità, consulta API e conservazione dei dati.
Prossimi passi
Recupera e leggi contenuti da URL specifici per portare contenuti web in tempo reale nel contesto di Claude.
Memorizza nella cache le definizioni degli strumenti tra i turni per ridurre costi e latenza.
Ottieni risposte JSON convalidate usando lo stesso campionamento vincolato dalla grammatica.
Specifica gli schemi degli strumenti, scrivi descrizioni efficaci e controlla quando Claude chiama i tuoi strumenti.
Was this page helpful?