Utilisation d'outils stricte
Imposez la conformité au JSON Schema des entrées d'outils de Claude grâce à l'échantillonnage contraint par grammaire.
Définir strict: true sur une définition d'outil garantit que les entrées d'outils de Claude correspondent à votre JSON Schema en contraignant l'échantillonnage de tokens du modèle à des sorties valides selon le schéma (une technique appelée « grammar-constrained sampling » (échantillonnage contraint par grammaire)). Cette page explique pourquoi le mode strict est important pour les agents, comment l'activer, ainsi que les cas d'utilisation courants. Pour le sous-ensemble de JSON Schema pris en charge, consultez Limitations de JSON Schema. Pour des conseils sur les schémas non stricts, consultez Définir des outils.
Le « strict tool use » (utilisation d'outils stricte) valide les paramètres des outils, garantissant que Claude appelle vos fonctions avec des arguments correctement typés. Utilisez l'utilisation d'outils stricte lorsque vous devez :
- Valider les paramètres des outils
- Construire des flux de travail agentiques
- Garantir des appels de fonctions à typage sûr
- Gérer des outils complexes avec des propriétés imbriquées
Pourquoi l'utilisation d'outils stricte est importante pour les agents
Construire des systèmes agentiques fiables nécessite une conformité garantie au schéma. Sans le mode strict, Claude pourrait renvoyer des types incompatibles ("2" au lieu de 2) ou omettre des champs obligatoires, ce qui casserait vos fonctions et provoquerait des erreurs d'exécution.
L'utilisation d'outils stricte garantit des paramètres à typage sûr :
- Les fonctions reçoivent des arguments correctement typés à chaque fois
- Aucun besoin de valider et de relancer les appels d'outils
- Des agents prêts pour la production qui fonctionnent de manière cohérente à grande échelle
Par exemple, supposons qu'un système de réservation ait besoin de passengers: int. Sans le mode strict, Claude pourrait fournir passengers: "two" ou passengers: "2". Avec strict: true, la réponse contient toujours passengers: 2.
Démarrage rapide
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)Format de réponse : blocs d'utilisation d'outils avec des entrées validées dans response.content[x].input
{
"type": "tool_use",
"name": "get_weather",
"input": {
"location": "San Francisco, CA"
}
}Garanties :
- L'
inputde l'outil suit strictement l'input_schema - Le
namede l'outil est toujours valide (parmi les outils fournis ou les outils serveur)
Comment cela fonctionne
Définissez le schéma de votre outil
Créez un schéma JSON pour l'
input_schemade votre outil. Le schéma utilise le format JSON Schema standard avec certaines limitations (consultez Limitations de JSON Schema).Ajoutez strict: true
Définissez
"strict": truecomme propriété de premier niveau dans votre définition d'outil, aux côtés dename,descriptionetinput_schema.Gérez les appels d'outils
Lorsque Claude utilise l'outil, le champ
inputdu bloctool_usesuit strictement votreinput_schema, et lenameest toujours valide.
Les entrées d'ensembles d'outils computer use (utilisation de l'ordinateur) et browser use (utilisation du navigateur) (computer_toolset_20260801 et browser_toolset_20260801) n'acceptent pas strict: true ; une requête qui le définit sur l'une ou l'autre de ces entrées est rejetée.
Cas d'utilisation courants
Assurez-vous que les paramètres des outils correspondent exactement à votre schéma :
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)Construisez des agents multi-étapes fiables avec des paramètres d'outils garantis :
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)Conservation des données
L'utilisation d'outils stricte compile les définitions input_schema des outils en grammaires à l'aide du même pipeline que les sorties structurées. Les schémas d'outils sont temporairement mis en cache pendant une durée maximale de 24 heures depuis leur dernière utilisation. Les prompts et les réponses ne sont pas conservés au-delà de la réponse de l'API.
L'utilisation d'outils stricte est éligible HIPAA, mais les informations de santé protégées (PHI) ne doivent pas être incluses dans les définitions de schémas d'outils. L'API met en cache les schémas compilés séparément du contenu des messages, et ces schémas mis en cache ne bénéficient pas des mêmes protections PHI que les prompts et les réponses. N'incluez pas de PHI dans les noms de propriétés de l'input_schema, les valeurs enum, les valeurs const ou les expressions régulières pattern. Les PHI ne doivent apparaître que dans le contenu des messages (prompts et réponses), où elles sont protégées par les garanties HIPAA.
Pour l'éligibilité ZDR et HIPAA de l'ensemble des fonctionnalités, consultez API et conservation des données.
Étapes suivantes
Récupérez et lisez le contenu d'URL spécifiques pour intégrer du contenu web en direct dans le contexte de Claude.
Mettez en cache les définitions d'outils d'un tour à l'autre pour réduire les coûts et la latence.
Obtenez des réponses JSON validées grâce au même échantillonnage contraint par grammaire.
Spécifiez les schémas d'outils, rédigez des descriptions efficaces et contrôlez quand Claude appelle vos outils.
Was this page helpful?