Aller au contenu principal
Leçon 27 sur 67 · Claude sur Amazon Bedrock

Renvoyer les résultats d'outils

Leçon 27 sur 67 Mis à jour le 5 novembre 2026 Développeur
Sur cette page
  1. Le cycle complet
  2. Les règles de mise en forme
  3. Pourquoi renvoyer les outils
  4. Un résultat d’outil est une donnée
  5. À vous de jouer
  6. Points clés à retenir

Dernière étape du cycle : renvoyer les résultats à Claude pour qu’il réponde enfin à l’utilisateur. Le principe : ranger les blocs toolResult dans un message user, puis renvoyer tout l’historique avec la même liste d’outils.

Le cycle complet

messages = []
add_user_message(messages, "Quelle heure est-il ?")

text, parts = chat(messages, tools=[get_current_datetime_schema])
add_assistant_message(messages, parts)

add_user_message(messages, run_tools(parts))

text, parts = chat(messages, tools=[get_current_datetime_schema])
print(text)

Quatre gestes, dans cet ordre :

  1. ajouter à l’historique la réponse de Claude, avec sa demande d’outil, telle quelle ;
  2. exécuter les outils avec run_tools ;
  3. ajouter les blocs toolResult dans un nouveau message user ;
  4. rappeler Claude avec tout l’historique et la même liste d’outils.
Un historique en quatre messages Quatre messages : la question de l'utilisateur, la réponse de Claude avec sa demande d'outil, le message user avec le bloc toolResult et le même identifiant, la réponse finale. RENVOYER LES RÉSULTATS Un historique en quatre messages 1 user « Quelle heure est-il ? » 2 assistant réflexion et toolUse 3 user toolResult, même identifiant 4 assistant « Il est 14 h 30. » La même liste d'outils accompagne chaque requête de la conversation.
D'après la leçon « Sending tool results » (Claude Academy, Claude with Amazon Bedrock).

L’historique contient alors quatre messages : la question, la demande d’outil, les résultats, puis la réponse finale, du type « Il est 14 h 30. »

Les règles de mise en forme

  • Tout de suite après. Le message qui porte les résultats suit immédiatement la réponse de Claude qui les a demandés.
  • Un résultat par demande. Chaque bloc toolUse reçoit son toolResult, avec le même identifiant.
  • Tous ensemble. Quand Claude demande plusieurs outils dans une même réponse, tous les résultats partent dans un seul message user : c’est ce que fait run_tools, qui renvoie une liste.

Une liste d’historique qui viole ces règles, ou deux messages user d’affilée, est refusée par l’API.

Pourquoi renvoyer les outils

Pourquoi redonner tools alors qu’on n’attend plus d’appel ? Parce que l’historique mentionne un outil : sans sa définition, Claude lirait l’appel d’un outil qu’on ne lui décrit plus. Gardez la même liste d’outils d’une requête à l’autre de la conversation. Elle pourra d’ailleurs servir : Claude peut demander un nouvel outil après avoir lu un résultat.

Un résultat d’outil est une donnée

Un résultat d’outil transporte souvent un contenu que vous ne maîtrisez pas : une page web, un courriel, un fichier envoyé par un utilisateur. Quelqu’un peut y glisser des instructions destinées à détourner Claude, une injection de prompt indirecte. La documentation d’Anthropic recommande de laisser ce contenu dans les résultats d’outils plutôt que de le recopier dans le prompt système ou dans un message de l’utilisateur : Claude est entraîné à le traiter comme une source tierce. Pour la même raison, vos propres consignes n’ont rien à faire dans un résultat d’outil.

À vous de jouer

Un aller-retour complet. Assemblez le code des leçons 23 à 27 dans un script et posez trois questions : l’heure, la date du jour au format « jeudi 5 novembre », et une question sans rapport avec l’heure. Pour chacune, affichez si un bloc toolUse est apparu, puis le texte final. Que se passe-t-il pour la troisième question avec le code de cette leçon, qui appelle run_tools à tous les coups ?

Sources officielles : Sending tool results (Claude Academy) · Use a tool to complete an Amazon Bedrock model response (documentation AWS) · Handle tool calls (documentation Claude)

Points clés à retenir

  • Les résultats repartent dans un message user, juste après la demande, un toolResult par toolUse.
  • Gardez la réponse de Claude intacte dans l’historique avant d’ajouter les résultats.
  • Renvoyez la même liste d’outils à chaque requête de la conversation.
  • Le contenu d’un résultat d’outil est une donnée tierce, jamais une consigne.