Claude Platform Docs
MessagesOutils

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

Output
{
  "type": "tool_use",
  "name": "get_weather",
  "input": {
    "location": "San Francisco, CA"
  }
}

Garanties :

  • L'input de l'outil suit strictement l'input_schema
  • Le name de l'outil est toujours valide (parmi les outils fournis ou les outils serveur)

Comment cela fonctionne

  1. 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 de JSON Schema).

  2. 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.

  3. Gérez les appels d'outils

    Lorsque Claude utilise l'outil, le champ input du bloc tool_use suit strictement votre input_schema, et le name est 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

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?