# Quiz — Session 5 : Outils & Tool Calling

**Programme :** Applied AI — Niveau Intermédiaire — Instructeur : Yann Isola
**Format :** 10 QCM (questionnaire à choix multiples) — une seule bonne réponse par question — durée conseillée : 8 minutes.

---

**Q1. Quelle est la différence fondamentale entre le RAG (Retrieval-Augmented Generation, génération augmentée par récupération) et les outils ?**

- A. Le RAG est plus rapide que les outils
- B. Le RAG permet au modèle de lire des documents ; les outils lui permettent d'agir et de lire des systèmes vivants (bases de données, API, calendriers)
- C. Les outils remplacent le RAG dans les systèmes modernes
- D. Le RAG fonctionne hors ligne, les outils nécessitent Internet

**Q2. Quand un modèle « appelle un outil », que se passe-t-il réellement ?**

- A. Le modèle exécute directement le code de l'outil sur le serveur
- B. Le modèle se connecte à l'API concernée avec ses propres identifiants
- C. Le modèle émet une requête structurée (bloc `tool_use`) ; c'est votre code qui exécute l'appel réel avec vos autorisations, votre validation et votre journalisation
- D. Le fournisseur du modèle (Anthropic, OpenAI…) exécute l'appel dans son cloud

**Q3. Pourquoi dit-on que « les descriptions d'outils sont des prompts » ?**

- A. Parce qu'elles doivent être rédigées en anglais
- B. Parce que le modèle choisit quel outil utiliser en lisant les descriptions : une description vague provoque un mauvais routage
- C. Parce qu'elles remplacent le message système
- D. Parce qu'elles sont facturées au même tarif que les prompts

**Q4. Quels sont les trois éléments d'une définition d'outil ?**

- A. `name`, `description`, `input_schema` (au format JSON Schema)
- B. `url`, `api_key`, `timeout`
- C. `nom`, `code_source`, `permissions`
- D. `prompt`, `temperature`, `max_tokens`

**Q5. Que fait le paramètre `tool_choice: "any"` ?**

- A. Il laisse le modèle libre d'utiliser un outil ou de répondre directement
- B. Il oblige le modèle à utiliser un outil précis, désigné par son nom
- C. Il oblige le modèle à utiliser au moins un des outils disponibles (utile pour l'extraction structurée), sans imposer lequel
- D. Il désactive tous les outils

**Q6. Dans la boucle tool_use, à quoi sert le champ `tool_use_id` du bloc `tool_result` ?**

- A. À authentifier l'utilisateur auprès de l'API
- B. À apparier chaque résultat avec la demande d'outil correspondante — indispensable notamment quand le modèle demande plusieurs outils en parallèle
- C. À chiffrer le contenu du résultat
- D. À indiquer la version de l'outil utilisée

**Q7. L'API météo est en panne. Quelle est la BONNE façon de le signaler au modèle ?**

- A. Renvoyer `"OK"` pour ne pas perturber la conversation
- B. Ne rien renvoyer et couper la conversation
- C. Renvoyer un `tool_result` avec `is_error: true` et un message descriptif, pour que le modèle puisse se corriger ou informer honnêtement l'utilisateur (dégradation gracieuse)
- D. Réessayer indéfiniment en silence jusqu'à ce que l'API réponde

**Q8. Que risque-t-on en renvoyant `"OK"` au modèle alors que l'outil a échoué ?**

- A. Rien, le modèle détecte automatiquement les pannes
- B. Une erreur de syntaxe JSON
- C. Le modèle, croyant disposer d'un résultat valide, risque d'inventer une réponse plausible : une hallucination provoquée par votre code
- D. La conversation est automatiquement interrompue par l'API

**Q9. Un agent de consultation doit uniquement LIRE des fiches clients. Selon le principe du moindre privilège (principle of least privilege), quels outils lui exposez-vous ?**

- A. `chercher_client` uniquement (lecture seule, périmètre restreint)
- B. `chercher_client` + `modifier_client` + `supprimer_client`, « au cas où »
- C. Un outil générique `executer_sql` qui accepte n'importe quelle requête SQL (Structured Query Language, langage de requête structuré)
- D. Tous les outils de l'entreprise, pour maximiser son autonomie

**Q10. Parmi ces définitions d'outil, laquelle respecte les bonnes pratiques (« un outil fait une chose, nom clair, cas limites documentés ») ?**

- A. `name: "outil1"`, `description: "Fait des trucs avec les données."`
- B. `name: "gestion"`, `description: "Gère la météo, les clients, les calculs et les e-mails."`
- C. `name: "obtenir_meteo"`, `description: "Obtient la météo actuelle pour une ville donnée. Ne pas utiliser pour des moyennes historiques. Retourne température en Celsius et conditions. Si la ville est ambiguë, préciser le pays."`
- D. `name: "obtenir_meteo"`, `description: "Météo. Clé API : sk-prod-42abc."`

---

## Grille de correction

| Question | Réponse | Justification courte |
|---|---|---|
| Q1 | **B** | RAG = lire des documents ; outils = agir + lire des systèmes vivants. Ils sont complémentaires, pas concurrents. |
| Q2 | **C** | Le principe fondamental : le modèle n'exécute jamais rien, il émet une requête structurée ; votre code exécute. C'est l'architecture ET le modèle de sécurité. |
| Q3 | **B** | Le routage entre outils se fait par lecture des descriptions : elles doivent dire quoi, quand, quand ne pas, et les cas limites. |
| Q4 | **A** | Structure canonique : nom, description, schéma d'entrée en JSON Schema. |
| Q5 | **C** | `auto` = libre ; `any` = au moins un outil obligatoire ; outil nommé = outil précis imposé. |
| Q6 | **B** | L'`id` est le fil d'Ariane qui apparie `tool_use` et `tool_result`, surtout en parallèle. |
| Q7 | **C** | `is_error: true` + message riche = le modèle peut se rattraper ou se dégrader gracieusement. |
| Q8 | **C** | Un faux « OK » prive le modèle d'information : il comble le vide par une invention plausible — hallucination causée par le code. |
| Q9 | **A** | Moindre privilège : lecture seule, périmètre minimal. Chaque outil non exposé = une catégorie d'incidents impossible. |
| Q10 | **C** | Un outil, un nom clair, quand l'utiliser / ne pas l'utiliser, retour documenté, cas limite (ambiguïté). D contient un secret dans la description : faute grave. |

**Barème conseillé :** 1 point par question. ≥ 8/10 : acquis. 6–7/10 : revoir la boucle tool_use (slides 17–21). ≤ 5/10 : revoir la session, en particulier le principe fondamental (Partie B) avant la Session 6 sur les agents.

---

*Fin du quiz — Session 5.*
