Utiliser plusieurs outils ensemble
Une fois l’infrastructure de base en place (boucle de conversation, routage, gestion des resultats), ajouter de nouveaux outils devient tres simple. On suit toujours le meme schema.
Exemple concret : un systeme de rappels
Imaginons un assistant qui gere des rappels. Il a besoin de trois capacites :
- Obtenir la date et l’heure actuelles - pour savoir “quand on est”
- Ajouter une duree a une date - Claude n’est pas fiable pour le calcul de dates
- Creer un rappel - pour effectivement programmer le rappel
Chaque capacite correspond a un outil avec sa fonction et son schema JSON.
Declarer les outils disponibles
On passe la liste complete des schemas dans l’appel a Claude :
response = chat(messages, tools=[
get_current_datetime_schema,
add_duration_to_datetime_schema,
set_reminder_schema
])
Claude connait ainsi les trois outils et peut decider lesquels utiliser selon le contexte.
Mettre a jour le routeur d’outils
On ajoute simplement les nouveaux cas dans la fonction de routage :
def run_tool(tool_name, tool_input):
if tool_name == "get_current_datetime":
return get_current_datetime(**tool_input)
elif tool_name == "add_duration_to_datetime":
return add_duration_to_datetime(**tool_input)
elif tool_name == "set_reminder":
return set_reminder(**tool_input)
Le principe est toujours le meme : verifier le nom de l’outil, appeler la fonction correspondante avec les arguments fournis, retourner le resultat.
Test avec un cas reel
Pour verifier que tout fonctionne, on peut envoyer une requete qui necessite plusieurs outils en sequence :
“Programme un rappel pour mon rendez-vous medical. C’est 177 jours apres le 1er janvier 2050.”
Claude va alors :
- Appeler
add_duration_to_datetimepour calculer la date (27 juin 2050) - Appeler
set_reminderpour programmer le rappel a cette date
Chaque appel est un tour de la boucle de conversation. Claude enchaine les outils de maniere autonome.
Le flux des messages
En examinant l’historique de la conversation, on voit la structure complete :
- Message utilisateur avec la demande initiale
- Message assistant contenant du texte explicatif ET des blocs
tool_use - Messages de resultats d’outils
- Messages assistant de suivi avec d’eventuels nouveaux appels d’outils
- Reponse finale de Claude
Un point important : Claude peut inclure plusieurs types de blocs dans un seul message — du texte explicatif melange a des demandes d’outils.
Le schema d’ajout d’outils
Une fois l’infrastructure en place, ajouter un nouvel outil suit toujours ces quatre etapes :
- Ecrire la fonction qui implemente la logique de l’outil
- Definir le schema JSON qui decrit les parametres attendus
- Ajouter le schema a la liste
toolsdansrun_conversation - Ajouter un cas dans la fonction
run_tool
Cette approche modulaire permet d’enrichir les capacites de l’assistant sans toucher au code existant. Chaque nouvel outil s’integre naturellement dans le flux de conversation et la logique de gestion des outils.