Aller au contenu principal
Leçon 23 sur 66 · Claude sur Google Cloud (Vertex AI / Agent Platform)

Les fonctions d'outils

Leçon 23 sur 66 Mis à jour le 5 novembre 2026 Développeur
Sur cette page
  1. Trois règles pour une fonction d’outil
  2. La première fonction du projet
  3. Une précision sur l’heure
  4. La suite
  5. À vous de jouer
  6. Points clés à retenir

Une fonction d’outil est une fonction ordinaire de votre code, que votre application exécute quand Claude en fait la demande. Cette leçon écrit la première du projet, get_current_datetime, et pose les règles qui valent pour toutes les suivantes.

Trois règles pour une fonction d’outil

  1. Des noms parlants. Le nom de la fonction et ceux de ses paramètres disent ce qu’ils font : get_current_datetime(date_format) plutôt que gcd(f).
  2. Des entrées validées. Vérifiez qu’un paramètre requis n’est ni vide ni invalide, et levez une erreur sinon.
  3. Des messages d’erreur instructifs. Claude lit le message d’erreur que vous lui renvoyez. « date_format ne peut pas être vide » lui permet de corriger son appel ; « échec » ne lui apprend rien.

La documentation ajoute deux conseils sur ce que la fonction renvoie : peu d’informations, mais utiles, et des identifiants stables et lisibles plutôt que des références internes opaques. Tout ce que la fonction renvoie entre dans le contexte de Claude.

Une bonne fonction d'outil Deux colonnes, à éviter et à faire : un nom parlant, des entrées validées, des messages d'erreur qui disent quoi corriger, un retour limité aux informations utiles. FONCTIONS D'OUTILS Une bonne fonction d'outil À éviter Nom gcd(f) : personne ne devine son rôle. Entrée Une valeur vide passe sans contrôle. Erreur « échec », sans rien à corriger. Retour Un objet complet de deux cents champs. → À faire Nom get_current_datetime(date_format) Entrée Validée ; une erreur est levée sinon. Erreur « date_format ne peut pas être vide » Retour Les seuls champs utiles, des identifiants lisibles. Claude lit vos messages d'erreur : un message précis lui permet de corriger son appel.
D'après la leçon « Tool functions » (Claude Academy, Claude on Google Cloud) et la page Define tools (documentation Claude).

La première fonction du projet

from datetime import datetime

def get_current_datetime(date_format="%Y-%m-%d %H:%M:%S"):
    if not date_format:
        raise ValueError("date_format ne peut pas être vide")
    return datetime.now().strftime(date_format)

La fonction lit l’heure de la machine et la met en forme avec les codes de strftime. Le format par défaut donne l’année, le mois et le jour, puis l’heure, les minutes et les secondes.

get_current_datetime()          # par exemple "2026-11-05 14:30:25"
get_current_datetime("%H:%M")   # par exemple "14:30"

La vérification du format servira rarement ici. Elle illustre le réflexe à prendre : valider chaque entrée et lever une erreur explicite. La boucle de la leçon 28 transmettra ce message à Claude, qui pourra corriger son appel.

Une précision sur l’heure

datetime.now() renvoie l’heure locale du serveur, sans fuseau horaire. Si vos utilisateurs vivent dans d’autres fuseaux que votre serveur, renvoyez une heure qui porte son fuseau, par exemple datetime.now(ZoneInfo("Europe/Paris")) avec le module zoneinfo de la bibliothèque standard, et précisez-le dans la description de l’outil.

La suite

Une fonction seule ne suffit pas : Claude ne voit jamais votre code. Il ne connaît l’outil que par son schéma, que la leçon suivante écrit.

À vous de jouer

Une fonction d’âge. Écrivez une fonction d’outil qui calcule l’âge d’une personne à partir de sa date de naissance, puis relisez-la avec les trois règles.

Une solution possible
from datetime import date, datetime

def calculate_age(birth_date, date_format="%Y-%m-%d"):
    if not birth_date:
        raise ValueError("birth_date ne peut pas être vide, format attendu : AAAA-MM-JJ")
    born = datetime.strptime(birth_date, date_format).date()
    today = date.today()
    if born > today:
        raise ValueError(f"birth_date est dans le futur : {birth_date}")
    return today.year - born.year - ((today.month, today.day) < (born.month, born.day))

Le nom dit ce que fait la fonction. Une entrée vide et une date future sont refusées avec un message qui indique ce qui est attendu. Une date mal formée lève l’erreur de strptime, dont le message cite la valeur reçue et le format attendu : time data '1990/01/01' does not match format '%Y-%m-%d'.

Sources officielles : Tool functions (Claude Academy) · Define tools (documentation Claude : bonnes pratiques) · Handle tool calls (messages d’erreur instructifs)

Points clés à retenir

  • Une fonction d’outil est une fonction ordinaire, exécutée par votre application à la demande de Claude.
  • Noms parlants, entrées validées, messages d’erreur qui disent quoi corriger.
  • Renvoyez peu d’informations, mais utiles : tout ce qui est renvoyé occupe le contexte de Claude.
  • Claude ne voit jamais votre code : il ne connaît l’outil que par son schéma.