Guide enseignant â Session 3 (Niveau intermĂ©diaire)
Sortie structurée, température & évaluations
Programme : Applied AI â Yann Isola DurĂ©e : 2 h 00 PrĂ©requis : Sessions 1â2 (anatomie dâun prompt, contexte, rĂŽles system/user, notions dâAPI â Application Programming Interface, interface de programmation applicative) Module source : Module 2, partie 2
1. Objectifs pédagogiques
Ă la fin de la session, chaque participant doit ĂȘtre capable de :
- Expliquer pourquoi une sortie JSON (JavaScript Object Notation, format dâĂ©change de donnĂ©es structurĂ©es) « gĂ©nĂ©ralement valide » est inacceptable en production, et citer le mĂ©canisme qui garantit la validitĂ© syntaxique (function calling / sortie structurĂ©e contrainte par schĂ©ma).
- Distinguer erreur syntaxique (JSON malformé) et erreur sémantique (JSON valide mais contenu faux), et associer à chacune la bonne parade.
- Démystifier la température : température 0 = déterministe, PAS = correct. Elle contrÎle la variabilité, pas la véracité.
- DĂ©crire la pile dâĂ©valuation Ă 4 Ă©tages : assertions â golden set â juge LLM (Large Language Model, grand modĂšle de langage) â Ă©valuation humaine.
- Construire un prompt dâextraction robuste qui survit aux cas limites (montants en lettres, tentatives dâinjection, chaĂźnes vides) â câest le labo de la session.
ThĂšse centrale de la session (Ă marteler) : « La suite dâĂ©valuation EST la spĂ©cification. » Un produit IA sans Ă©vals, câest un produit dont personne ne connaĂźt le comportement rĂ©el. « Ăa avait lâair bien dans la dĂ©mo » est la cause de mortalitĂ© n°1 des produits IA.
2. Matériel
- Vidéoprojecteur + slides (
slides/slides.md) - Page interactive (
webpage/index.html) â fonctionne hors ligne, Ă ouvrir dans un navigateur ; contient le validateur de schĂ©ma JSON, le simulateur de dashboard dâĂ©vals et le comparateur de tempĂ©rature - Feuilles dâexercices imprimĂ©es ou partagĂ©es (
exercises/exercises.md) - AccĂšs Ă un playground LLM (Claude, ChatGPT, Mistral⊠peu importe) pour le labo â 1 poste pour 2 participants suffit
- Quiz (
quiz/quiz.md) â Ă faire en fin de sĂ©ance ou en asynchrone
3. Déroulé minuté (120 min)
Bloc A â Accroche : le JSON qui casse tout (0:00 â 0:15, 15 min)
Ouverture choc (5 min). Racontez lâhistoire type : une Ă©quipe dĂ©ploie un extracteur de factures. En dĂ©mo, le modĂšle renvoie du JSON parfait 50 fois de suite. En production, Ă la 3 412á” facture, il renvoie :
Voici le JSON demandé :
```json
{"montant": 1250, "devise": "EUR"
Virgule manquante, prĂ©ambule verbeux, bloc de code non fermĂ©. Le parseur crashe, le pipeline sâarrĂȘte Ă 2 h du matin. Question Ă la salle : « Qui a dĂ©jĂ vu un LLM ajouter du texte avant le JSON alors quâon lui a dit ârĂ©ponds UNIQUEMENT en JSONâ ? » (Les mains se lĂšvent â câest universel.)
Message clĂ© (10 min). « GĂ©nĂ©ralement valide » Ă volume = Ă©chec certain. Si le modĂšle produit du JSON valide 99 % du temps et que vous traitez 10 000 documents/jour, vous avez ~100 crashs par jour â (chiffre illustratif â le taux rĂ©el varie selon modĂšle et prompt). La solution nâest pas un meilleur prompt, câest une contrainte structurelle.
Note enseignant : résistez à la tentation de montrer la solution tout de suite. Laissez les participants proposer leurs rustines habituelles (regex, retry aveugle, « je lui redemande gentiment »). Vous les démonterez au bloc B.
Bloc B â Sortie structurĂ©e : function calling & schĂ©mas (0:15 â 0:45, 30 min)
B1. Les rustines et pourquoi elles fuient (5 min).
- Regex pour extraire le JSON du texte â fragile, casse sur les JSON imbriquĂ©s.
- « RĂ©ponds uniquement en JSON » dans le prompt â amĂ©liore, ne garantit pas.
- Retry aveugle â coĂ»te des tokens, ne converge pas toujours.
B2. La vraie solution : tool_use / function calling (15 min).
Expliquez le mĂ©canisme : au lieu de demander du texte « qui ressemble Ă du JSON », on dĂ©clare un outil (tool) avec un schĂ©ma JSON (JSON Schema : standard de description de la structure attendue â types, champs obligatoires, Ă©numĂ©rations). Le fournisseur du modĂšle contraint le dĂ©codage : les tokens gĂ©nĂ©rĂ©s ne peuvent former quâun document conforme au schĂ©ma. Lâerreur syntaxique devient structurellement impossible.
Exemple Ă projeter (extraction de note de frais) :
{
"name": "extraire_note_de_frais",
"description": "Extrait les champs d'une note de frais",
"input_schema": {
"type": "object",
"properties": {
"montant": { "type": "number", "description": "Montant TTC en valeur numérique" },
"devise": { "type": "string", "enum": ["EUR", "USD", "GBP", "CHF"] },
"date": { "type": "string", "description": "Format ISO 8601 : AAAA-MM-JJ" },
"categorie": { "type": "string", "enum": ["transport", "repas", "hebergement", "autre"] }
},
"required": ["montant", "devise", "date", "categorie"]
}
}
Points dâinsistance :
enum: le modÚle ne peut PAS inventer une catégorie hors liste.required: les champs obligatoires seront présents (syntaxiquement).- Tous les grands fournisseurs offrent une variante : tool use (Anthropic), function calling et structured outputs (OpenAI), function calling (Google, Mistral). Les noms diffÚrent, le principe est identique.
B3. La limite fondamentale (10 min) â transition vers le bloc C.
Ăcrivez au tableau, en grand :
Le schéma garantit la FORME, jamais le FOND.
Exemple concret : le reçu dit « quarante-deux euros ». Le modĂšle renvoie {"montant": 402, "devise": "EUR", ...} â JSON parfaitement valide, contenu faux. Câest une erreur sĂ©mantique. Le validateur de schĂ©ma ne la verra jamais.
DĂ©mo interactive : ouvrez webpage/index.html, onglet « Validateur de schĂ©ma ». Faites valider un JSON syntaxiquement correct mais sĂ©mantiquement faux â le validateur dit . Effet garanti.
Bloc C â Erreurs sĂ©mantiques : valider, rĂ©essayer, corriger (0:45 â 1:05, 20 min)
C1. Taxonomie (5 min). Tableau Ă deux colonnes :
| Erreur syntaxique | Erreur sémantique | |
|---|---|---|
| Exemple | Virgule manquante, champ absent | Montant faux, date hallucinée, catégorie plausible mais erronée |
| Détection | Parseur / validateur de schéma | RÚgles métier, recoupement, juge LLM, humain |
| Parade | Function calling (élimination structurelle) | Validation + retry avec feedback + garde-fous métier |
C2. Le pattern « validate â retry with feedback » (10 min).
Pseudo-code Ă projeter :
resultat = appel_llm(document, schema)
erreurs = valider_metier(resultat) # ex : montant > 0, date <= aujourd'hui,
# devise cohérente avec le pays
si erreurs:
resultat = appel_llm(document, schema,
feedback="Ta réponse précédente contenait : " + erreurs
+ ". Corrige et renvoie.")
si toujours en erreur aprĂšs N tentatives:
escalader_vers_humain(document)
Points clés :
- Le feedback doit ĂȘtre spĂ©cifique (« le montant 402 ne correspond Ă aucun nombre du document ») â un retry aveugle sans feedback ne converge presque jamais.
- Toujours un plafond de tentatives (2â3) et une voie dâescalade humaine. Boucle infinie = facture API infinie.
- Les validations métier sont du code classique, déterministe, gratuit : elles attrapent une énorme part des erreurs sémantiques (montants négatifs, dates futures, totaux incohérents).
C3. Mini-exercice Ă©clair (5 min). Ă lâoral : « Pour un extracteur de notes de frais, citez 3 rĂšgles de validation mĂ©tier. » Attendus : montant > 0 ; date pas dans le futur ; date pas antĂ©rieure Ă N annĂ©es ; devise â liste autorisĂ©e ; TVA †montant TTC ; etc.
PAUSE (1:05 â 1:15, 10 min)
Bloc D â TempĂ©rature : dĂ©terminisme â exactitude (1:15 â 1:30, 15 min)
D1. Ce que fait vraiment la température (7 min).
Le modÚle produit une distribution de probabilité sur le prochain token. La température remodÚle cette distribution :
- T = 0 : on prend (quasi) toujours le token le plus probable â sorties trĂšs reproductibles.
- T Ă©levĂ©e (0.8â1.2) : les tokens moins probables sont davantage tirĂ©s â variĂ©tĂ©, crĂ©ativitĂ©, mais aussi dĂ©rive.
Le piĂšge Ă dĂ©truire (Ă dire mot pour mot) : « TempĂ©rature 0 ne rend pas le modĂšle plus intelligent ni plus factuel. Si le token le plus probable est faux, T = 0 vous donne la mĂȘme erreur, Ă chaque fois, avec une rĂ©gularitĂ© parfaite. Vous obtenez un mensonge reproductible, pas une vĂ©ritĂ©. »
La tempĂ©rature contrĂŽle la variabilitĂ©, pas lâexactitude.
Note enseignant : prĂ©cisez aussi que mĂȘme Ă T = 0, le dĂ©terminisme absolu nâest pas garanti chez tous les fournisseurs (parallĂ©lisme GPU â Graphics Processing Unit, processeur graphique â, mises Ă jour de modĂšles). « Quasi-dĂ©terministe » est le terme honnĂȘte.
D2. Réglages pratiques (3 min).
| Cas dâusage | TempĂ©rature conseillĂ©e â (repĂšres usuels, Ă ajuster) |
|---|---|
| Extraction, classification, sortie structurĂ©e | 0 â 0.2 |
| RĂ©daction assistĂ©e, reformulation | 0.5 â 0.8 |
| Brainstorming, crĂ©ativitĂ© | 0.9 â 1.2 |
D3. DĂ©mo (5 min). Ouvrez lâonglet « Comparateur de tempĂ©rature » de la page interactive : mĂȘme prompt simulĂ© Ă T = 0 (3 sorties identiques, dont une erreur reproduite 3 fois) vs T = 1 (3 sorties diffĂ©rentes). Faites verbaliser : « Que remarquez-vous sur lâerreur Ă T = 0 ? »
Bloc E â Les Ă©valuations : la suite dâĂ©vals EST la spec (1:30 â 1:50, 20 min)
E1. La thĂšse (5 min).
En logiciel classique, la spec dit ce que le code doit faire, et les tests le vĂ©rifient. Avec les LLM, le comportement est non dĂ©terministe et non spĂ©cifiable par le code : la seule dĂ©finition opĂ©rationnelle de « ça marche » est la suite dâĂ©valuation. DâoĂč la thĂšse :
« La suite dâĂ©vals EST la spec. » Si un comportement nâest pas couvert par une Ă©val, vous ne savez pas sâil fonctionne. « Ăa avait lâair bien dans la dĂ©mo » = vous avez testĂ© 5 cas choisis par la personne qui voulait que ça marche.
E2. La pile dâĂ©valuation Ă 4 Ă©tages (10 min).
- Assertions (code, gratuit, instantanĂ©) : le JSON parse-t-il ? Les champs requis sont-ils lĂ ? Le montant est-il > 0 ? â attrape le grossier, tourne Ă chaque commit.
- Golden set (50 Ă 500 exemples â ordre de grandeur usuel) : paires entrĂ©e â sortie attendue, validĂ©es par un humain. Inclut dĂ©libĂ©rĂ©ment les cas limites et les cas adverses. On mesure un taux de rĂ©ussite ; toute modification de prompt ou de modĂšle repasse le golden set.
- Juge LLM (LLM-as-judge) : un second modĂšle note les sorties selon une grille (fidĂ©litĂ©, complĂ©tude, ton). Scalable, mais le juge a ses propres biais â il faut calibrer le juge contre des jugements humains avant de lui faire confiance.
- Ăvaluation humaine : Ă©chantillonnage rĂ©gulier en production, revue des cas escaladĂ©s. CoĂ»teux, lent, mais câest la vĂ©ritĂ© terrain qui recalibre tout le reste.
E3. Métriques selon le type de systÚme (5 min).
- RAG (Retrieval-Augmented Generation, gĂ©nĂ©ration augmentĂ©e par rĂ©cupĂ©ration de documents) : fidĂ©litĂ© (faithfulness) â la rĂ©ponse est-elle soutenue par les documents rĂ©cupĂ©rĂ©s, sans invention ?
- Agents : taux de complĂ©tion de tĂąche â la tĂąche est-elle rĂ©ellement terminĂ©e, pas juste « une rĂ©ponse a Ă©tĂ© produite » ?
- SystĂšmes avec humain dans la boucle : taux dâescalade â quelle proportion part vers un humain ? Trop haut = systĂšme inutile ; trop bas = vĂ©rifier quâil nâavale pas des cas quâil devrait escalader.
DĂ©mo : onglet « Dashboard dâĂ©vals » de la page interactive. Lancez le prompt v1 (naĂŻf) contre le jeu de test : les cas limites Ă©chouent. Passez au prompt v3 (durci) : le taux monte. Le message : on ne compare pas des impressions, on compare des taux de rĂ©ussite sur le mĂȘme jeu de test.
Bloc F â Labo : lâextracteur de notes de frais indestructible (1:50 â 2:00, 10 min en sĂ©ance + suite en exercices)
Lancez lâexercice 3 (labo). En sĂ©ance : prĂ©sentation du jeu de test piĂ©gĂ© (montants en lettres, injection, chaĂźne vide) et premier tour dâitĂ©ration. La suite se fait en autonomie ou en dĂ©but de session suivante.
ClĂŽture (2 min). Les 3 phrases Ă retenir :
- Le schéma garantit la forme, jamais le fond.
- Température 0 = reproductible, pas correct.
- Pas dâĂ©val = pas de spec = pas de produit.
Distribuez le quiz (ou lien) + exit tickets.
4. Notes pédagogiques & piÚges fréquents
- PiĂšge 1 : des participants concluent « avec function calling, plus besoin de valider ». Faux â recadrez immĂ©diatement avec lâexemple « quarante-deux â 402 ».
- PiĂšge 2 : confusion tempĂ©rature / top-p / top-k. Restez sur la tempĂ©rature ; mentionnez juste que dâautres paramĂštres dâĂ©chantillonnage existent et quâon ne les cumule pas au hasard.
- PiĂšge 3 : « 50â500 exemples, câest trop de travail ». RĂ©ponse : commencez Ă 20, enrichissez avec chaque bug de production. Un golden set vivant vaut mieux quâun golden set parfait jamais construit.
- PiĂšge 4 : le juge LLM prĂ©sentĂ© comme oracle. Rappelez : un juge non calibrĂ©, câest une opinion automatisĂ©e.
- Public hĂ©tĂ©rogĂšne : les non-dĂ©veloppeurs peuvent faire tout le labo dans un playground sans Ă©crire de code â le schĂ©ma se colle dans lâinterface dâoutils, les validations mĂ©tier se raisonnent sur papier.
5. Exit tickets (5 questions, 5 min en fin de séance)
Chaque participant répond par écrit (papier ou formulaire) :
-
Expliquez en une phrase pourquoi « le modĂšle renvoie du JSON valide 99 % du temps » est un problĂšme en production. Attendu : Ă volume Ă©levĂ©, 1 % dâĂ©chec = pannes quotidiennes ; seule la contrainte par schĂ©ma (function calling) Ă©limine la classe dâerreur.
-
Le modĂšle renvoie
{"montant": 402}pour un reçu de « quarante-deux euros ». Syntaxique ou sémantique ? Quelle parade ? Attendu : sémantique ; validation métier / recoupement + retry avec feedback spécifique, escalade humaine si échec répété. -
Vrai ou faux : « Ă tempĂ©rature 0, le modĂšle ne fait plus dâerreurs factuelles. » Justifiez. Attendu : Faux. T = 0 rend lâerreur reproductible, pas absente. La tempĂ©rature contrĂŽle la variabilitĂ©, pas lâexactitude.
-
Citez les 4 Ă©tages de la pile dâĂ©valuation, dans lâordre coĂ»t croissant. Attendu : assertions â golden set â juge LLM â Ă©valuation humaine.
-
Votre assistant RAG répond avec fluidité mais invente des références. Quelle métrique surveiller, et par quel étage de la pile la mesurer en continu ? Attendu : la fidélité (faithfulness) ; juge LLM calibré (avec échantillonnage humain périodique).
6. Liens avec le reste du programme
- Session 2 (contexte & prompts) : les techniques de prompt restent nĂ©cessaires â le schĂ©ma contraint la forme, le prompt guide le fond.
- Session 4 (RAG) : la métrique de fidélité introduite ici devient centrale.
- Sessions agents : le taux de complĂ©tion de tĂąche et lâescalade y seront instrumentĂ©s en pratique.