Applied AI · Avancé 🔴 · Session 8
✏️ Exercices
← Retour au programme 📄 Source .md

Exercices — Niveau Avancé, Session 8

« Contexte, fiabilité & provenance »

Programme : Applied AI — Yann Isola Public : Architectes solutions — préparation Claude Certified Architect Durée totale estimée : 3 h 30 à 4 h 30 (individuel ou binôme) Prérequis : clé API Anthropic, Python 3.10+, SDK (SDK = Software Development Kit) anthropic, la session 8 suivie, la page web interactive de la session pour vérifier vos calculs.

⚠ Tous les chiffres de tarification, tailles de fenêtres, quotas et SLA (SLA = Service Level Agreement, engagement de niveau de service) utilisés ci-dessous sont volatils. Notez systématiquement la date et la source de la grille tarifaire que vous utilisez — c’est même une exigence explicite de l’exercice 1.


Exercice 1 — Calculateur de budget de contexte (60-75 min)

Contexte

Votre équipe déploie « ComplianceScan », l’agent d’investigation de conformité vu en session. Avant toute ligne de code d’agent, l’architecte que vous êtes doit répondre à trois questions : combien de tours l’agent peut-il tenir ? combien coûte une investigation ? quelle stratégie de contexte s’impose ? Vous allez construire l’outil qui répond — un calculateur de budget de contexte réutilisable.

Données d’entrée (profil de charge)

Poste Valeur
Fenêtre de contexte du modèle 200 000 tokens ⚠
Prompt système + politique de conformité 3 200 tokens
Définitions d’outils (12 outils) 4 100 tokens
Tour utilisateur/agent moyen (question + raisonnement + appel d’outil) 800 tokens
Résultat d’outil brut moyen 2 500 tokens
Résultat d’outil filtré par hook PostToolUse 400 tokens
Réserve de sortie (max_tokens) 8 000 tokens
Investigation type 150 tours, 1 appel d’outil par tour

Travail demandé

  1. Modèle de calcul. Écrivez un module Python context_budget.py avec une fonction simulate(profile, strategy) -> Report qui simule tour par tour la taille du contexte et retourne : le tour de saturation (ou None), le total de tokens d’entrée facturés cumulés sur l’investigation (rappel : à chaque tour, tout le contexte est renvoyé et refacturé), et la répartition finale par poste (système / outils / historique / résultats d’outils).

  2. Scénario A — brut, sans stratégie. Résultats d’outils bruts, aucun filtrage, aucune compression. À quel tour l’agent sature-t-il ? L’investigation de 150 tours est-elle possible ?

  3. Scénario B — hook PostToolUse. Résultats filtrés (400 tokens au lieu de 2 500). Nouveau tour de saturation ? Facteur de gain ?

  4. Scénario C — hybride (hook + résumé + fenêtre glissante). En plus du filtrage : tous les 30 tours, les tours au-delà des 10 derniers sont compressés en un résumé de 1 500 tokens (le résumé précédent est absorbé dans le nouveau). Modélisez aussi le coût de l’appel de compression lui-même. L’investigation de 150 tours passe-t-elle ? Avec quelle marge ?

  5. Chiffrage économique. Pour chaque scénario faisable, calculez le coût d’une investigation complète, puis de 200 investigations/jour, en utilisant la grille tarifaire officielle du jour (datez et sourcez ⚠). Bonus : ajoutez la variante « prompt système + définitions d’outils en cache » et quantifiez l’économie.

  6. Note d’architecture (1 page max). Votre recommandation : quelle stratégie, quels seuils (palier de compression, taille de fenêtre verbatim, plafonds du hook), quels risques résiduels (que perd-on dans les résumés ? comment le scratchpad compense-t-il ?).

Critères de réussite

Pour aller plus loin

Comparez vos estimations heuristiques (~4 caractères/token en anglais, ratio différent en français) avec l’endpoint officiel de comptage de tokens sur 5 messages réels. Quel écart ? Quelle marge de sécurité en déduisez-vous pour votre simulateur ?


Exercice 2 — Conception d’une chaîne de provenance (75-90 min)

Contexte

L’équipe conformité accepte de déployer ComplianceScan à une condition posée par l’audit interne : « Pour tout rapport généré, nous devons pouvoir remonter de chaque affirmation jusqu’à sa source primaire, reconstituer ce que le modèle a vu, et savoir quelle version du système a produit quoi. » Vous concevez et prototypez la chaîne de provenance complète.

Travail demandé

  1. Schéma de sortie avec attribution. Définissez un schéma JSON (JSON = JavaScript Object Notation) de rapport où chaque finding porte : l’affirmation, un pointeur de source résoluble (tool, call_id, record_id(s)), un niveau de confiance (établi / à vérifier / inféré), et où l’enveloppe porte : prompt_version (hash + identifiant sémantique), identifiant de modèle complet, température, horodatage, identifiant de corrélation d’investigation.

  2. Prompt de génération. Écrivez le prompt (système + structure XML d’injection séparant <contexte_systeme>, <donnees>, <instructions>) qui contraint le modèle à produire ce schéma, avec la règle explicite : aucune affirmation sans pointeur de source ; en l’absence de source, l’affirmation passe en inféré avec justification.

  3. Journal d’audit. Implémentez un AuditLog (fichiers JSON dans une arborescence audit/<date>/<investigation_id>/) qui journalise : prompt système (avec hash), chaque message, chaque appel d’outil — arguments, résultat brut, résultat filtré entré au contexte (le triplet args/raw/ctx), et le manifeste final (modèle, version, paramètres, hashes).

  4. Vérificateur de citations. Écrivez verify_provenance(report, audit_log) -> VerificationResult qui, pour chaque finding : (a) vérifie que le call_id existe dans le journal ; (b) vérifie que les record_id cités apparaissent bien dans le résultat brut de cet appel ; © signale toute citation orpheline. Testez-le en corrompant volontairement un rapport (inventez un record_id plausible — simulez l’hallucination de citation) et vérifiez que le contrôle le détecte.

  5. Scénario d’audit à blanc. En binôme : l’un joue l’auditeur et choisit une affirmation au hasard dans un rapport généré ; l’autre doit, en moins de 5 minutes et uniquement avec le journal, produire : la source primaire, ce que le modèle a réellement vu (ctx vs raw), et la version du prompt. Documentez ce qui a manqué ou ralenti.

  6. Question de fond (10 lignes). Votre direction demande : « Peut-on garantir la regénération à l’identique d’un rapport pour prouver son origine ? » Rédigez la réponse honnête de l’architecte : ce que température 0 + version épinglée + seed ⚠ garantissent, ce qu’ils ne garantissent pas (« déterministe-ish »), et pourquoi le journal d’audit — pas la regénération — est la véritable garantie de conformité.

Critères de réussite

Pour aller plus loin

Ajoutez un chaînage d’intégrité : chaque entrée du journal inclut le hash de l’entrée précédente (chaîne de hachage). Que gagne-t-on face à un auditeur ? Que ne prouve-t-on toujours pas ?


Exercice 3 — Pipeline de traitement batch (60-90 min)

Contexte

Nouvelle politique de conformité v3.3 : les 80 000 dossiers clients doivent être re-notés cette semaine. Appels synchrones = trop lent, trop cher, rate limits. Vous construisez le pipeline complet sur la Message Batches API : soumission, suivi, dépouillement, reprise sur erreur — avec optimisation batch + cache et chiffrage à l’appui.

(Pour l’exercice, travaillez sur 200 dossiers synthétiques ; le code doit être dimensionné pour 80 000.)

Travail demandé

  1. Génération du jeu. Script make_dossiers.py : 200 dossiers synthétiques JSON (id, pays, activité déclarée, liste de transactions, drapeaux divers) — dont ~10 volontairement malformés (champ manquant, encodage douteux) pour tester la robustesse aval.

  2. Soumission. Script submit_batch.py :

    • construit les requêtes avec un custom_id robuste (convention à documenter : p. ex. v33-{dossier_id}-{hash_court_du_contenu} — justifiez chaque composant) ;
    • place la politique de conformité (bloc système long et identique) en cache (cache_control) ;
    • découpe en lots si nécessaire (limite de 100 000 requêtes/batch ⚠ — votre code doit gérer le découpage même si le jeu de test tient en un lot) ;
    • persiste localement le manifeste de soumission : batch_id, liste des custom_id, horodatage, version de prompt (provenance !).
  3. Suivi. Script poll_batch.py : interroge le statut à intervalle raisonnable (backoff progressif, pas de boucle serrée), journalise les transitions in_progressended.

  4. Dépouillement et reprise. Script collect_results.py :

    • dépouille les résultats en rattachant chaque résultat à son dossier via custom_id (rappel : l’ordre n’est pas garanti) ;
    • route par type : succeeded → base de résultats ; errored → file de retry avec le détail d’erreur ; expired / canceled → file de re-soumission ;
    • est idempotent : relançable après plantage à mi-course sans double-traitement (justifiez le mécanisme — marqueurs de progression, upsert par custom_id…) ;
    • produit un rapport de complétude : soumis / réussis / échoués / manquants, avec la liste nominative des manquants.
  5. Chiffrage comparatif. Avec la grille tarifaire du jour (datée, sourcée ⚠), calculez pour 80 000 dossiers (système partagé 3 200 tokens, entrée variable ~900 tokens, sortie ~350 tokens) le coût dans 4 configurations : synchrone sans cache / synchrone + cache / batch sans cache / batch + cache. Présentez le tableau et le facteur d’économie total. Vérifiez vos ordres de grandeur avec le calculateur de la page web de la session.

  6. Note d’exploitation (½ page). SLA 24 h ⚠ : quelles conséquences sur la planification (fenêtre de nuit, marge, criticité) ? Que se passe-t-il si 3 % des requêtes expirent ? Quel est votre critère de « campagne terminée » ?

Critères de réussite

Pour aller plus loin

Branchez la sortie de l’exercice 2 : chaque résultat de batch alimente le journal d’audit et le schéma de provenance. Un custom_id devient alors le fil qui relie dossier → requête → réponse → rapport → audit. C’est exactement l’architecture attendue d’un Claude Certified Architect : les trois briques de la session n’en font qu’une.


Barème indicatif (si évaluation notée)

Exercice Points Dont
1 — Budget de contexte 30 Simulateur 12, scénarios 10, note d’architecture 8
2 — Chaîne de provenance 40 Schéma 8, journal 10, vérificateur 12, audit à blanc 5, reproductibilité 5
3 — Pipeline batch 30 Soumission 8, dépouillement/reprise 12, chiffrage 6, exploitation 4

Seuil de validation : 60/100. La détection de la citation hallucinée (ex. 2.4) et l’idempotence du dépouillement (ex. 3.4) sont éliminatoires si absentes : ce sont les deux réflexes non négociables du métier.