Lorsque vous travaillez avec la fonctionnalité d'outils de Claude, vous rencontrerez un nouveau type de structure de réponse, différent des simples réponses textuelles que vous avez vues auparavant. Au lieu de simplement recevoir un seul bloc de texte, Claude peut désormais renvoyer des messages multi-blocs contenant à la fois du texte et des informations d'utilisation d'outils.
Effectuer des appels API avec utilisation d'outils
Pour permettre à Claude d'utiliser des outils, vous devez inclure un paramètre tools dans votre appel API. Voici comment structurer la requête :
messages = []
messages.append({
"role": "user",
"content": "What is the exact time, formatted as HH:MM:SS?"
})
response = client.messages.create(
model=model,
max_tokens=1000,
messages=messages,
tools=[get_current_datetime_schema],
)Le paramètre tools prend une liste de schémas JSON décrivant les fonctions disponibles que Claude peut appeler.
Comprendre les messages multi-blocs
Lorsque Claude décide d'utiliser un outil, il renvoie un message d'assistant contenant plusieurs blocs dans la liste de contenu. Il s'agit d'un changement significatif par rapport aux simples réponses textuelles avec lesquelles vous avez travaillé auparavant.

Un message multi-blocs contient généralement :
- Bloc de texte - Texte lisible par un humain expliquant ce que Claude fait (comme « Je peux vous aider à connaître l'heure actuelle. Laissez-moi trouver cette information pour vous »)
- Bloc ToolUse - Instructions pour votre code indiquant quel outil appeler et quels paramètres utiliser
Le bloc ToolUse comprend :
- Un identifiant pour suivre l'appel d'outil
- Le nom de la fonction à appeler (comme « get_current_datetime »)
- Les paramètres d'entrée formatés selon votre schéma JSON
- La désignation de type « tool_use »
Gestion de l'historique des messages avec du contenu multi-blocs
Voici la partie essentielle : Claude ne stocke pas l'historique des conversations, vous devez donc le gérer manuellement. Lorsque vous travaillez avec des réponses d'outils, vous devez préserver l'intégralité de la structure du contenu, y compris tous les blocs.
Au lieu de simplement extraire le texte, vous devez ajouter le contenu complet de la réponse :
messages.append({
"role": "assistant",
"content": response.content
})Cela préserve à la fois le bloc de texte et le bloc d'utilisation d'outils, maintenant ainsi le contexte complet de la conversation pour les futurs appels API.
Le flux complet
Le processus d'utilisation d'outils suit ce schéma :

- Envoyer le message utilisateur avec le schéma d'outil à Claude
- Recevoir le message multi-blocs de l'assistant (texte + utilisation d'outils)
- Extraire les informations d'appel d'outil et exécuter la fonction
- Renvoyer le résultat de l'outil à Claude avec l'historique complet des messages
- Recevoir la réponse finale de Claude
Chaque étape nécessite une gestion minutieuse de la structure du message pour maintenir la continuité de la conversation. L'idée clé est que les conversations avec utilisation d'outils impliquent des formats de message plus complexes, mais le principe fondamental consistant à maintenir l'historique complet des messages reste le même.
Mise à jour des fonctions d'assistance
Si vous avez utilisé des fonctions d'assistance comme add_user_message et add_assistant_message, vous devrez les mettre à jour pour gérer le contenu multi-blocs. Les versions actuelles ne prennent probablement en charge que des blocs de texte uniques, mais elles doivent désormais s'adapter aux structures de contenu plus complexes qui incluent des blocs d'utilisation d'outils.