Careeroza
Choosing a Model
Questions to Ask
| Question | If yes |
|---|---|
| Is the task simple (tagging, extraction, yes/no)? | Smallest fast model (Haiku 5.5, a small open model) |
| Needs multi-step reasoning, coding or tool use? | Top tier (Opus 5.5) |
| High volume, normal chat or RAG? | Mid tier (Sonnet 5.5) |
| Data must never leave your servers? | Open model self-hosted, or a cloud region with the right agreement |
| Needs images or PDFs? | A multimodal model (all current Claude models accept images and PDFs) |
| Indian languages? | Test! Run the same 30 real prompts in each language on each candidate |
A Simple Model Router
Example
Many apps route each request to a different model. Here is a rule-based router; production systems may use a cheap model to classify first:
def choose_model(task, needs_tools=False, long_reasoning=False):
if needs_tools or long_reasoning:
return "claude-opus-5-5"
if task in {"classify", "extract", "route", "detect_language"}:
return "claude-haiku-5-5"
return "claude-sonnet-5-5"
requests = [
("classify", {}),
("answer_policy_question", {}),
("refund_with_order_lookup", {"needs_tools": True}),
("extract", {}),
("debug_checkout_code", {"long_reasoning": True}),
]
for task, opts in requests:
print(f"{task:26} -> {choose_model(task, **opts)}")Output
classify -> claude-haiku-5-5 answer_policy_question -> claude-sonnet-5-5 refund_with_order_lookup -> claude-opus-5-5 extract -> claude-haiku-5-5 debug_checkout_code -> claude-opus-5-5