Fonctions d'outils
Quand on construit des applications IA avec Claude, on a souvent besoin de lui donner acces a des informations en temps reel ou la capacite d’effectuer des actions. C’est la que les fonctions d’outils entrent en jeu : ce sont des fonctions Python que Claude peut appeler quand il a besoin de donnees supplementaires pour aider l’utilisateur.
Qu’est-ce qu’une fonction d’outil ?
Une fonction d’outil est une simple fonction Python qui s’execute automatiquement quand Claude decide qu’il a besoin d’informations supplementaires. Par exemple, si quelqu’un demande “Quelle heure est-il ?”, Claude appellerait votre outil date/heure pour obtenir l’heure actuelle.
Bonnes pratiques pour les fonctions d’outils
Trois regles importantes a suivre :
- Utilisez des noms descriptifs : Le nom de la fonction et les noms des parametres doivent indiquer clairement leur utilite.
- Validez les entrees : Verifiez que les parametres requis ne sont pas vides ou invalides, et levez des erreurs le cas echeant.
- Fournissez des messages d’erreur explicites : Claude peut voir les messages d’erreur et pourrait retenter l’appel avec des parametres corriges.
La validation est particulierement importante parce que Claude apprend de ses erreurs. Si vous levez une erreur claire comme "Location cannot be empty", Claude pourrait retenter l’appel avec une valeur de localisation correcte.
Creer sa premiere fonction d’outil
Creons une fonction pour obtenir la date et l’heure actuelles. Cette fonction accepte un parametre de format pour que Claude puisse demander l’heure dans differents formats :
from datetime import datetime
def get_current_datetime(date_format="%Y-%m-%d %H:%M:%S"):
# Verifie que le format n'est pas vide
if not date_format:
raise ValueError("date_format cannot be empty")
# Retourne la date/heure formatee
return datetime.now().strftime(date_format)
Cette fonction utilise le module datetime de Python pour obtenir l’heure actuelle et la formater selon la chaine de format fournie. Le format par defaut donne : annee-mois-jour heure:minute:seconde.
Tester avec differents formats
# Format par defaut : "2024-01-15 14:30:25"
get_current_datetime()
# Juste heure et minute : "14:30"
get_current_datetime("%H:%M")
La verification de validation empeche Claude de passer une chaine vide pour le format. Meme si cette erreur specifique est peu probable, elle illustre le patron de validation des entrees et de messages d’erreur utiles dont Claude peut tirer parti.
Prochaines etapes
Creer la fonction n’est que la premiere etape. Ensuite, il faudra :
- Ecrire un schema JSON qui decrit la fonction a Claude
- Integrer le tout dans votre systeme de chat
Cette approche par fonctions d’outils donne a Claude des capacites puissantes tout en gardant votre code organise et maintenable.
Exercice : Creez votre propre fonction d'outil
Essayez de creer une fonction d’outil qui calcule l’age d’une personne a partir de sa date de naissance :
from datetime import datetime
def calculate_age(birth_date_str, date_format="%Y-%m-%d"):
if not birth_date_str:
raise ValueError("birth_date_str cannot be empty")
birth_date = datetime.strptime(birth_date_str, date_format)
today = datetime.now()
age = today.year - birth_date.year
if (today.month, today.day) < (birth_date.month, birth_date.day):
age -= 1
return str(age)
Points a verifier :
- Le nom de la fonction est-il descriptif ?
- Les entrees sont-elles validees ?
- Les messages d’erreur sont-ils clairs ?