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
- Envoyer le message utilisateur avec le schema d’outil
- Recevoir un message assistant multi-blocs (texte + tool use)
- Extraire les informations d’appel d’outil et executer la fonction
- Renvoyer le resultat a Claude avec l’historique complet
- Recevoir la reponse finale