Quiz du cours
Sur cette page
Onze questions pour vérifier que vous maîtrisez la boucle d’outils, et que vous savez quelle correction appliquer à quel problème. Répondez avant de déplier.
1. La boucle — Votre code a exécuté l'outil demandé par Claude. Comment lui renvoyer le résultat ?
Réponse : Dans un message user dont le contenu est une liste de blocs tool_result, chacun avec le tool_use_id identique à l’id du bloc tool_use correspondant : un résultat pour chaque appel, tous dans le même message. On reboucle tant que stop_reason vaut "tool_use" (leçons 3 et 4).
2. Contrôle — Sur quels modèles `tool_choice: {"type": "tool", ...}` renvoie-t-il une erreur 400, et que reste-t-il comme valeurs ?
Réponse : Sur Claude Opus 5.5, Sonnet 5.5, Fable 5.1 et Mythos 5.1 (et avec la réflexion manuelle) ; auto et none restent acceptés. Ailleurs, l’appel forcé fonctionne mais saute la réflexion (leçon 5).
3. JSON — Comment obtenir une réponse JSON conforme à un schéma, sur tous les modèles ?
Réponse : Avec les sorties JSON : le schéma dans output_config.format (type: "json_schema"), ou en Python client.messages.parse() avec un modèle Pydantic. Vérifier stop_reason (refus, max_tokens) et ne pas les combiner avec les citations (leçon 6).
4. Choix d'outil — Claude appelle souvent le mauvais outil parmi six outils d'une ligne chacun. Par quoi commencer ?
Réponse : Par les définitions : des descriptions de trois ou quatre phrases (ce que l’outil renvoie, quand l’utiliser et quand ne pas l’utiliser, ses paramètres, ce qu’il ne renvoie pas), et le regroupement des outils qui se chevauchent dans un outil paramétré. Puis mesurer avec une évaluation avant/après (leçon 7).
5. Mode strict — Que faut-il pour que `strict: true` fonctionne, et que garantit-il ?
Réponse : Le drapeau au niveau de la définition, et additionalProperties: false sur chaque objet du schéma. Il garantit que l’entrée respecte le schéma (échantillonnage contraint par grammaire), pas que son contenu est vrai ; générez le schéma depuis votre validateur pour que l’API et le backend restent d’accord (leçon 8).
6. Appel forcé — Sur Claude Opus 5.5, `tool_choice: {"type": "any"}` renvoie une erreur 400. Comment obtenir l'appel ?
Réponse : Laisser tool_choice sur auto, demander explicitement l’outil dans le prompt, garder strict: true pour la validité de l’entrée, et vérifier qu’un appel a bien eu lieu, avec une nouvelle tentative sinon. Si l’appel forcé servait seulement à extraire du JSON, utiliser output_config.format (leçons 5 et 8).
7. Parallélisme — Claude fait de moins en moins d'appels parallèles dans votre agent. Quelle cause vérifier en premier ?
Réponse : La forme des messages : si chaque tool_result part dans son propre message, la conversation ressemble à des appels un par un. Mettez tous les résultats d’un tour dans un seul message utilisateur. Et disable_parallel_tool_use, s’il est utilisé, se place dans tool_choice (leçon 9).
8. Streaming — Comment afficher l'outil choisi avant même qu'il soit exécuté ?
Réponse : En streaming, réagir à l’événement content_block_start d’un bloc tool_use, qui porte déjà le nom de l’outil (l’entrée arrive ensuite en fragments input_json_delta). stream.get_final_message() renvoie ensuite la réponse complète, et le reste de la boucle ne change pas (leçon 10).
9. Exécution de code — Comment donner vos fichiers CSV au conteneur, et garder son état d'un tour à l'autre ?
Réponse : Les envoyer avec la Files API, puis les référencer par des blocs container_upload dans le message ; renvoyer ensuite l’identifiant du container de la réponse dans la requête suivante. Le conteneur n’a pas d’accès à Internet (leçon 11).
10. Recherche web — Comment s'assurer que Claude ne cite que des sources officielles ?
Réponse : Avec allowed_domains dans la définition de l’outil web_search, limité aux sites dont vous répondez (ou blocked_domains, mais pas les deux), puis en contrôlant les citations de la réponse (leçon 12).
11. Coût — Quarante appels indépendants font exploser les jetons d'entrée. Quelles deux mesures ?
Réponse : L’appel programmatique d’outils (allowed_callers vers l’outil d’exécution de code), pour que les résultats intermédiaires restent dans un script et que seule sa sortie atteigne Claude ; et cache_control sur le dernier outil, pour ne pas repayer les définitions à chaque requête (leçon 14).
À vous de jouer
Votre bilan. Notez le numéro des questions auxquelles vous avez mal répondu, puis relisez la leçon citée dans chaque réponse. Pour celles que vous aviez justes, vérifiez que votre propre agent applique bien la règle : c’est là que se cachent les erreurs qui coûtent.
Cours officiel — Pour obtenir le badge de fin de cours, suivez Tool use with the Messages API sur Claude Academy et réussissez le quiz officiel.
Sources officielles : Tool use with the Messages API (Claude Academy) · Tool use overview (documentation Claude)
Points clés à retenir
- Les bases : un
tool_resultpartool_use,tool_choiceselon le modèle, les sorties JSON pour un format garanti - Fiabilité : des définitions qui disent quand appeler, et
strict: true - Réactivité : appels parallèles et streaming de l’outil choisi
- Outils fournis : exécution de code, recherche web, computer use ; coût : appel programmatique et mise en cache