Rubric
Contents — domains, guide and mocks

Choosing a model

CCDV-F 5.313 min read · checked 21 September 2026

Task statementModel Selection and Tradeoffs (2.7%) — Opus, Sonnet and Haiku use cases, adaptive thinking support, quality/latency/cost tradeoffs, and breaking behaviour changes across model releases

Which model does this workload need?

What is the binding constraint?
  • Latency or unit cost
    Haikureal-time, high-volume, simple tasks
  • Everyday build work
    Sonnetcoding, analysis, content, vision
  • Hard, agentic, costly to get wrong
    Opuslong autonomous runs, refactors
  • Already on the right model
    Tune effortoften the better lever
Start from the binding constraint. Most applications end up using more than one model, chosen per task rather than per project.

The families, and what each is for

Anthropic's naming has been stable in intent for a long time: Opus is the most capable family, Sonnet the balanced one, Haiku the fastest and cheapest. The documentation's own framing is that Opus suits complex agentic coding, long autonomous sessions and enterprise work; Sonnet suits everyday coding, data analysis, content and visual understanding; Haiku suits real-time applications, high-volume processing and cost-sensitive deployments.

ModelInput / output per million tokensContextThinking
Claude Fable 5.1$10 / $501MAdaptive, always on
Claude Opus 5.5$4 / $201MAdaptive, always on
Claude Sonnet 5$2 / $101MAdaptive
Claude Haiku 4.5$1 / $5200KExtended

Read that table as ratios rather than as figures to memorise: the gap between the cheapest and most expensive listed model is an order of magnitude per token, and output costs several times what input costs on every one of them. A workload that is mostly long prompts and short answers has a very different economics from one that generates long documents, and that difference often matters more than the model choice itself.

Quality, latency and cost are one dial with several settings

The documentation frames the choice on four criteria — capabilities, speed, cost, and effort — and is explicit that effort is often the better lever: it trades intelligence against latency and cost within a single model, without a migration. Effort levels run from low through medium and high to higher settings still, and the sensible default differs per model, so an effort value carried over from one model is not automatically right on the next.

Two ways to arrive at the right model

Efficiency-first

  • Start on the fastest, cheapest model
  • Test thoroughly against real inputs
  • Upgrade only where quality actually fails
  • Suits prototyping, high volume, tight latency

Capability-first

  • Start on a frontier model
  • Get the prompt and evals right first
  • Then tune effort down, or move down a tier
  • Suits accuracy-critical and agentic work
Both are documented starting points. The choice between them is about what failure costs you during development.

Both routes converge on the same instruction, and it is the step teams skip: build benchmark tests on your own prompts and your own data, then compare models on accuracy, quality and edge-case handling before weighing cost. A model comparison without an eval set is a preference, not a decision. Evaluation itself belongs to Domain 4.

Nor is the choice one model per application. The documentation describes pairing a cheaper model with a frontier one: an executor that escalates the hard decisions to an advisor, or an orchestrator that delegates bulk work to cheaper workers. Most production systems end up here, because most workloads are a small number of hard steps surrounded by a large number of easy ones.

Breaking behaviour changes across releases

This is the half of the objective people do not prepare for. A new model is not a drop-in faster version of the last one. Anthropic publishes migration guides precisely because upgrades change API contracts and behaviour, and the changes documented for recent Opus releases are a good map of the kinds of thing to expect.

Kind of changeConcrete example from the migration guideWhat it breaks
Parameters rejectedtemperature, top_p and top_k with non-default values return 400Any code carrying sampling settings forward
Thinking mode replacedManual budget_tokens rejected; adaptive thinking plus effort insteadRequests built for extended thinking
Defaults invertedThinking on by default, so max_tokens now bounds thinking plus textOutput budgets tuned on the previous model
Response shapeThinking blocks arrive before text blockscontent[0].text and positional stream handling
Features withdrawnAssistant-message prefill returns 400Prompts that steered the opening of a reply
Tokenizer changedThe same text can cost noticeably more tokensCost models and max_tokens arithmetic
Style and behaviourLonger answers, more literal instruction-following, more self-verificationPrompts tuned against the old model's habits

Notice the last row. Nothing in it returns an error; the application keeps working and quietly produces different output. A model that follows instructions more literally will stop doing the helpful generalisation your prompt relied on. A model that verifies its own work will over-verify if you left in “double-check your work”. This is why a model upgrade is a release that needs evals re-run, not a configuration edit.

A model-upgrade checklist

  • Passes: Model id read from configuration, not hard-codedMakes the change, and the rollback, a deploy setting
  • Fails: Deprecated sampling parameters removedNon-default temperature, top_p, top_k now return 400
  • Fails: Thinking configured for the new modebudget_tokens replaced by adaptive thinking plus effort
  • Fails: Responses parsed by block type, never by positionThinking blocks may precede text blocks
  • Check: max_tokens re-checked against the new defaultsThinking may now count inside the same budget
  • Check: Token counts and cost re-baselinedTokenizer changes shift both
  • Missing: Eval set re-run and prompts re-tunedLength, tone and verification habits change silently
The first four items are API contract; the last three are behaviour. Only the first four will tell you they are wrong.

Traps the wrong answers are built from

Tempting but wrongDo this instead
Defaulting every call to the most capable modelRoute by task; escalate only the steps that need it.
Switching model to fix a quality problem with a known causeFix the prompt, the examples or the validation first; tune effort before changing tier.
Comparing models by impression instead of an eval setBuild benchmark tests on your own prompts and data, then compare on accuracy and edge cases.
Treating a model upgrade as a configuration changeRe-run evals and re-tune prompts; behaviour changes without raising errors.
Carrying sampling parameters and effort values across a migrationRead the migration guide; deprecated parameters now fail and defaults are recalibrated.

You should now be able to

  • Match Opus, Sonnet and Haiku to workloads from stated latency, cost and quality constraints.
  • Use effort and adaptive thinking as a within-model lever before changing model.
  • Design a multi-model routing strategy that escalates only the hard steps.
  • Anticipate the breaking API changes a model migration brings, and parse responses defensively.
  • Recognise silent behavioural changes across releases and plan an eval-backed upgrade.

Practice questions

Original questions written for this lesson, in the exam’s style. Answer first, then open the reasoning — every option is explained, including why the wrong ones are tempting.

  1. Question 1

    A live-chat widget must acknowledge a customer message within one second. The task is classifying the message into one of eight intents. A trial on the most capable available model is accurate but takes three to four seconds per reply.

    What is the best change?

    1. AKeep the model and stream the response so text appears sooner.
    2. BMove the classification to the fastest model and validate it against an eval set.
    3. CCache the model's answers so repeat messages return instantly.
    4. DRaise effort so the model reaches its answer in fewer tokens.
    Show answer and reasoning
    1. AIncorrect. Streaming improves perceived latency for prose, but a classification is consumed whole by the code that routes it.
    2. BCorrect. Short, patterned classification is exactly the high-volume, latency-bound case the fast tier is documented for; the eval set proves quality holds.
    3. CIncorrect. Customer messages rarely repeat verbatim, so the hit rate would be negligible.
    4. DIncorrect. Higher effort increases reasoning, and therefore latency; it moves the wrong way.
  2. Question 2

    After upgrading to a newer model, a service that extracts fields from invoices starts returning empty values for every document. The API returns HTTP 200, the token usage looks normal, and the logs show no errors. The extraction code reads response.content[0].text.

    What is the cause?

    1. AThe new model returns structured output that must be read from usage.
    2. Bmax_tokens is now consumed by thinking, so no text is generated.
    3. CThe first content block is now a thinking block, so position zero holds no text.
    4. DThe model id was pinned to a version that no longer exists.
    Show answer and reasoning
    1. AIncorrect. usage reports token counts; it never carries content.
    2. BIncorrect. That would show as a truncation stop reason and abnormal usage, not as normal usage with empty values.
    3. CCorrect. The migration guide calls this out: select blocks by type rather than by position.
    4. DIncorrect. An unknown model id returns a 4xx error rather than a successful empty extraction.
  3. Question 3

    A team is preparing to move a production agent to the next model release. They have an eval suite, prompts tuned over six months, and a hard-coded model id in three services.

    Which two steps should come first? (Select 2.)

    1. AMove the model id into configuration in all three services.
    2. BRead the migration guide and remove parameters the new model rejects.
    3. CSwitch production to the new model and monitor error rates.
    4. DDelete the eval suite, since it was tuned against the old model.
    5. ERaise max_tokens everywhere to be safe.
    6. FRewrite every prompt before testing the new model.
    Show answer and reasoning
    1. ACorrect. It makes the upgrade and the rollback a deploy setting rather than a code change in three places.
    2. BCorrect. Deprecated sampling parameters and the old thinking configuration return 400 on current models.
    3. CIncorrect. Error rates will not reveal the behavioural changes — length, tone, verification — that do not raise errors.
    4. DIncorrect. The eval suite is the only instrument that detects silent behavioural change; it should be re-run, not discarded.
    5. EIncorrect. A reasonable check, but blanket raising costs money and does not address the contract changes.
    6. FIncorrect. Re-tuning is likely needed, but it should follow evidence from the evals, not precede it.

Sources

Drafted with AI assistance and checked against the sources above; expert review is in progress. Spotted an error? Tell us and it gets fixed, dated and listed on how this is written.