Applied AI · Intermédiaire 🟡 · Session 8
✏️ Exercices
← Retour au programme 📄 Source .md

Exercices — Session 8 : Infrastructure & Déploiement

Programme : Applied AI — Niveau Intermédiaire — Instructeur : Yann Isola Rappel du message central : un prototype qui marche, c’est 20 % du travail. Les 80 % restants s’appellent production : authentification, latence, coûts, observabilité, sécurité, montée en charge.


Exercice 1 — Le calculateur de coûts (15 min, en binôme)

Contexte

Vous reprenez « SupportBot », l’assistant de support interne de la session. Il tourne en pilote depuis un mois et la direction demande une projection de coûts avant le déploiement à toute l’entreprise (5 000 employés).

Profil d’usage mesuré pendant le pilote :

Paramètre Valeur
Requêtes par jour (projection pleine échelle) 10 000
Prompt système + définitions d’outils + documents de référence (identiques à chaque requête) 6 000 tokens
Question de l’utilisateur + contexte RAG variable 1 500 tokens
Réponse générée (moyenne) 500 tokens

Grille tarifaire fictive (⚠ inspirée des ordres de grandeur réels mi-2026 — en production, vérifiez toujours la grille du jour) :

Modèle Entrée ($/million de tokens) Sortie ($/million de tokens) Entrée en cache ($/million)
Grand modèle (raisonnement complexe) 3,00 15,00 0,30
Modèle intermédiaire 1,00 5,00 0,10
Petit modèle (tâches simples) 0,25 1,25 0,025

Votre travail

Utilisez le calculateur de la page web (onglet « Calculateur de coûts ») ou faites les calculs à la main avec les formules ci-dessous.

Formule de base :

Coût journalier = requêtes/jour × [ (tokens_entrée / 1 000 000) × prix_entrée
                                  + (tokens_sortie / 1 000 000) × prix_sortie ]
Coût mensuel ≈ coût journalier × 30

Étape 1 — Le scénario naïf. Tout le trafic passe sur le grand modèle, sans caching. Les tokens d’entrée par requête = 6 000 + 1 500 = 7 500. → Calculez le coût journalier puis mensuel.

Étape 2 — Activer le prompt caching. Les 6 000 tokens stables sont facturés au tarif « en cache » (on néglige la première requête qui écrit le cache). Seuls les 1 500 tokens variables restent au plein tarif d’entrée. → Recalculez. Quel pourcentage d’économie sur la facture totale ?

Étape 3 — Ajouter le routage de modèles. L’analyse du pilote montre que 80 % des questions sont simples (horaires, procédures standard) et peuvent être servies par le petit modèle ; 20 % nécessitent le grand modèle. Le caching reste actif sur les deux. → Recalculez la facture mensuelle totale.

Étape 4 — Synthèse pour la direction. Remplissez le tableau :

Scénario Coût mensuel Économie vs naïf
Naïf (grand modèle, sans cache)
+ Prompt caching
+ Routage 80/20

Question bonus 🏆 : sans changer le volume de requêtes ni la grille tarifaire, quel levier supplémentaire pourrait encore réduire la facture ? (Indice : regardez la colonne « sortie » de la grille et la longueur moyenne des réponses.)

Corrigé indicatif (pour le formateur)


Exercice 2 — Concevoir une architecture de déploiement (13 min, en binôme)

Contexte

Choisissez un des trois scénarios (ou celui que le formateur vous attribue). Pour chacun, vous devez concevoir l’architecture de déploiement en assemblant les composants disponibles, puis justifier vos choix. Le constructeur d’architecture de la page web (onglet « Architecture ») vous permet de visualiser l’assemblage et l’estimation de latence.

Composants disponibles : client (navigateur/mobile) · passerelle API (API gateway) · backend applicatif · cache de réponses · file d’attente (queue) + workers · base de données · fournisseur LLM (API externe) · journalisation/monitoring.

Scénario A — Chatbot RH interne

Scénario B — API de résumé de documents à fort volume

Scénario C — Assistant temps réel intégré à un site public

Votre travail

  1. Dessinez l’architecture (sur la page web ou sur papier) : quels composants, dans quel ordre, qui parle à qui.
  2. Choisissez le patron de déploiement du backend — serverless, conteneur, ou instance GPU dédiée — et justifiez en 2 phrases.
  3. Répondez aux trois questions de robustesse :
    • Où est stockée la clé API du fournisseur LLM ? (Toute réponse impliquant le client est éliminatoire.)
    • Que se passe-t-il si le fournisseur LLM renvoie des erreurs 429 pendant 5 minutes ?
    • Quelle est la première métrique que vous mettez sous alerte ?
  4. Streaming ou pas ? Dites si votre scénario bénéficie du streaming SSE (Server-Sent Events, événements envoyés par le serveur), et pourquoi.

Grille d’auto-évaluation

Critère /❌
La clé API est côté serveur, jamais dans le client
Un composant de journalisation/monitoring est présent
La stratégie face aux erreurs 429 est explicite (backoff, file, message dégradé)
Le choix serverless/conteneur/GPU est justifié par le profil de trafic
Le scénario B utilise une file d’attente (si scénario B choisi)
La décision streaming est cohérente avec le cas d’usage

Corrigé indicatif (pour le formateur)


Exercice 3 — Concevoir un tableau de bord de monitoring (devoir à la maison ou bonus, ~30 min)

Contexte

SupportBot est en production depuis deux semaines. Hier, un utilisateur a signalé « c’est lent et parfois ça répond n’importe quoi ». Vous n’avez actuellement aucun tableau de bord. Votre mission : concevoir (sur papier ou avec l’outil de votre choix) le tableau de bord de monitoring que l’équipe consultera chaque matin, en vous inspirant de la maquette de la page web (onglet « Monitoring »).

Votre travail

  1. Choisissez 6 à 8 métriques, pas plus. Pour chacune, précisez :

    • le nom et l’unité ;
    • la source (journal des requêtes, API du fournisseur, retour utilisateur…) ;
    • la fenêtre d’observation (temps réel, horaire, quotidienne) ;
    • le seuil d’alerte et l’action associée (une alerte sans action documentée est interdite).
  2. Organisez-les en trois zones sur votre maquette :

    • 🟢 Santé — le service fonctionne-t-il ? (disponibilité, taux d’erreur…)
    • ⏱️ Performance — est-il assez rapide ? (latence p50/p95/p99, TTFT…)
    • 💰 Coûts — combien brûle-t-on ? (tokens/jour, coût cumulé vs budget, taux de cache hit…)
  3. Rédigez les 3 règles d’alerte prioritaires au format :

    SI <métrique> <condition> PENDANT <durée> ALORS <qui est prévenu> FAIT <quoi>.

  4. Question piège : votre tableau de bord détecte-t-il le problème « parfois ça répond n’importe quoi » ? Si non (probable), que faut-il ajouter ? (Indice : la qualité des réponses ne se mesure ni en millisecondes ni en tokens — pensez aux évaluations continues et au retour utilisateur 👍/👎.)

Grille d’évaluation (pour le formateur)

Critère Points
6–8 métriques pertinentes, avec unité et source /4
Latence exprimée en percentiles (pas seulement en moyenne) /2
Chaque alerte a un seuil, une durée ET une action documentée /3
Zone coûts : budget de tokens + taux de cache présents /2
Question piège : identifie la limite (qualité ≠ métriques techniques) et propose un signal qualité (évals en continu, feedback utilisateur, échantillonnage manuel) /4
Clarté générale de la maquette /1
Total /16

Éléments de corrigé (pour le formateur)

Métriques attendues (toute sélection cohérente est acceptable) : disponibilité (%), taux d’erreur (% sur 5 min), taux d’erreurs 429 spécifiquement, latence p50/p95/p99 (s), TTFT p95 (ms), tokens consommés/jour vs budget (%), coût cumulé mensuel ($), taux de cache hit (%), répartition du routage petit/grand modèle (%), profondeur de file d’attente (si file), score moyen des évals continues, taux de 👍 utilisateur.

Exemple de règle d’alerte bien formée :

SI taux d'erreur > 2 % PENDANT 5 minutes ALORS l'ingénieur d'astreinte reçoit une notification FAIT vérifier le statut du fournisseur LLM, activer le mode dégradé si panne confirmée.

Réponse à la question piège : non — les métriques techniques ne voient pas la qualité. Ajouter : (1) un bouton 👍/👎 dans l’interface, agrégé quotidiennement ; (2) une éval automatique sur un échantillon de X % des réponses en production (juge LLM ou règles) ; (3) une revue humaine hebdomadaire d’un échantillon aléatoire. C’est le pont vers la Session 9.