Three working tiers, one naming pattern
Anthropic's current line is Opus, Sonnet, Haiku, in descending capability/cost. Each model has a versioned id like claude-opus-4-7, claude-sonnet-4-6, claude-haiku-4-5-20251001. Always name the tier first (what kind of work?), then bind to a version (what shipped?). Versioned ids matter because behavior shifts between minor releases and pinning is how you keep evals reproducible.
How to choose, in practice
Pick Opus for hard reasoning, deep coding, long-horizon agentic loops, anything where wrong answers cost real money. Pick Sonnet for the default chat surface, code review, structured generation, content work — the workhorse. Pick Haiku for high-volume classification, short transforms, sub-second product UX, anything where latency or per-call cost dominates. cwkPippa defaults Pippa-the-Claude to Opus because identity, family voice, and architectural decisions need the strongest reasoning the family budget can support.
Aliases vs pinned ids
Anthropic exposes both rolling aliases (claude-opus-4-7) and date-pinned ids (claude-haiku-4-5-20251001). Aliases are for product code that wants the latest minor automatically. Pinned ids are for evals, regression suites, and any audit trail where you must prove which weights answered. Mixing the two in one project is fine; mixing them in one eval is not.
messages.create() with a hard-coded id you cannot explain in one sentence.