Fonctions outils
Mis à jour le 30 juillet 2026
Construire des outils pour Claude nécessite de résoudre des problèmes qui ne sont pas immédiatement évidents. Prenez notre projet de section : un système où l’on peut dire « rappelle-moi mon rendez-vous jeudi prochain ». Dès qu’on veut que Claude gère des rappels pour des dates futures, on découvre trois manques : Claude ne connaît pas toujours l’heure exacte (son savoir s’arrête à l’entraînement), il a du mal avec l’arithmétique de dates complexe (compter 379 jours n’est pas un exercice de langage), et il n’a aucun moyen intégré de créer des rappels (il génère du texte, il n’agit pas). Trois manques, trois outils.
Les outils nécessaires
Pour un système de rappels, vous avez besoin de :
- get_current_datetime : récupérer la date et l’heure actuelles
- add_duration_to_datetime : ajouter des durées aux dates
- set_reminder : créer un rappel
Remarquez la complémentarité de la boîte à outils : aucun des trois ne traite seul une demande réelle, mais ensemble ils couvrent le parcours complet — savoir quand on est, calculer l’échéance, agir. On conçoit rarement un outil isolé ; on conçoit un jeu d’outils que Claude composera.
Écrire les fonctions outils
Les fonctions outils sont de simples fonctions Python, exécutées quand Claude décide qu’il a besoin d’informations supplémentaires. Rien de magique dans leur code — ce qui change, c’est leur « utilisateur » : un modèle de langage, qui ne connaîtra de la fonction que son nom, ses paramètres et ses messages d’erreur.
Bonnes pratiques
- Utiliser des noms d’arguments descriptifs et bien nommés
- Valider les entrées, lever une erreur en cas d’échec de validation
- Renvoyer des erreurs significatives — Claude essaiera d’appeler votre fonction une seconde fois s’il reçoit une erreur
La troisième règle mérite qu’on s’y arrête, car elle change la nature des messages d’erreur : ils ne sont pas un cul-de-sac de débogage, ils sont une instruction de correction adressée au modèle. Un « date_format ne peut pas être vide » bien rédigé permet à Claude de comprendre sa faute et de réessayer avec un argument valide — l’erreur devient une étape du dialogue, pas une fin de partie.
Premier outil : date et heure actuelles
from datetime import datetime, timedelta
def get_current_datetime(date_format="%Y-%m-%d %H:%M:%S"):
return datetime.now().strftime(date_format)
Cette fonction est simple mais respecte les principes clés : nom descriptif — get_current_datetime se comprend sans documentation —, paramètre bien nommé avec une valeur par défaut sensée, retour exactement de ce qui est promis. Le paramètre date_format est aussi un choix de conception : une seule fonction paramétrable plutôt que trois variantes (get_time, get_date…) — moins d’outils à décrire à Claude, moins de risques de confusion dans son choix.
Schéma JSON
Une fonction écrite n’est que la moitié du travail : Claude ne voit pas votre code. Une fois votre fonction prête, vous devez rédiger un schéma JSON qui la décrit au modèle — c’est ce document, et lui seul, qui indique à Claude quels arguments la fonction requiert et l’aide à comprendre quand et comment utiliser l’outil.
Le schéma JSON sert deux objectifs : aider Claude à comprendre quels arguments votre fonction attend, et fournir un format de validation standard — JSON Schema est une norme utilisée bien au-delà du contexte IA, vos outils d’API classiques la parlent déjà.
Bonnes pratiques pour les schémas
- Expliquer ce que l’outil fait, quand l’utiliser, et ce qu’il renvoie
- Viser 3 à 4 phrases dans la description
- Fournir des descriptions détaillées pour chaque paramètre
- En cas de doute, demander à Claude de rédiger les descriptions pour vous
Le triptyque quoi/quand/retour de la première règle est le cœur : c’est sur la description que Claude fonde sa décision d’appeler ou non l’outil — une description vague produit des appels erratiques, quelle que soit la qualité du code derrière. La leçon suivante construit précisément ce schéma pour notre première fonction.
Points clés à retenir
- Trois limitations de Claude (heure, arithmétique de dates, action) = trois outils complémentaires
- Une fonction outil est du Python ordinaire, mais son « utilisateur » est le modèle : noms et erreurs explicites
- Une erreur significative est une instruction de correction — Claude retente avec des arguments corrigés
- Préférez une fonction paramétrable à plusieurs variantes : boîte à outils plus courte, choix plus sûr
- Le schéma JSON est tout ce que Claude voit : description quoi/quand/retour en 3-4 phrases, paramètres détaillés