Aller au contenu principal

Gerer les blocs de messages

Avec les outils actives, les reponses de Claude deviennent plus complexes : au lieu d’un simple bloc de texte, Claude peut retourner des messages multi-blocs contenant du texte et des informations d’utilisation d’outil.

Activer les outils dans l’appel API

response = client.messages.create(
    model=model,
    max_tokens=1000,
    messages=messages,
    tools=[get_current_datetime_schema],
)

Le parametre tools prend une liste de schemas JSON.

Messages multi-blocs

Quand Claude decide d’utiliser un outil, sa reponse contient :

  • Bloc TextBlock : texte explicatif (“Je vais chercher l’heure pour vous”)
  • Bloc ToolUse : instructions pour votre code avec l’ID de l’appel, le nom de la fonction, les parametres, et le type "tool_use"

Preserver l’historique complet

Point critique : il faut conserver la structure complete du contenu, y compris tous les blocs :

messages.append({
    "role": "assistant",
    "content": response.content
})

On preserve le bloc texte et le bloc tool use, ce qui maintient le contexte complet pour les appels API suivants.

Flux complet

  1. Envoyer le message utilisateur avec le schema d’outil
  2. Recevoir un message assistant multi-blocs (texte + tool use)
  3. Extraire les informations d’appel d’outil et executer la fonction
  4. Renvoyer le resultat a Claude avec l’historique complet
  5. Recevoir la reponse finale