Loading...
    • Créer
    • Admin
    • Modèles et tarification
    • SDK clients
    • Référence API
    Search...
    ⌘K
    Premiers pas
    Introduction à ClaudeDémarrage rapide
    Créer avec Claude
    Aperçu des fonctionnalitésUtiliser l'API MessagesCompétence Claude APIGérer les raisons d'arrêt
    Capacités du modèle
    Extended thinkingAdaptive thinkingEffortBudgets de tâches (bêta)Mode rapide (bêta : aperçu de recherche)Sorties structuréesCitationsMessages en continuTraitement par lotsRésultats de rechercheRefus en continuSupport multilingueEmbeddings
    Outils
    AperçuFonctionnement de l'utilisation des outilsOutil de recherche webOutil de récupération webOutil d'exécution de codeOutil AdvisorOutil MemoryOutil BashOutil Computer useOutil Éditeur de texte
    Infrastructure des outils
    Référence des outilsRecherche d'outilsAppel programmatique des outilsStreaming granulaire des outils
    Gestion du contexte
    Fenêtres de contexteCompactionÉdition du contexteMise en cache des invitesComptage des tokens
    Travailler avec des fichiers
    API FilesSupport PDFImages et vision
    Compétences
    AperçuDémarrage rapideMeilleures pratiquesCompétences pour l'entrepriseCompétences dans l'API
    MCP
    Serveurs MCP distantsConnecteur MCP
    Ingénierie des invites
    AperçuMeilleures pratiques d'invitesOutils d'invites Console
    Tester et évaluer
    Définir le succès et créer des évaluationsUtiliser l'outil d'évaluation dans ConsoleRéduire la latence
    Renforcer les garde-fous
    Réduire les hallucinationsAugmenter la cohérence des résultatsAtténuer les jailbreaksRéduire les fuites d'invites
    Ressources
    Glossaire
    Notes de version
    Claude Platform
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    Documentation

    Définir les outils

    Spécifiez les schémas d'outils, rédigez des descriptions efficaces et contrôlez quand Claude appelle vos outils.

    Was this page helpful?

    • Choisir un modèle
    • Spécifier les outils clients
    • Invite système d'utilisation d'outils
    • Meilleures pratiques pour les définitions d'outils
    • Fournir des exemples d'utilisation d'outils
    • Utilisation de base
    • Exigences et limitations
    • Contrôler la sortie de Claude
    • Forcer l'utilisation d'outils
    • Réponses du modèle avec des outils
    • Étapes suivantes

    Choisir un modèle

    Utilisez le dernier modèle Claude Opus (4.7) pour les outils complexes et les requêtes ambiguës ; il gère mieux plusieurs outils et demande des clarifications si nécessaire.

    Utilisez les modèles Claude Haiku pour les outils simples, mais notez qu'ils peuvent déduire les paramètres manquants.

    Si vous utilisez Claude avec l'utilisation d'outils et la réflexion étendue, consultez le guide de réflexion étendue pour plus d'informations.

    Spécifier les outils clients

    Les outils clients (schéma Anthropic et définis par l'utilisateur) sont spécifiés dans le paramètre de niveau supérieur tools de la requête API. Chaque définition d'outil inclut :

    ParamètreDescription
    nameLe nom de l'outil. Doit correspondre à l'expression régulière ^[a-zA-Z0-9_-]{1,64}$.
    descriptionUne description détaillée en texte brut de ce que fait l'outil, quand il doit être utilisé et comment il se comporte.
    input_schemaUn objet JSON Schema définissant les paramètres attendus pour l'outil.
    input_examples(Optionnel) Un tableau d'objets d'entrée d'exemple pour aider Claude à comprendre comment utiliser l'outil. Voir Fournir des exemples d'utilisation d'outils.

    Pour l'ensemble complet des propriétés optionnelles disponibles sur toute définition d'outil, y compris cache_control, strict, defer_loading et allowed_callers, consultez la référence des outils.

    Invite système d'utilisation d'outils

    Lorsque vous appelez l'API Claude avec le paramètre tools, l'API construit une invite système spéciale à partir des définitions d'outils, de la configuration des outils et de toute invite système spécifiée par l'utilisateur. L'invite construite est conçue pour instruire le modèle d'utiliser le(s) outil(s) spécifié(s) et de fournir le contexte nécessaire pour que l'outil fonctionne correctement :

    In this environment you have access to a set of tools you can use to answer the user's question.
    {{ FORMATTING INSTRUCTIONS }}
    String and scalar parameters should be specified as is, while lists and objects should use JSON format. Note that spaces for string values are not stripped. The output is not expected to be valid XML and is parsed with regular expressions.
    Here are the functions available in JSONSchema format:
    {{ TOOL DEFINITIONS IN JSON SCHEMA }}
    {{ USER SYSTEM PROMPT }}
    {{ TOOL CONFIGURATION }}

    Meilleures pratiques pour les définitions d'outils

    Pour obtenir les meilleures performances de Claude lors de l'utilisation d'outils, suivez ces directives :

    • Fournissez des descriptions extrêmement détaillées. C'est de loin le facteur le plus important dans la performance des outils. Vos descriptions doivent expliquer chaque détail de l'outil, y compris :
      • Ce que fait l'outil
      • Quand il doit être utilisé (et quand il ne doit pas l'être)
      • Ce que signifie chaque paramètre et comment il affecte le comportement de l'outil
      • Toutes les mises en garde ou limitations importantes, comme les informations que l'outil ne retourne pas si le nom de l'outil n'est pas clair. Plus vous pouvez donner de contexte à Claude sur vos outils, mieux il sera capable de décider quand et comment les utiliser. Visez au moins 3-4 phrases par description d'outil, plus si l'outil est complexe.
    • Priorisez les descriptions, mais envisagez d'utiliser input_examples pour les outils complexes. Les descriptions claires sont les plus importantes, mais pour les outils avec des entrées complexes, des objets imbriqués ou des paramètres sensibles au format, vous pouvez utiliser le champ input_examples pour fournir des exemples validés par le schéma. Voir Fournir des exemples d'utilisation d'outils pour plus de détails.
    • Plutôt que de créer un outil séparé pour chaque action (, , ), regroupez-les dans un seul outil avec un paramètre . Moins d'outils, plus capables, réduisent l'ambiguïté de sélection et rendent votre surface d'outils plus facile à naviguer pour Claude.

    La bonne description explique clairement ce que fait l'outil, quand l'utiliser, quelles données il retourne et ce que signifie le paramètre ticker. La mauvaise description est trop brève et laisse Claude avec de nombreuses questions ouvertes sur le comportement et l'utilisation de l'outil.

    Pour des conseils plus approfondis sur la conception d'outils (consolidation, nommage et façonnage des réponses), voir Écrire des outils pour les agents.

    Fournir des exemples d'utilisation d'outils

    Vous pouvez fournir des exemples concrets d'entrées d'outils valides pour aider Claude à comprendre comment utiliser vos outils plus efficacement. C'est particulièrement utile pour les outils complexes avec des objets imbriqués, des paramètres optionnels ou des entrées sensibles au format.

    Utilisation de base

    Ajoutez un champ optionnel input_examples à votre définition d'outil avec un tableau d'objets d'entrée d'exemple. Chaque exemple doit être valide selon le input_schema de l'outil :

    Les exemples sont inclus dans l'invite aux côtés de votre schéma d'outil, montrant à Claude des modèles concrets pour des appels d'outils bien formés. Cela aide Claude à comprendre quand inclure les paramètres optionnels, quels formats utiliser et comment structurer les entrées complexes.

    Exigences et limitations

    • Validation du schéma - Chaque exemple doit être valide selon le input_schema de l'outil. Les exemples invalides retournent une erreur 400
    • Non pris en charge pour les outils côté serveur - Les exemples d'entrée fonctionnent sur les outils clients définis par l'utilisateur et schéma Anthropic, mais pas sur les outils serveur comme la recherche Web ou l'exécution de code
    • Coût en jetons - Les exemples s'ajoutent aux jetons d'invite : ~20-50 jetons pour les exemples simples, ~100-200 jetons pour les objets imbriqués complexes

    Contrôler la sortie de Claude

    Forcer l'utilisation d'outils

    Dans certains cas, vous pouvez vouloir que Claude utilise un outil spécifique pour répondre à la question de l'utilisateur, même si Claude répondrait autrement directement sans appeler un outil. Vous pouvez le faire en spécifiant l'outil dans le champ tool_choice comme suit :

    tool_choice = {"type": "tool", "name": "get_weather"}

    Lorsque vous travaillez avec le paramètre tool_choice, il y a quatre options possibles :

    • auto permet à Claude de décider s'il doit appeler l'un des outils fournis ou non. C'est la valeur par défaut lorsque tools sont fournis.
    • any indique à Claude qu'il doit utiliser l'un des outils fournis, mais ne force pas un outil particulier.
    • tool force Claude à toujours utiliser un outil particulier.
    • none empêche Claude d'utiliser des outils. C'est la valeur par défaut lorsqu'aucun tools n'est fourni.

    Lors de l'utilisation de mise en cache des invites, les modifications du paramètre tool_choice invalideront les blocs de messages en cache. Les définitions d'outils et les invites système restent en cache, mais le contenu du message doit être retraité.

    Ce diagramme illustre comment chaque option fonctionne :

    Diagram showing the four tool_choice options: auto, any, tool, and none

    Notez que lorsque vous avez tool_choice comme any ou tool, l'API préremplissage le message de l'assistant pour forcer l'utilisation d'un outil. Cela signifie que les modèles n'émettront pas de réponse en langage naturel ou d'explication avant les blocs de contenu tool_use, même s'ils sont explicitement demandés.

    Lors de l'utilisation de la réflexion étendue avec l'utilisation d'outils, tool_choice: {"type": "any"} et tool_choice: {"type": "tool", "name": "..."} ne sont pas pris en charge et entraîneront une erreur. Seuls tool_choice: {"type": "auto"} (par défaut) et tool_choice: {"type": "none"} sont compatibles avec la réflexion étendue.

    Claude Mythos Preview ne prend pas en charge l'utilisation forcée d'outils. Les requêtes avec tool_choice: {"type": "any"} ou tool_choice: {"type": "tool", "name": "..."} retournent une erreur 400 sur ce modèle. Utilisez tool_choice: {"type": "auto"} (par défaut) ou tool_choice: {"type": "none"} et fiez-vous à l'invite pour influencer la sélection d'outils.

    Les tests ont montré que cela ne devrait pas réduire les performances. Si vous souhaitez que le modèle fournisse un contexte en langage naturel ou des explications tout en demandant au modèle d'utiliser un outil spécifique, vous pouvez utiliser {"type": "auto"} pour tool_choice (par défaut) et ajouter des instructions explicites dans un message user. Par exemple : What's the weather like in London? Use the get_weather tool in your response.

    Appels d'outils garantis avec des outils stricts

    Combinez tool_choice: {"type": "any"} avec l'utilisation stricte d'outils pour garantir à la fois qu'un de vos outils sera appelé ET que les entrées d'outils suivront strictement votre schéma. Définissez strict: true sur vos définitions d'outils pour activer la validation du schéma.

    Réponses du modèle avec des outils

    Lors de l'utilisation d'outils, Claude commentera souvent ce qu'il fait ou répondra naturellement à l'utilisateur avant d'invoquer des outils.

    Par exemple, étant donné l'invite « What's the weather like in San Francisco right now, and what time is it there? », Claude pourrait répondre avec :

    JSON
    {
      "role": "assistant",
      "content": [
        {
          "type": "text",
          "text": "I'll help you check the current weather and time in San Francisco."
        },
        {
          "type": "tool_use",
          "id": "toolu_01A09q90qw90lq917835lq9",
          "name": "get_weather",
          "input": { "location": "San Francisco, CA" }
        }
      ]
    }

    Ce style de réponse naturelle aide les utilisateurs à comprendre ce que Claude fait et crée une interaction plus conversationnelle. Vous pouvez guider le style et le contenu de ces réponses par vos invites système et en fournissant <examples> dans vos invites.

    Il est important de noter que Claude peut utiliser diverses formulations et approches pour expliquer ses actions. Votre code doit traiter ces réponses comme n'importe quel autre texte généré par l'assistant, et ne pas dépendre de conventions de formatage spécifiques.

    Étapes suivantes

    Gérer les appels d'outils

    Analysez les blocs tool_use et formatez les réponses tool_result.

    Tool Runner (SDK)

    Laissez le SDK gérer la boucle agentique automatiquement.

    Référence des outils

    Répertoire des outils fournis par Anthropic et des propriétés optionnelles.

    Consolidez les opérations connexes en moins d'outils.
    create_pr
    review_pr
    merge_pr
    action
  1. Utilisez un espacement de noms significatif dans les noms d'outils. Lorsque vos outils s'étendent sur plusieurs services ou ressources, préfixez les noms avec le service (par exemple, github_list_prs, slack_send_message). Cela rend la sélection d'outils sans ambiguïté à mesure que votre bibliothèque grandit, et est particulièrement important lors de l'utilisation de recherche d'outils.
  2. Concevez les réponses des outils pour retourner uniquement des informations à haut signal. Retournez des identifiants sémantiques et stables (par exemple, des slugs ou des UUID) plutôt que des références internes opaques, et incluez uniquement les champs dont Claude a besoin pour raisonner sur son prochain pas. Les réponses gonflées gaspillent le contexte et rendent plus difficile pour Claude d'extraire ce qui compte.
  3. import anthropic
    
    client = anthropic.Anthropic()
    
    response = client.messages.create(
        model="claude-opus-4-7",
        max_tokens=1024,
        tools=[
            {
                "name": "get_weather",
                "description": "Get the current weather in a given location",
                "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",
                        },
                    },
                    "required": ["location"],
                },
                "input_examples": [
                    {"location": "San Francisco, CA", "unit": "fahrenheit"},
                    {"location": "Tokyo, Japan", "unit": "celsius"},
                    {
                        "location": "New York, NY"  # 'unit' is optional
                    },
                ],
            }
        ],
        messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
    )
    
    print(response)