Thanh Ngo
Writing

AI · Tech2 min read

On the Balance between Speed and Intelligence

The smartest model is slow. The fastest one is sloppy. My agentic loop picks between them for every task.

Thanh Ngo

Frontier models are overkill (and too slow) for routine steps, while lightweight models cut corners on complex logic. To get the best of both, my agent loop dynamically routes each subtask—matching the model tier and reasoning budget to the actual complexity of the job. The usual name for this process is model routing.

At a high level

Every task in the loop gets assigned a difficulty: easy, standard, hard or deep. It says how much thinking the task needs, not how big it is.

For example, an unambiguous large-scale refactoring rarely requires a frontier model or long-trajectory reasoning, easily falling into the easy-to-standard tier. In contrast, architecting an end-to-end feature across a distributed system demands deep, deliberate thinking—qualifying it as hard.

To start, an AI rater agent, usually LLM, evaluates the difficulty from the task's title and description. The agent or I can change the difficulty after its initial auto-judgement.

How it picks

My loop runs each task in three phases: plan, build and review. In reality: Your loop may split the work differently, but the idea, in principal, carries over.

The difficulty and the phase together pick two things:

  • The model tier: fast, balanced or strongest.
  • The reasoning effort: low, medium or high. "Default" leaves it to the model provider.
DifficultyPlanBuildReview
easybalanced · lowbalanced · lowbalanced · medium
standardbalanced · defaultbalanced · defaultstrongest · default
hardstrongest · defaultbalanced · highstrongest · default
deepstrongest · highstrongest · defaultstrongest · high
  • The balanced model does the ordinary work.
  • The strongest model plans the hard work.
    • It also reviews from Standard up, because the review is the last check before anything gets merged.
  • Hard builds stay balanced but think longer. Only deep ones get the strongest model accross the board.

You can technically adjust this heuristic through evaluations, but this is an initial rough draft of how my desired setup was.

The tiers don't name a model, so with any provider, we can fill them in. With a Claude-only set up:

TierClaude model
fastHaiku
balancedSonnet
strongestOpus (or Fable)

The fast tier is there if I'll need to use it. Given that the configuration is also flexible, I can adjust the mapping accordingly from both tables.

To conclude

Balance is not one middle setting for every task. It is putting speed and intelligence each where they pay off: a wrong plan or a missed bug wastes all the work built on it, while a clumsy small edit takes a minute to redo.

So spend smarts where a mistake is costly to undo. Spend speed where it is cheap. This goes without saying other quality investment is as equally important, like prompt tuning, tight evals, and deterministic test harnesses, etc.