← All posts

How to Choose an LLM: A Practical Decision Framework

Quick answer: To choose an LLM, start from your task's real requirements, then weigh capability against cost and latency, decide open vs proprietary, check context length and tool support, and finally evaluate the top two or three candidates on your own data. The best model on a public benchmark is often not the best model for your job. The only test that counts is how a model performs on your task, at your budget, within your latency limit.

Start With the Task, Not the Model

Most model-selection mistakes come from picking a model first and then bending the task to fit it. Flip that. Write down what the task actually demands before you look at any model.

A one-line classifier has almost nothing in common with a multi-step research agent. The first needs speed and low cost and barely any reasoning. The second needs strong reasoning, a large context window, and reliable tool use. There is no single best LLM, only the best fit for a specific job.

Ask these first:

  • How hard is the reasoning? Simple extraction, or multi-step logic?
  • How fast must it respond? A background batch job, or a live chat?
  • How much does volume cost you at scale?
  • Does it need to call tools or return strict structured output?
  • How much context does one request need to hold?
  • Are there data residency or privacy constraints?

Your answers narrow the field before you compare a single model.

The Core Tradeoff: Capability vs Cost vs Latency

Almost every model choice is a balance of three forces that pull against each other.

Capability is raw quality: reasoning, instruction following, accuracy. The most capable models are usually the largest, which makes them slower and more expensive per call.

Cost scales with usage. A model that is a joy to prototype with can become painful at a million calls a day. Frontier models cost meaningfully more per token than small ones, so at high volume the cheaper model that is "good enough" often wins.

Latency is how long the user waits. Large models are slower. For an interactive product, a slightly less capable model that responds quickly can beat a smarter one that makes users stare at a spinner.

The trap is defaulting to the most capable model for everything. Overpaying in both money and latency for reasoning your task never uses is the most common waste in production LLM systems. Match the model to the difficulty of the work.

Open vs Proprietary

This is a real fork in the road, and both sides have honest merits.

Factor Proprietary (API) Open weights (self-host)
Setup effort Call an API, done Provision and run GPUs
Frontier capability Usually the leaders Closing the gap, strong options
Cost at scale Per-token, adds up Fixed infra, cheaper at high volume
Data control Sent to a provider Stays on your infrastructure
Maintenance Provider handles it You own updates and uptime
Customization Limited to their options Full control, fine tuning

Proprietary APIs are the fastest way to get quality, and they are the right default for most teams starting out. Open-weight models earn their keep when you need data to stay in-house, when your volume makes self-hosting cheaper than per-token pricing, or when you want deep customization. Neither is universally better.

Context Length and Tool Use

Two capabilities deserve their own look, because they gate whole categories of application.

Context length is how much the model can hold at once. If you feed large documents or long conversations, you need a model whose context window fits your typical payload with room to spare. But bigger is not automatically better: a huge context costs more per call and models attend to it unevenly, so do not pay for capacity you will not use.

Tool use matters the moment you build anything agentic. If your app needs the model to call functions, query APIs, or return strict JSON, reliable tool use and structured output are non-negotiable. Some models are noticeably better at this than others, and it is a make-or-break trait for agents. If that is your direction, our guide to the best AI agent frameworks covers how frameworks lean on this capability.

Evaluate on YOUR Task, Not Benchmarks

Here is the single most important rule, and the one most often ignored: public benchmarks tell you how a model does on that benchmark, not on your task.

Leaderboards are useful for a rough shortlist. They are a terrible way to make the final call. A model that tops a reasoning benchmark may be mediocre at your specific extraction format, your domain's vocabulary, or your latency budget. Benchmarks also leak into training data over time, which inflates scores without improving real performance.

So build a small evaluation set from your own real inputs, pick your top two or three candidates, and run them head to head. Score the outputs the way we describe in LLM evaluation and testing: correctness, groundedness, format compliance, plus the cost and latency each model actually delivers on your data.

candidates = ["model-a", "model-b", "model-c"]

for model in candidates:
    results = run_eval(model, my_golden_set)
    print(f"{model}: quality={results['score']:.2f} "
          f"cost=${results['cost_per_1k']:.2f} "
          f"latency={results['p95_ms']}ms")

# Pick the cheapest, fastest model that clears your quality bar.

That last comment is the whole framework in one line. You are not looking for the highest score. You are looking for the cheapest, fastest model that clears your quality bar.

A Decision Table

To pull it together, here is a starting map from task shape to what to prioritize:

Your task Prioritize Notes
High-volume classification Cost, latency A small fast model usually wins
Customer-facing chat Latency, capability Balance speed with answer quality
Complex research agent Capability, context, tools Frontier model earns its cost here
Structured data extraction Format reliability, cost Test JSON compliance directly
Summarizing long documents Context length, capability Confirm it uses long context well
Privacy-sensitive workloads Data control Open weights or a private deployment

Treat this as a starting point that narrows your shortlist, then let your own eval make the final decision.

Don't Forget the Data Layer

One thing that does not depend on your model choice: the quality of the data you feed it. A better model cannot rescue answers built on messy, noisy input, and much of that input comes from the web as tangled HTML.

link.sc fetches any URL and returns clean markdown, so whichever model you land on gets model-ready text instead of scraped page clutter. Getting the data layer right often does more for output quality than a marginal upgrade in model choice.

The Bottom Line

Choosing an LLM is a fit problem, not a ranking problem. Start from your task's real needs, weigh capability against cost and latency, pick open or proprietary based on control and scale, and confirm context length and tool support match your use case. Then ignore the leaderboards and run your top candidates on your own data. The right model is the cheapest, fastest one that clears your quality bar, and that model is different for every task.


Whichever model you choose, feed it clean data. Fetch model-ready web content with link.sc.