Was this page helpful?
La définition de strict: true sur un outil utilise l'échantillonnage contraint par grammaire pour garantir que les entrées des outils de Claude correspondent à votre schéma JSON. Cette page couvre pourquoi le mode strict est important pour les agents, comment l'activer et les cas d'usage courants. Pour le sous-ensemble de schéma JSON supporté, voir Limitations du schéma JSON. Pour les conseils sur les schémas non stricts, voir Définir les outils.
L'utilisation stricte des outils valide les paramètres des outils, en s'assurant que Claude appelle vos fonctions avec des arguments correctement typés. Utilisez l'utilisation stricte des outils quand vous avez besoin de :
La construction de systèmes d'agents fiables nécessite une conformité de schéma garantie. Sans le mode strict, Claude pourrait retourner des types incompatibles ("2" au lieu de 2) ou des champs requis manquants, cassant vos fonctions et causant des erreurs d'exécution.
L'utilisation stricte des outils garantit des paramètres type-safe :
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 contiendra toujours passengers: 2.
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 :
input de l'outil suit strictement l'input_schemaname de l'outil est toujours valide (parmi les outils fournis ou les outils serveur)Définir votre schéma d'outil
Créez un schéma JSON pour l'input_schema de votre outil. Le schéma utilise le format standard du schéma JSON avec certaines limitations (voir Limitations du schéma JSON).
Ajouter strict: true
Définissez "strict": true comme propriété de niveau supérieur dans votre définition d'outil, aux côtés de name, description et input_schema.
Gérer les appels d'outils
Quand Claude utilise l'outil, le champ input dans le bloc tool_use suivra strictement votre input_schema, et le name sera toujours valide.
L'utilisation stricte d'outils compile les définitions input_schema d'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 jusqu'à 24 heures depuis la dernière utilisation. Les invites et les réponses ne sont pas conservées au-delà de la réponse de l'API.
L'utilisation stricte d'outils est éligible à HIPAA, mais les PHI ne doivent pas être inclus dans les définitions de schéma 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 reçoivent pas les mêmes protections PHI que les invites et les réponses. N'incluez pas de PHI dans les noms de propriété 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 (invites et réponses), où ils sont protégés par les garanties de sécurité HIPAA.
Pour l'éligibilité ZDR et HIPAA dans toutes les fonctionnalités, consultez Conservation des données et API.
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-7",
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)