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 des tokens du modèle à des sorties valides selon le schéma (une technique appelée « grammar-constrained sampling », ou échantillonnage contraint par grammaire). Cette page explique pourquoi le mode strict est important pour les agents, comment l'activer, et les cas d'usage courants. Pour le sous-ensemble de JSON Schema pris en charge, consultez Limitations du JSON Schema. Pour des conseils sur les schémas non stricts, consultez Définir des outils.
L'utilisation stricte d'outils valide les paramètres des outils, garantissant que Claude appelle vos fonctions avec des arguments correctement typés. Utilisez l'utilisation stricte d'outils lorsque vous devez :
La construction de 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 stricte d'outils garantit des paramètres avec typage sûr :
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.
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)Format de réponse : Blocs tool_use avec des entrées validées dans response.content[x].input
{
"type": "tool_use",
"name": "get_weather",
"input": {
"location": "San Francisco, CA"
}
}Garanties :
input de l'outil suit strictement l'input_schemaname de l'outil est toujours valide (parmi les outils fournis ou les outils serveur)Définissez le schéma de votre outil
Créez un schéma JSON pour l'input_schema de votre outil. Le schéma utilise le format JSON Schema standard avec certaines limitations (consultez Limitations du JSON Schema).
Ajoutez strict: true
Définissez "strict": true comme propriété de premier niveau dans votre définition d'outil, aux côtés de name, description et input_schema.
Gérez les appels d'outils
Lorsque Claude utilise l'outil, le champ input dans le bloc tool_use suit strictement votre input_schema, et le name est toujours valide.
L'utilisation stricte d'outils compile les définitions input_schema des outils en grammaires en utilisant le 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 stricte d'outils est éligible HIPAA, mais les 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 toutes les fonctionnalités, consultez API et conservation des données.
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 entre les tours pour réduire les coûts et la latence.
Obtenez des réponses JSON validées en utilisant le 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?