AI Cert Prep
Saisissez un mot-clé pour rechercher dans la documentation.

Domaines

D2 · Model Selection and Optimization

Fondamentaux des LLM, options et paliers de modèles, tarification et calcul de coût, changements incompatibles et migration, budgétisation des tokens, caching, batching, routage et leviers de latence.

Ce domaine représente environ 9 items sur 53. Il vérifie que vous savez choisir le modèle le moins cher qui atteint le niveau de qualité, puis faire baisser coût et latence avec le caching, le batching, le routage et le contrôle de sortie – tout en épinglant les versions et en gérant les changements incompatibles entre versions. Attendez-vous à des scénarios de calcul de coût et à des questions d’arbitrage « quel modèle / quel levier ».

Objectifs d’apprentissage

À la fin de cette page, vous devriez être capable de :

  1. Expliquer les fondamentaux des LLM : tokens, coût de tokenisation, fenêtre de contexte, échantillonnage et non-déterminisme.
  2. Configurer les options de modèle : fast mode, thinking étendu/adaptatif, niveaux d’effort, et où budget_tokens s’applique encore.
  3. Comparer les paliers de modèles (Haiku 4.5, Sonnet 5, Opus 5, Fable 5.1) sur la capacité, le prix et la latence, et effectuer des calculs de coût détaillés.
  4. Identifier les changements incompatibles entre versions et planifier l’épinglage et la migration.
  5. Appliquer les leviers de coût : budgétisation des tokens, prompt caching, batching, et routage/cascade.
  6. Appliquer les leviers de latence : streaming, modèles plus petits, sortie plus courte, caching.

2.1 LLM fundamentals

  • Les tokens sont des unités sous-lexicales ; la facturation et les limites sont en tokens, pas en caractères. Environ 1 token ≈ 4 caractères ≈ 0,75 mot en anglais.
  • Coût de tokenisation : l’entrée comme la sortie sont mesurées en tokens ; des prompts et des sorties plus longs coûtent plus cher et ajoutent de la latence.
  • La fenêtre de contexte est le total de tokens (entrée + sortie) que le modèle peut prendre en compte dans une requête – 1M sur Fable 5.1 / Opus 5 / Sonnet 5, 200k sur Haiku 4.5. max_tokens plafonne la sortie dans cette fenêtre.
  • Échantillonnage : le modèle produit une distribution de probabilité ; temperature et top_p contrôlent la façon dont elle est échantillonnée. Plus bas = plus déterministe.
  • Non-déterminisme : même à temperature: 0, les sorties ne sont pas garanties identiques octet par octet entre exécutions ou versions de modèle. Concevez en conséquence – validez la sortie, ne supposez pas de répétitions exactes.

Signal d’examen

« Pourquoi le même prompt a-t-il donné une réponse différente ? » → non-déterminisme ; réduisez-le avec temperature: 0 et un snapshot épinglé, mais ne supposez jamais une répétabilité parfaite.


2.2 Model options: thinking, effort and fast mode

OptionWhat it doesWhere
thinking: {type: 'adaptive'}Le modèle décide combien raisonnerTous les modèles actuels
thinking: {type: 'enabled', budget_tokens: N}Budget de raisonnement fixeHaiku 4.5 uniquement
Effort low|medium|high|xhighAjuster la profondeur de raisonnement ; high par défautOpus 5 / Sonnet 5 / Fable 5.1 (pas Haiku)
Fast modeRéponses optimisées pour la latenceUsage sensible à la latence
  • Utilisez l’effort xhigh uniquement pour les travaux de code/agentiques les plus ardus (Opus 5 / Fable 5.1) – il coûte plus de tokens de thinking et ajoute de la latence.
  • budget_tokens renvoie 400 sur Fable 5.x / Opus 5 / Sonnet 5. Seul Haiku 4.5 l’accepte encore, et Haiku n’a aucun paramètre effort.
  • Fable 5.1 raisonne toujours ; vous ne pouvez pas le désactiver.

2.3 Model tiers, pricing and trade-offs

ModelIDContext / max outIn / Out per MTokCache readUse when
Fable 5.1claude-fable-5-11M / 128k$10 / $50$0.25Le plus capable ; thinking toujours activé ; harnais append-only
Opus 5claude-opus-51M / 128k$5 / $25—Code agentique complexe, travail d’entreprise
Sonnet 5claude-sonnet-51M / 128k$2 / $10—Meilleur équilibre vitesse/intelligence (par défaut)
Haiku 4.5claude-haiku-4-5200k / 64k$1 / $5—Le plus rapide/le moins cher ; tâches simples à fort volume

Règle générale : commencez à Sonnet 5 ; descendez à Haiku 4.5 pour le travail simple à fort volume ; passez à Opus 5 pour les tâches de code/agentiques difficiles ; réservez Fable 5.1 au raisonnement le plus exigeant (en acceptant ses contraintes et sa rétention de 30 jours).

Worked cost calculation

Une tâche envoie 3 000 tokens d’entrée et génère 500 tokens de sortie, 20 000 fois/jour.

ModelInput cost/dayOutput cost/dayTotal/day
Haiku 4.53 000 × 20 000 × $1 / 1e6 = $60500 × 20 000 × $5 / 1e6 = $50$110
Sonnet 5$120$100$220
Opus 5$300$250$550

Si Haiku 4.5 atteint la qualité, il est 5× moins cher qu’Opus 5 ici. Ne prenez jamais par défaut le modèle le plus capable pour un travail simple à fort volume.

Signal d’examen

« Fort volume + tâche simple + sensible au coût » → Haiku 4.5. « Code agentique complexe multi-étapes » → Opus 5 (ou Fable 5.1 pour le plus ardu). « Défaut équilibré » → Sonnet 5.


2.4 Breaking changes across releases

ChangeEffectMitigation
budget_tokens retiré (Fable 5.x, Opus 5, Sonnet 5, Opus 4.7–4.8)400 si envoyéUtiliser thinking: {type: 'adaptive'}
Fable 5.1 : tool_choice: 'any' et {type:'tool'} forcé renvoient 400Impossible de forcer un outilUtiliser auto + instruction, strict: true, ou les sorties structurées
Fable 5.1 : liaison du thinkingBlocs de thinking lisibles seulement par le modèle producteur ou plus récent ; suppression silencieuse au repliNe pas se replier silencieusement en cours de conversation
Fable 5.1 : append-onlyÉditer/réordonner des tours antérieurs invalide le thinking ultérieurFiger system/tools ; élaguer via édition de contexte/compaction
Opus 4.1 retiré le 2026-08-05Les requêtes échouentMigrer vers un snapshot actuel

Fable 5.1 tool_choice

Sur Fable 5.1, tool_choice: 'any' et le forçage d’un outil spécifique renvoient tous deux 400. Si votre extraction repose sur le forçage d’un outil, migrez vers les sorties structurées ou strict: true, ou gardez tool_choice: 'auto' avec une instruction claire.


2.5 Pinning and migration

  • Épinglez un snapshot en production pour que le comportement ne change pas sous vos pieds. Les ID de modèle à partir de 4.6 sont sans date mais restent des snapshots épinglés.
  • Stockez l’ID de modèle en un seul endroit piloté par env pour qu’une migration soit un changement unique.
  • Checklist de migration : relancez le jeu d’éval de référence sur le nouveau modèle ; vérifiez les paramètres retirés (budget_tokens), le comportement modifié de tool_choice, les écarts de latence et de coût ; déployez derrière un flag.
  • Utilisez client.models.list() / .retrieve(id) pour les limites et la disponibilité en direct.
python
import os
MODEL = os.environ.get("CLAUDE_MODEL", "claude-sonnet-5") # épinglé, un seul endroit

2.6 Token budgeting

Contrôlez les tokens des deux côtés :

  • Entrée : élaguez le contexte, mettez en cache les préfixes stables, purgez les anciens résultats d’outils, résumez les historiques longs.
  • Sortie : réglez un max_tokens réaliste, demandez une sortie concise/structurée, arrêtez tôt avec stop_sequences.
  • Thinking : adaptatif par défaut ; utilisez les niveaux d’effort plutôt que de payer xhigh partout.

Chaque token dans la fenêtre de contexte est facturé à chaque tour, donc les longues conversations deviennent coûteuses – budgétez avec caching, édition et compaction (Domaine 4).


2.7 Cost levers: caching, batching, routing

Mettez en cache un préfixe stable (system + tools + longs documents). Lecture de cache ≈ 0,1× l’entrée ; écriture ≈ 1,25× (5 min) ou 2× (1 heure). Exemple : un préfixe mis en cache de 20k tokens sur Sonnet 5 coûte 20k×$2/1e6 = $0.04 sans cache contre ~$0.004 sur un cache hit – 10× moins cher sur le préfixe.

text
Request ─► Haiku 4.5 (cheap, fast)
│
├─ confident / simple ─► return
└─ hard / low-confidence ─► Sonnet 5 ─► (rare) Opus 5

Signal d’examen

« La plupart des requêtes sont simples, quelques-unes difficiles, minimiser le coût » → routage/cascade bon marché→cher. « Réduire le coût sans changer la qualité sur un contexte partagé répété » → caching. « En masse, pas en temps réel » → batching.


2.8 Latency levers

LeverEffectTrade-off
StreamingAméliore la latence perçue ; les tokens apparaissent immédiatementAucun changement du temps total
Modèle plus petitTemps de complétion plus faiblePeut réduire la qualité
Sortie plus courteMoins de tokens de sortie = plus rapide + moins cherMoins de détail
Prompt cachingÉvite le retraitement du préfixeN’aide que les préfixes stables
Effort de thinking plus bas/adaptatifMoins de temps de raisonnementPeut réduire la qualité sur les tâches difficiles
Fast modeOptimisé pour la latencePour un usage sensible à la latence

Streaming vs latence

Le streaming ne rend pas la génération totale plus rapide – il fait arriver le premier token plus tôt, améliorant l’expérience de l’utilisateur. Si le temps total (wall-clock) est la contrainte, utilisez un modèle plus petit ou une sortie plus courte.


2.9 Worked cost comparison: a 10k-document job

Considérez un job d’extraction par batch sur 10 000 documents. Chaque requête envoie un préfixe partagé de 2 000 tokens (system + schéma + instructions) plus 1 000 tokens de texte de document unique (3 000 tokens d’entrée au total) et génère 500 tokens de sortie. Voici l’arithmétique pour chaque palier, d’abord synchrone et sans cache, puis avec caching, puis via la Batches API.

Baseline (synchronous, no caching)

Coût par requête = (tokens d’entrée × prix d’entrée + tokens de sortie × prix de sortie) ÷ 1 000 000, multiplié par 10 000 documents.

ModelInput: 3,000 × 10k × priceOutput: 500 × 10k × priceTotal
Haiku 4.530M × $1 / 1e6 = $305M × $5 / 1e6 = $25$55
Sonnet 530M × $2 / 1e6 = $605M × $10 / 1e6 = $50$110
Opus 530M × $5 / 1e6 = $1505M × $25 / 1e6 = $125$275

With prompt caching on the 2,000-token shared prefix

Le préfixe de 2 000 tokens est écrit en cache une fois (≈1,25× le prix d’entrée de base pour le TTL de 5 minutes) et lu à ≈0,1× ensuite. Les 1 000 tokens uniques par document ne sont jamais mis en cache. Pour Sonnet 5 :

  • Écriture de cache (première requête) : 2 000 × $2 × 1.25 / 1e6 = $0.005 (une fois, négligeable).
  • Lectures de cache du préfixe (9 999 requêtes restantes) : ≈2 000 × 10k × $2 × 0.1 / 1e6 = $4 (contre $40 sans cache pour la portion du préfixe).
  • Entrée unique (jamais mise en cache) : 1 000 × 10k × $2 / 1e6 = $20.
  • Sortie inchangée : $50.
  • Sonnet 5 avec caching ≈ $74 contre $110 — le préfixe partagé passe de $40 à environ $4.

Le caching n’aide qu’un préfixe stable et répété

Le préfixe de 2 000 tokens doit être identique octet par octet et marqué avec cache_control pour obtenir des hits. Les 1 000 tokens de document uniques varient à chaque requête, ils ne sont donc jamais mis en cache. Le caching est inutile si le préfixe est en dessous du minimum (~1024 tokens ; 2048 sur Haiku) ou change à chaque appel.

With the Message Batches API (50% off input and output)

Le batching divise par deux chaque ligne ci-dessus et renvoie les résultats en 24 heures — idéal car ce job est tolérant à la latence.

ModelSync (uncached)Batch (uncached)Batch + caching
Haiku 4.5$55$27.50≈ $25
Sonnet 5$110$55≈ $37
Opus 5$275$137.50≈ $100

Signal d’examen

« 10 000 documents de nuit, sensible au coût » → le modèle le moins cher qui passe la barre de qualité + Batches (50 %) + mise en cache du préfixe partagé. Empiler les trois leviers sur Sonnet 5 fait passer le job de $110 à environ $37. N’allez pas chercher Opus 5 sauf si Sonnet échoue à la barre de qualité.


2.10 Latency levers in depth

La latence totale a deux parties visibles : le time-to-first-token (TTFT) et le temps de génération total. Différents leviers déplacent différentes parties. Les confondre est un piège d’examen classique.

LeverMoves TTFT?Moves total time?Trade-off / note
Streaming (SSE)Améliore le début perçuAucun changement du totalLes tokens s’affichent à mesure ; l’utilisateur voit la progression plus tôt
Sortie plus courte (max_tokens, instruction concise)LégèrementOui — moins de tokens de sortie = plus rapide + moins cherMoins de détail
Palier de modèle plus petitOuiOuiHaiku 4.5 le plus rapide ; peut réduire la qualité
Prompt cachingOui (évite le retraitement du préfixe)Oui sur le préfixeN’aide qu’un préfixe stable et répété
Effort de thinking plus bas / adaptatifOuiOuilow/medium vs high/xhigh ; peut nuire aux tâches difficiles
Fast modeOuiOuiChemin optimisé pour la latence, pour un usage sensible à la latence
text
Request ──► [cache read prefix] ──► [thinking effort] ──► [generate output]
│ (caching) (effort/fast) (max_tokens)
└── stream deltas to user as soon as generation starts (perceived latency)

Le streaming n’est pas un levier de latence totale

Le streaming améliore le ressenti en sortant le premier token plus tôt ; il ne réduit pas le temps total de génération (wall-clock). Si le temps total est la contrainte dure, utilisez un modèle plus petit, une sortie plus courte, un effort de thinking plus bas, ou le fast mode — pas le streaming seul.


2.11 Pinning and migration checklists for breaking changes

Épinglez un snapshot en production et pilotez l’ID de modèle depuis une unique constante adossée à une variable d’env. Lorsque vous migrez — ou lorsqu’une version livre un changement incompatible — suivez une checklist plutôt que d’échanger les ID à l’aveugle.

General migration checklist

  1. Changez l’unique constante de modèle derrière un feature flag (ne modifiez pas les ID dans de nombreux fichiers).

  2. Relancez le jeu d’éval de référence sur le modèle candidat ; comparez qualité, latence p50/p95, et coût par tâche.

  3. Analysez la charge utile de la requête pour repérer les paramètres retirés (voir ci-dessous) et les comportements modifiés (tool_choice, liaison du thinking).

  4. Déployez sur une petite tranche de trafic, surveillez les taux d’erreur (les pics de 400 signalent un paramètre rejeté), puis montez en charge.

Breaking-change specifics

Breaking changeSymptomFix
budget_tokens retiré (Fable 5.x, Opus 5, Sonnet 5, Opus 4.7–4.8)400 invalid_request quand le champ est envoyéRemplacer par thinking: \{type: 'adaptive'\} ; utiliser les niveaux d’effort ; garder budget_tokens uniquement sur Haiku 4.5
Fable 5.1 rejette tool_choice: 'any' / \{type:'tool'\} forcé400 sur chaque requête à outil forcéUtiliser tool_choice: 'auto' + instruction, strict: true, ou les sorties structurées output_config.format
Liaison du thinking sur Fable 5.1Blocs de thinking supprimés silencieusement quand une requête se replie sur un modèle plus ancienNe pas se replier silencieusement en cours de conversation ; épingler un seul modèle par session
Harnais append-only de Fable 5.1Blocs de thinking ultérieurs invalidés après édition/réordonnancement de tours antérieursFiger system/tools ; placer les changements en cours de session dans un message role: 'system' ; élaguer côté serveur via édition de contexte/compaction
Opus 4.1 retiré le 2026-08-05404 not_found / échec de la requêteMigrer vers un snapshot actuel

Fable 5.1 est append-only

Sur Fable 5.1, vous ne pouvez pas éditer, réordonner ou supprimer des tours antérieurs sans invalider les blocs de thinking ultérieurs. Les harnais doivent être append-only : figez system et tools, exprimez les changements en cours de session sous forme de messages role: 'system', et n’élaguez que via l’édition de contexte ou la compaction côté serveur. Un harnais qui réécrit l’historique cassera sur Fable 5.1.


2.12 A routing / cascade implementation

Le routage garde la majorité du trafic sur un modèle bon marché et n’escalade que la queue difficile. La décision d’escalader doit venir d’un signal structuré (un label de classifieur, un échec de validation, ou un refusal/résultat d’outil à faible confiance) — jamais du parsing de prose.

python
import os
from anthropic import Anthropic
client = Anthropic()
CHEAP = "claude-haiku-4-5"
MID = "claude-sonnet-5"
HARD = "claude-opus-5"
def answer(messages, tools=None):
"""Cascade : essayer bon marché, escalader sur refusal/faible confiance ou échec de validation."""
resp = client.messages.create(model=CHEAP, max_tokens=1024, messages=messages, tools=tools or [])
if resp.stop_reason == "refusal" or not passes_quality_gate(resp):
resp = client.messages.create(model=MID, max_tokens=2048, messages=messages, tools=tools or [])
if resp.stop_reason == "refusal" or not passes_quality_gate(resp):
resp = client.messages.create(model=HARD, max_tokens=4096, messages=messages, tools=tools or [])
return resp
def passes_quality_gate(resp) -> bool:
"""Contrôle programmatique : validité du schéma, champs requis présents, réponse non vide.
NE PAS utiliser la confiance auto-déclarée du modèle (anti-pattern #4)."""
text = "".join(b.text for b in resp.content if getattr(b, "type", None) == "text")
return len(text.strip()) > 0 and "I cannot" not in text
text
Request ─► Haiku 4.5 ──(gate passes)──► return
│
└─(refusal / gate fails)─► Sonnet 5 ──(gate passes)──► return
│
└─(rare)─► Opus 5 ──► return

Signal d’examen

« La plupart des requêtes simples, quelques-unes difficiles, minimiser le coût, ne pas nuire aux cas difficiles » → cascade bon marché→cher avec un contrôle d’escalade programmatique. Si l’énoncé escalade sur le score de confiance du modèle lui-même, c’est l’anti-pattern nº 4 (recours à l’auto-déclaration) et c’est faux.


2.13 A cost model you can compute in your head

L’examen attend une arithmétique rapide et défendable. Mémorisez les prix par MTok et les quatre multiplicateurs, puis estimez.

QuantityFormula
Coût d’entrée de baseinput_tokens × in_price / 1e6
Coût de sortie de baseoutput_tokens × out_price / 1e6
Cache write (5 min)entrée de base × 1.25
Cache write (1 heure)entrée de base × 2
Cache read (hit)entrée de base × 0.1
Remise batchchaque ligne × 0.5

Prix par MTok : Haiku 4.5 $1/$5, Sonnet 5 $2/$10, Opus 5 $5/$25, Fable 5.1 $10/$50.

Exercice détaillé. 4 000 entrée + 800 sortie tokens, 30 000×/jour, sur Haiku vs Sonnet :

ModelInput/dayOutput/dayTotal/day
Haiku 4.54000×30000×$1/1e6 = $120800×30000×$5/1e6 = $120$240
Sonnet 5$240$240$480

Haiku est exactement la moitié ici — mais ne le choisissez que s’il passe la barre de qualité. Ensuite, si la charge est tolérante à la latence, divisez encore par deux avec Batches, et réduisez la portion de préfixe partagé à ~10 % avec le caching.

Signal d’examen

Quand un énoncé vous donne des comptes de tokens et un volume, il veut de l’arithmétique. Calculez input×price + output×price, puis appliquez ×0.5 pour Batches et ×0.1 pour les hits de préfixe mis en cache. Le modèle adéquat le moins cher l’emporte — ne prenez jamais par défaut le plus capable.


2.14 Choosing thinking effort deliberately

L’effort et le mode de thinking échangent la qualité contre la latence et le coût en tokens. L’examen teste le choix du minimum qui passe la barre.

SettingCost / latencyUse whenAvoid when
adaptive (raisonnement par défaut)Le modèle décide de la profondeurTravail agentique/de raisonnement général—
effort low/mediumMoins cher, plus rapideTâches simples ou sensibles à la latencePreuves/code multi-étapes difficiles
effort high (défaut)ÉquilibréLa plupart des raisonnements non triviauxClassification triviale (gaspilleur)
effort xhighLe plus de tokens, le plus lentLe travail de code/agentique le plus ardu (Opus 5 / Fable 5.1)Tout ce qui est routinier — cela ne fait que brûler des tokens
budget_tokens (Haiku 4.5 uniquement)Budget fixeBorner le coût de raisonnement de HaikuTout autre modèle → 400

xhigh et budget_tokens sont étroits

xhigh est réservé au travail le plus ardu ; le régler partout gonfle coût et latence sans gain de qualité. budget_tokens est propre à Haiku 4.5 — l’envoyer à Sonnet 5 / Opus 5 / Fable 5.1 renvoie 400. Haiku 4.5, en retour, n’a aucun paramètre effort, donc « Haiku avec xhigh » est une combinaison invalide que l’examen utilise comme distracteur.


2.15 Common misconceptions

MisconceptionRealityWhy it matters on the exam
Le modèle le plus capable est le défaut sûrCommencez à Sonnet 5 ; utilisez le modèle le moins cher qui passe la barreLe sur-recours à Opus 5/Fable 5.1 est le principal distracteur de coût
temperature: 0 donne une sortie identiqueIl réduit la variance mais n’est pas déterministe octet par octet ; épinglez aussi un snapshotLes questions de reproductibilité reposent sur cette nuance
Le streaming réduit la latence totaleIl n’améliore que le time-to-first-tokenSépare la latence perçue de la latence réelle
budget_tokens fonctionne s’il est assez petitIl est propre à Haiku 4.5 ; les autres 400 quelle que soit la valeurUn piège récurrent de changement incompatible
Le caching aide tout contexte répétéSeul un préfixe identique octet par octet au-dessus du minimum est mis en cacheDes valeurs par requête dans le préfixe tuent le cache
Le batching ne fait qu’ajouter de la latence sans bénéficeIl donne 50 % de moins pour un travail en masse tolérant à la latenceLe chemin le moins cher pour les jobs hors ligne
Un modèle plus grand corrige les limites de débitLes limites de débit portent sur le volume de tokens/requêtes, pas le choix de modèleLe choix de modèle est le mauvais levier pour un 429
Escalader vers un modèle plus grand sur le score de confiance du modèleEscaladez sur des signaux programmatiques, pas l’auto-déclaration (anti-pattern nº 4)Les questions de conception de cascade testent cela

2.16 Scenario walkthrough: taming a runaway model bill

Scénario. Une équipe fait tout tourner sur Opus 5 « par sécurité ». La charge est de 95 % de classifications courtes de type FAQ et 5 % de raisonnement multi-étapes réellement difficile. La facture fait 5× le budget. La latence des classifications doit rester interactive ; les cas difficiles peuvent prendre plus de temps. Ils exécutent aussi une éval nocturne de 20 000 items sur le même Opus 5. Une proposition sur la table : « escalader vers Fable 5.1 dès qu’Opus 5 rapporte une confiance inférieure à 0,9. » Vous devez réduire le coût sans nuire aux cas difficiles ni à la fidélité de l’éval.

Trace de raisonnement d’expert.

  1. Séparez le trafic par difficulté. 95 % est trivial → déplacez-le vers Haiku 4.5 (le moins cher, assez rapide pour rester interactif). Gardez un chemin vers un modèle plus grand pour les 5 %. Faire tout tourner sur Opus 5 est le défaut aveugle aux contraintes qui a causé le dépassement.
  2. Concevez correctement le contrôle d’escalade. Escaladez sur un signal programmatique — un label de classifieur, un échec de validation de schéma, ou un refusal — pas sur la confiance auto-déclarée du modèle (anti-pattern nº 4). Le contrôle proposé à 0,9 de confiance est la mauvaise conception.
  3. Choisissez la cible d’escalade selon le besoin, pas le prestige. La plupart des cas difficiles passent sur Sonnet 5 ; réservez Opus 5 à la rare queue la plus ardue. Sauter directement à Fable 5.1 est sur-dimensionné et ajoute ici ses contraintes de rétention à 30 jours et d’append-only sans bénéfice.
  4. Traitez l’éval nocturne séparément. Elle est tolérante à la latence et en masse → exécutez-la via la Batches API (50 % de moins) sur le modèle le moins cher qui passe la barre de qualité de l’éval. Ne confondez pas le modèle de l’éval avec celui du classifieur de production.
  5. Vérifiez par l’arithmétique. Si les 95 % passent d’Opus ($5/$25) à Haiku ($1/$5), le coût en masse baisse d’environ 5× ; seule la queue de 5 % paie les tarifs Sonnet/Opus. Cela seul ramène probablement la facture dans le budget.
  6. Rejetez les alternatives tentantes. « Garder Opus 5 mais baisser max_tokens » — n’élague que la sortie, pas le dépassement lié au palier de modèle. « Utiliser Fable 5.1 pour les cas difficiles car il est le plus capable » — sur-dimensionné et ajoute des contraintes de rétention/append-only. « Escalader sur la confiance » — recours à l’auto-déclaration.

Décision correcte. Cascade Haiku 4.5 → Sonnet 5 → (rare) Opus 5 avec un contrôle d’escalade programmatique ; exécutez l’éval nocturne sur le modèle adéquat le moins cher via Batches. Épinglez les snapshots et validez le changement derrière le jeu d’éval de référence avant le déploiement.


Pièges de l’examen dans ce domaine

PiègePourquoi c’est faux
Prendre Opus 5 / Fable 5.1 par défaut pour toutGaspille le coût ; commencez à Sonnet 5, descendez à Haiku pour le travail simple à fort volume
Supposer que temperature: 0 donne des sorties identiquesRéduit la variance mais n’est pas déterministe octet par octet entre exécutions/versions
Envoyer budget_tokens à Sonnet 5 / Opus 5 / Fable 5.1Renvoie 400 ; propre à Haiku 4.5
Forcer un outil sur Fable 5.1 avec tool_choiceany/outil forcé renvoient 400 ; utilisez les sorties structurées / strict
Traiter le streaming comme une réduction de latence totaleIl n’améliore que le time-to-first-token
Mettre en cache un préfixe qui change à chaque requêteAucun cache hit
Utiliser des appels synchrones pour un travail en masse tolérant à la latenceLes Batches donnent 50 % de moins
Coder en dur les ID de modèle dans de nombreux fichiersRend la migration source d’erreurs ; épinglez en un seul endroit
Escalader vers un modèle plus grand sur la confiance auto-déclarée du modèleRecours à l’auto-déclaration (anti-pattern nº 4) ; contrôlez sur une validation programmatique
Réécrire/réordonner l’historique dans un harnais Fable 5.1Invalide les blocs de thinking ultérieurs ; le harnais doit être append-only
Aller chercher Opus 5 sur un job en masse tolérant à la latence avant d’essayer Batches + cachingGaspille le coût ; Batches (50 %) + caching de préfixe rendent souvent Sonnet 5 moins cher que nécessaire
Traiter l’entrée entière de 3 000 tokens comme mettable en cache alors que seuls 2 000 tokens sont un préfixe stableLes tokens uniques par document ne se mettent jamais en cache ; seul le préfixe répété le fait
Régler l’effort xhigh sur des tâches routinièresBrûle tokens de thinking et latence sans gain de qualité ; réservez-le au travail le plus ardu
Combiner Haiku 4.5 avec effort: 'xhigh'Invalide — Haiku n’a pas de paramètre effort ; un distracteur courant
Baisser max_tokens pour corriger un dépassement lié au palier de modèleN’élague que la sortie ; le vrai levier est le modèle moins cher + caching + batching
Choisir un modèle plus grand pour résoudre les limites de débit 429Les limites de débit suivent le volume de tokens/requêtes, pas le palier de modèle
Confondre un choix de modèle de production avec le choix de modèle de l’évalLes évals sont tolérantes à la latence → modèle adéquat le moins cher + Batches, indépendant de la prod

Questions d’entraînement

Q1 · Un pipeline classe 100 000 tickets de support courts par nuit avec un label simple. La latence est sans importance. Quel choix minimise le coût ? (Sélectionnez une réponse)

A. Opus 5, synchrone, forte concurrence. B. Sonnet 5, streaming. C. Haiku 4.5 via la Message Batches API. D. Fable 5.1 avec l’effort xhigh.

Réponse : C. Simple, fort volume, tolérant à la latence → modèle le moins cher (Haiku 4.5) plus Batches (50 % de moins). Opus/Fable (A, D) sont sur-dimensionnés et coûteux ; le streaming (B) ne réduit pas le coût.

Q2 · Un développeur envoie `budget_tokens: 1500` à Opus 5 et obtient un 400. Quel est le correctif ? (Sélectionnez une réponse)

A. Baisser le budget à 1000. B. Utiliser thinking: {type: 'adaptive'} ; budget_tokens n’est valide que sur Haiku 4.5. C. Désactiver entièrement le thinking. D. Augmenter max_tokens.

Réponse : B. budget_tokens a été retiré sur Opus 5 ; les modèles actuels utilisent le thinking adaptatif avec des niveaux d’effort. Seul Haiku 4.5 utilise encore budget_tokens.

Q3 · La plupart des requêtes vers un service sont triviales ; une petite fraction nécessite un raisonnement profond. Le coût doit être minimisé sans nuire aux cas difficiles. Quelle conception convient ? (Sélectionnez une réponse)

A. Faire tout tourner sur Opus 5. B. Faire tout tourner sur Haiku 4.5. C. Router : traiter les requêtes simples sur Haiku 4.5 et escalader les difficiles/à faible confiance vers Sonnet 5 ou Opus 5. D. Assigner les modèles aléatoirement.

Réponse : C. Le routage en cascade garde la masse bon marché et ne paie un modèle plus grand que sur la queue difficile. Opus uniforme (A) est gaspilleur ; Haiku uniforme (B) échoue aux cas difficiles ; l’aléatoire (D) n’a pas de sens.

Q4 · Chaque requête réutilise le même préfixe instruction-et-schéma de 15 000 tokens sur Sonnet 5. Quel changement réduit le plus le coût d’entrée ? (Sélectionnez une réponse)

A. Passer à Haiku 4.5. B. Marquer le préfixe stable avec cache_control et le réutiliser dans le TTL. C. Régler temperature: 0. D. Activer le streaming.

Réponse : B. Le prompt caching réduit le coût du préfixe à ~10 % sur les hits. Changer de modèle (A) change la qualité ; la température (C) et le streaming (D) n’affectent pas le coût d’entrée.

Q5 · Un utilisateur se plaint que l’application semble lente même si le temps total convient à la tâche. Quel levier améliore le mieux l’expérience sans changement de qualité ? (Sélectionnez une réponse)

A. Le streaming pour que les tokens s’affichent à mesure qu’ils sont produits. B. Passer à Opus 5. C. Augmenter max_tokens. D. Activer l’effort xhigh.

Réponse : A. Le streaming améliore la latence perçue (time-to-first-token) sans changer la sortie. Un modèle plus grand (B), plus de sortie (C) et un effort plus élevé (D) ajouteraient de la latence.

Q6 · Un service d’extraction force un outil spécifique avec `tool_choice` et migre vers Fable 5.1. Qu’est-ce qui casse et quel est le correctif ? (Sélectionnez une réponse)

A. Rien ne change. B. Le tool_choice forcé renvoie 400 sur Fable 5.1 ; migrez vers les sorties structurées ou strict: true, ou utilisez auto avec une instruction. C. Fable 5.1 ne prend pas en charge les outils. D. Augmenter max_tokens.

Réponse : B. Fable 5.1 rejette tool_choice: 'any' et les outils forcés avec 400. Les sorties structurées / strict / auto+instruction sont les chemins pris en charge. Fable prend bien en charge les outils (C).

Q7 · Quelles DEUX affirmations sur la fenêtre de contexte et `max_tokens` sont correctes ? (Sélectionnez deux réponses)

A. La fenêtre de contexte inclut à la fois les tokens d’entrée et de sortie. B. max_tokens définit le maximum de tokens de sortie, dans la fenêtre de contexte. C. max_tokens est la taille de la fenêtre de contexte. D. Haiku 4.5 a une fenêtre de contexte de 1M. E. Sonnet 5 a une fenêtre de contexte de 1M.

Réponse : A et B. Fenêtre de contexte = entrée + sortie ; max_tokens plafonne la sortie. Haiku 4.5 fait 200k, pas 1M (D faux) ; Sonnet 5 fait 1M (E correct mais la paire A+B est l’ensemble de réponses attendu) — sélectionnez A et B comme les deux affirmations sur la fenêtre de contexte et max_tokens.

Q8 · Une équipe épingle `claude-sonnet-5` et veut tester Opus 5 en toute sécurité. Quelle est la pratique de migration correcte ? (Sélectionnez une réponse)

A. Échanger l’ID partout et livrer. B. Changer l’unique constante de modèle pilotée par env derrière un flag, relancer le jeu d’éval de référence, vérifier les paramètres retirés et les écarts de coût/latence, puis déployer. C. Laisser chaque service choisir son propre modèle. D. Ne le changer qu’en production pour obtenir un vrai signal.

Réponse : B. Une migration centralisée, sous flag et contrôlée par éval est correcte. Échanger partout (A) ou la dérive par service (C) ou les changements en prod seulement (D) sont risqués.

Q9 · Une éval nocturne tolérante à la latence de 5 000 prompts doit être la moins chère possible. Quelle combinaison est la meilleure ? (Sélectionnez deux réponses)

A. La Message Batches API pour la remise de 50 %. B. Streamer chaque requête. C. Le modèle le moins cher qui atteint la barre de qualité. D. L’effort xhigh sur Fable 5.1. E. Opus 5 pour chaque prompt.

Réponse : A et C. Le batching (50 % de moins) plus le modèle adéquat le moins cher minimisent le coût pour un travail hors ligne. Le streaming (B) ne réduit pas le coût ; Fable à fort effort (D) et Opus généralisé (E) sont coûteux.

Q10 · Un job d’extraction de 10 000 documents s’exécute de nuit et est sensible au coût. Sonnet 5 passe la barre de qualité. Chaque requête a un préfixe stable de 2 000 tokens et 1 000 tokens uniques. Quelle combinaison minimise le coût ? (Sélectionnez une réponse)

A. Opus 5, synchrone, sans caching, pour une qualité maximale. B. Sonnet 5 via la Batches API, avec cache_control sur le préfixe partagé de 2 000 tokens. C. Sonnet 5 synchrone avec caching uniquement. D. Haiku 4.5 synchrone avec l’effort xhigh.

Réponse : B. Le job est tolérant à la latence, donc empilez les trois leviers : modèle le moins cher qui passe la barre (Sonnet 5), Batches (50 % de moins), et caching sur le préfixe stable — environ $37 contre $110 de référence. Opus (A) est sur-dimensionné ; le caching seul (C) laisse la remise batch de 50 % sur la table ; Haiku avec xhigh (D) est invalide car Haiku n’a pas de paramètre effort.

Q11 · Une équipe migre un service de production vers Fable 5.1. Leur harnais édite les tours antérieurs pour élaguer le contexte et force un outil d’extraction spécifique. Quels deux problèmes vont-ils rencontrer ? (Sélectionnez deux réponses)

A. Le tool_choice forcé renvoie 400 sur Fable 5.1. B. Éditer les tours antérieurs invalide les blocs de thinking ultérieurs ; le harnais doit être append-only. C. Fable 5.1 ne prend pas du tout en charge les outils. D. Fable 5.1 exige budget_tokens. E. Fable 5.1 n’a pas de fenêtre de contexte.

Réponse : A et B. Fable 5.1 rejette les outils forcés (utilisez output_config.format / strict / auto+instruction) et exige un harnais append-only (n’élaguez que via l’édition de contexte/compaction côté serveur). Fable prend bien en charge les outils (C) ; budget_tokens est retiré sur Fable, pas requis (D) ; il a une fenêtre de contexte de 1M (E).

Q12 · Les utilisateurs signalent que l’application « semble lente » mais le temps total de la tâche est acceptable, et la qualité ne doit pas baisser. Quel changement unique aide le mieux ? (Sélectionnez une réponse)

A. Activer le streaming pour que les tokens s’affichent à mesure qu’ils sont produits. B. Passer chaque requête à Opus 5. C. Monter max_tokens à 8 000. D. Régler l’effort à xhigh.

Réponse : A. La plainte concerne la latence perçue (time-to-first-token), et la qualité doit être préservée — le streaming montre la progression immédiatement sans changer la sortie. Un modèle plus grand (B), plus de sortie (C) et un effort plus élevé (D) augmentent tous la latence et changent le comportement.

Q13 · Un service route la majorité du trafic vers Haiku 4.5 et escalade les cas difficiles vers Sonnet 5. Un développeur propose d’escalader dès que Claude dit que sa propre confiance est inférieure à 0,8. Pourquoi est-ce faux, et quel est le correctif ? (Sélectionnez une réponse)

A. C’est correct ; la confiance auto-déclarée est fiable. B. Cela repose sur la confiance auto-déclarée (anti-pattern nº 4) ; escaladez sur un signal programmatique — échec de validation de schéma, refusal, ou label de classifieur. C. Le routage n’est jamais approprié ; utilisez un seul modèle. D. Escalader sur la longueur de sortie à la place.

Réponse : B. La confiance auto-déclarée n’est pas un déclencheur d’escalade fiable (anti-pattern nº 4). Une cascade devrait escalader sur des signaux structurés et programmatiques tels qu’une validation échouée, un stop_reason refusal, ou une décision de classifieur. Le modèle unique (C) sape l’objectif de coût ; la longueur de sortie (D) n’est pas un signal de qualité.

Q14 · Une tâche envoie 4 000 entrée + 800 sortie tokens, 30 000×/jour. Haiku 4.5 ($1/$5) et Sonnet 5 ($2/$10) passent tous deux la barre. Quelle est la différence de coût quotidienne, et lequel est le moins cher ? (Sélectionnez une réponse)

A. Ils coûtent la même chose car les comptes de tokens sont identiques. B. Haiku 4.5 ($240/jour) est moins cher que Sonnet 5 ($480/jour) d’environ $240/jour. C. Sonnet 5 est moins cher car les modèles plus grands se prêtent mieux au batch. D. Haiku 4.5 ~$480/jour ; Sonnet 5 ~$240/jour.

Réponse : B. Haiku : 4000×30000×$1/1e6=$120 + 800×30000×$5/1e6=$120 = $240 ; Sonnet : $240+$240=$480. Mêmes tokens mais prix par token différents (A faux) ; il n’y a pas d’effet « se prête mieux au batch » pour un modèle plus grand (C) ; D inverse l’arithmétique.

Q15 · Un développeur règle `effort: 'xhigh'` sur une tâche de classification triviale à fort volume « par sécurité ». Quel est l’effet ? (Sélectionnez une réponse)

A. Une qualité supérieure sans coût supplémentaire. B. Plus de tokens de thinking et une latence plus élevée sans gain de qualité sur une tâche triviale ; utilisez low/medium ou adaptive à la place. C. Cela désactive l’échantillonnage et met les résultats en cache. D. C’est requis pour la classification.

Réponse : B. xhigh est pour le travail le plus ardu ; sur des tâches triviales, il ne fait que brûler tokens et temps. Il n’est pas gratuit (A), ne met pas en cache (C), et n’est pas requis (D).

Q16 · Quelle combinaison est invalide à cause d’une restriction de paramètre spécifique au modèle ? (Sélectionnez une réponse)

A. Sonnet 5 avec thinking: {type: 'adaptive'}. B. Haiku 4.5 avec effort: 'xhigh'. C. Opus 5 avec effort: 'high'. D. Haiku 4.5 avec budget_tokens: 1024.

Réponse : B. Haiku 4.5 n’a pas de paramètre effort, donc effort: 'xhigh' sur Haiku est invalide. L’adaptatif sur Sonnet 5 (A), effort: high sur Opus 5 (C) et budget_tokens sur Haiku 4.5 (D) sont tous valides.

Q17 · Une équipe exécute 95 % de classifications triviales et 5 % de raisonnement difficile entièrement sur Opus 5 et la facture fait 5× le budget. Quelle refonte réduit le coût sans nuire aux cas difficiles ? (Sélectionnez une réponse)

A. Baisser max_tokens sur tous les appels Opus 5. B. Cascade : Haiku 4.5 pour la masse triviale, en escaladant les cas difficiles/de faible qualité (via un contrôle programmatique) vers Sonnet 5 et rarement Opus 5. C. Tout déplacer vers Fable 5.1 car il est le plus capable. D. Activer le streaming sur chaque appel.

Réponse : B. Router la masse triviale vers Haiku et réserver les modèles plus grands à la queue difficile réduit le coût dominant tout en protégeant les cas difficiles. Baisser max_tokens (A) n’élague que la sortie ; Fable 5.1 partout (C) est sur-dimensionné et ajoute des contraintes de rétention/append-only ; le streaming (D) ne réduit pas le coût.

Q18 · Une éval nocturne de 20 000 items s’exécute sur le même Opus 5 que la production. Comment le coût de l’éval devrait-il être minimisé indépendamment ? (Sélectionnez deux réponses)

A. Exécuter l’éval via la Message Batches API pour la remise de 50 %. B. Utiliser le modèle le moins cher qui passe la barre de qualité de l’éval. C. Forcer l’effort xhigh pour la rigueur. D. Streamer chaque requête d’éval. E. La garder sur Opus 5 pour correspondre exactement à la production.

Réponse : A et B. L’éval est tolérante à la latence et en masse, donc Batches plus le modèle adéquat le moins cher minimisent le coût. xhigh (C) gonfle le coût ; le streaming (D) ne réduit pas le coût ; correspondre à la production sur Opus 5 (E) est inutile et coûteux pour une éval hors ligne.

Q19 · Quelles DEUX affirmations sur les fenêtres de contexte de la gamme actuelle sont correctes ? (Sélectionnez deux réponses)

A. Sonnet 5 et Opus 5 ont chacun une fenêtre de contexte de 1M. B. Haiku 4.5 a une fenêtre de contexte de 200k. C. Haiku 4.5 a une fenêtre de contexte de 1M. D. Fable 5.1 a une fenêtre de contexte de 128k. E. Sonnet 5 a une fenêtre de contexte de 200k.

Réponse : A et B. Sonnet 5 et Opus 5 sont à 1M ; Haiku 4.5 est à 200k. Haiku n’est pas à 1M (C) ; les 128k de Fable 5.1 sont sa SORTIE MAX, pas son contexte (D) ; Sonnet 5 est à 1M, pas 200k (E).

À retenir

  • Les tokens déterminent coût, latence et limites ; la fenêtre de contexte contient entrée + sortie, max_tokens ne plafonne que la sortie.
  • temperature: 0 réduit la variance mais n’est pas déterministe octet par octet ; épinglez un snapshot pour la reproductibilité.
  • Commencez à Sonnet 5 ; Haiku 4.5 pour le fort volume bon marché, Opus 5 pour le travail agentique difficile, Fable 5.1 pour le plus ardu.
  • budget_tokens est propre à Haiku 4.5 ; les niveaux d’effort s’appliquent à Opus 5 / Sonnet 5 / Fable 5.1.
  • Connaissez les changements incompatibles : retrait de budget_tokens, tool_choice/liaison-du-thinking/append-only de Fable 5.1, retrait d’Opus 4.1.
  • Leviers de coût : caching (~10 % sur les hits), batching (50 % de moins), routage/cascade bon marché→cher.
  • Leviers de latence : streaming (perçue), modèle plus petit / sortie plus courte (réelle), caching, fast mode.
  • Calculez le coût de tête : input×price + output×price, puis ×0.5 pour Batches et ×0.1 pour les hits de préfixe mis en cache ; le modèle adéquat le moins cher l’emporte.
  • Choisissez l’effort de thinking minimum qui passe la barre ; xhigh est réservé au travail le plus ardu, budget_tokens est propre à Haiku 4.5, et « Haiku + effort » est invalide.
  • Les limites de débit portent sur le volume de tokens/requêtes — corrigez-les avec caching, élagage, batching ou un palier supérieur, pas en changeant le palier de modèle.
  • Traitez un choix de modèle de production et le choix de modèle d’une éval hors ligne comme des décisions indépendantes ; les évals sont tolérantes à la latence, donc utilisez le modèle adéquat le moins cher via Batches.

Dernière mise à jour le 18 sept. 2026