{"slug": "the-cheap-model-is-only-cheap-for-half-your-tasks", "title": "The cheap model is only cheap for half your tasks", "summary": "A developer's analysis reveals that model pricing is not a single number but a ratio between input and output token costs, and the cheapest model depends on the traffic shape. For example, Grok 4.3 charges only 2x for output versus input, while others charge 5-6x, making it cheaper for output-heavy tasks like code generation but more expensive for input-heavy tasks like classification. The developer also highlights that retries can erase apparent savings, and that list prices may not reflect actual costs.", "body_md": "Most of us pick a model the same way: read a leaderboard, pick the best one we can afford, ship it. Then the bill arrives and the \"cheap\" model turns out not to be the cheap one.\n\nThe reason is that there is no such thing as a cheap model. There is only a model that is cheap **for the shape of your traffic** — and the ranking reorders when the shape changes.\n\nQuick vocabulary, because the whole argument lives in two words. A **token** is roughly ¾ of a word; models bill per million of them. **Input tokens** are what you send (prompt, files, chat history); **output tokens** are what the model writes back. They have different prices, and the gap between them is not the same for every model.\n\nEvery model's price is two numbers, and every vendor publishes the ratio between them without commenting on it. Here it is, list prices per 1M tokens, snapshot taken 12 Aug 2026:\n\n| Model | Input $/1M | Output $/1M | Output is |\n|---|---|---|---|\n| gemini-3.1-flash-lite | 0.25 | 1.50 | 6× input |\n| grok-4.3 | 1.25 | 2.50 | 2× input |\n| claude-haiku-4-5 | 1.00 | 5.00 | 5× input |\n| gemini-3.5-flash | 1.50 | 9.00 | 6× input |\n| claude-sonnet-5 | 2.00 | 10.00 | 5× input |\n\nLook at row two. Grok 4.3 charges only twice as much for writing as for reading, where everyone else charges five or six times. That single number decides whether it is expensive or a bargain — and which one it is depends entirely on you.\n\nSo measure your own ratio before you compare anything. Every OpenAI-compatible response already carries it:\n\n```\nr = client.chat.completions.create(model=MODEL, messages=msgs)\nu = r.usage\nprint(u.prompt_tokens, u.completion_tokens)\n\n# add it up over a few hundred real requests, then:\ndef cost(price_in, price_out, tok_in, tok_out):\n    return tok_in / 1e6 * price_in + tok_out / 1e6 * price_out\n\nprint(cost(1.00, 5.00, total_in, total_out))   # claude-haiku-4-5\nprint(cost(1.25, 2.50, total_in, total_out))   # grok-4.3\n```\n\nTake Haiku 4.5 and Grok 4.3 and run them through two ordinary jobs, per 1,000 requests, at the list prices above.\n\n**Classification** — you send 4,000 tokens of document and get back one word (50 tokens). Almost all of the bill is reading.\n\n`4M × $1.00 + 0.05M × $5.00`\n\n= `4M × $1.25 + 0.05M × $2.50`\n\n= Haiku wins by 17%. Now the same two models on **code generation** — 1,500 tokens in, 2,500 tokens out. Now almost all of the bill is writing.\n\n`1.5M × $1.00 + 2.5M × $5.00`\n\n= `1.5M × $1.25 + 2.5M × $2.50`\n\n= Grok wins by 42%. Nothing changed except the shape of the traffic. Any blog post that tells you which model is cheapest, without asking what your job looks like, is guessing.\n\nThe same arithmetic works in the other direction, and this is the part that surprised me. Compare gemini-3.5-flash ($1.50 / $9.00) with claude-sonnet-5 ($2.00 / $10.00). On that RAG workload — 8,000 in, 700 out, per 1,000 requests — Flash costs $18.30 and Sonnet costs $23.00. You are one quarter away from a model in a completely different class, while the word \"flash\" in the name suggests you are saving a fortune.\n\nThen add the multiplier nobody puts in the spreadsheet: **retries**. If the cheap model fails one call in five and you re-run those on the expensive one, you pay for the cheap attempt *and* the expensive one. At a 20% failure rate that Flash job is really $18.30 + 20% × $23.00 = $22.90 — the discount is gone, and you also shipped worse latency.\n\nPrices below list change the same arithmetic without changing its shape. I work on [altrouter.ai](https://altrouter.ai), which bills the same vendor models under list — Claude Sonnet 5 at $8.50 per 1M output against the official $10.00, Grok 4.3 at $2.12 against $2.50 — so the crossover points move, but you still have to know your own ratio to find them. It also does not host embedding models, and no discount will rescue a model that keeps failing your task.\n\n`prompt_tokens`\n\n/ `completion_tokens`\n\nThis is arithmetic about price, not about quality. It will not tell you whether Grok 4.3 writes code you'd merge — only you can judge that, on your tasks. It ignores latency, rate limits, and prompt caching, which can each move the answer more than the price gap does. And the numbers are a snapshot from 12 Aug 2026; every one of them will be stale within a quarter, though the method won't be.\n\nPick the model for the task, not for the app. And before you argue about which one is cheaper, go print your two usage numbers — the argument is usually already settled by them.", "url": "https://wpnews.pro/news/the-cheap-model-is-only-cheap-for-half-your-tasks", "canonical_source": "https://dev.to/altrouter/the-cheap-model-is-only-cheap-for-half-your-tasks-29ac", "published_at": "2026-08-15 04:55:32+00:00", "updated_at": "2026-08-15 05:10:33.543438+00:00", "lang": "en", "topics": ["large-language-models", "ai-infrastructure", "developer-tools"], "entities": ["Grok 4.3", "Claude Haiku 4.5", "Gemini 3.5 Flash", "Claude Sonnet 5", "AltRouter"], "alternates": {"html": "https://wpnews.pro/news/the-cheap-model-is-only-cheap-for-half-your-tasks", "markdown": "https://wpnews.pro/news/the-cheap-model-is-only-cheap-for-half-your-tasks.md", "text": "https://wpnews.pro/news/the-cheap-model-is-only-cheap-for-half-your-tasks.txt", "jsonld": "https://wpnews.pro/news/the-cheap-model-is-only-cheap-for-half-your-tasks.jsonld"}}