Model Capabilities — Families, Variants, and What a Model Can Do
Phase 1 · Document 04 · LLM Vocabulary and Mental Models Prev: 03 — Inference Parameters · Next: 05 — Serving Terms
Table of Contents
- Why This Matters
- Core Concept
- Mental Model
- Hitchhiker's Guide
- Warmup Readings
- Deep Readings and External References
- Key Terms
- Important Facts
- Observations from Real Systems
- Common Misconceptions
- Engineering Decision Framework
- Hands-On Lab
- Verification Questions
- Takeaways
- Artifact Checklist
1. Why This Matters
Every model page is a list of capabilities dressed up in jargon: base vs instruct, chat vs reasoning, multimodal, embedding, reranker, tool-calling, structured-output. If you can't decode these labels, you'll pick a base model for a chat product (and get garbage), an embedding model for generation (and get an error), or a model without tool calling for an agent (and rebuild later). This vocabulary is the filter you apply on models.dev or Hugging Face before you ever look at price or benchmarks — it's how you go from thousands of models to the handful that could possibly do your job.
2. Core Concept
Model families and variants
A model family is a set of models from one lab sharing architecture and training lineage (e.g. "Llama 3", "Qwen2.5", "Gemini 2.5"). A variant is a specific member, distinguished by:
- Size (8B, 70B, …) — see 02 — Parameters.
- Training stage — base vs instruct vs reasoning.
- Modality — text, vision, audio.
- Purpose — chat, code, embedding, reranking.
The model ID is the exact string you pass to an API (gpt-4o-2024-08-06, meta-llama/Llama-3.1-8B-Instruct). An alias (gpt-4o, claude-3-5-sonnet-latest) points at a moving target; a versioned ID is pinned. (Aliases vs versions are covered in depth in 08 — Business and Pricing Terms.)
Training-stage capabilities
| Stage | What it is | Behavior |
|---|---|---|
| Base / foundation / pretrained | Trained only to predict next token on raw text | Completes text; does not follow instructions or chat well |
| Instruct / instruction-tuned | Base + supervised fine-tuning on instructions | Follows directions, answers questions |
| Chat | Instruct + dialogue formatting / RLHF | Multi-turn conversation, system prompts, refusals |
| Reasoning | Trained/tuned to emit intermediate reasoning before answering | Stronger on math/code/planning; slower, costs reasoning tokens |
A generative model produces tokens (all of the above). A foundation model is a large base model others build on.
Functional capabilities (the filter columns)
- Multimodal — accepts/produces more than text. Vision (image in), audio/STT (speech→text), TTS (text→speech). Inputs and outputs are listed separately; "multimodal input" ≠ "multimodal output."
- Embedding model — outputs a fixed-length vector representing meaning, not text. The engine of RAG retrieval and semantic search (Phase 9).
- Reranker — given a query and candidate documents, outputs relevance scores to reorder them. Improves retrieval precision; not a generator.
- Tool calling / function calling — the model can emit structured requests to call your functions (Phase 12).
- Structured output — the model can be constrained to a JSON schema.
- Reasoning support — exposes a thinking/effort control.
These are binary filters in catalogs: a model either supports tool calling or it doesn't. You filter first, then compare the survivors.
3. Mental Model
PICK ALONG FOUR AXES:
1. STAGE base ──► instruct ──► chat ──► reasoning
(raw) (follows) (talks) (thinks)
2. MODALITY text │ +vision │ +audio-in │ +audio-out (in ≠ out)
3. PURPOSE generate │ embed (→vector) │ rerank (→scores)
4. FEATURES [tool calling] [structured output] [reasoning] [streaming]
── these are yes/no FILTERS, applied before price/benchmarks
If a product needs an agent over private docs: PURPOSE=generate + embed, STAGE≥instruct, FEATURES must include tool calling + structured output. That single sentence eliminates 95% of the catalog.
4. Hitchhiker's Guide
What to look for first: stage (instruct/chat — not base, unless you're fine-tuning), the feature flags you actually need (tool calling? structured output? vision?), and whether it's a generator vs embedding vs reranker.
What to ignore at first: benchmark leaderboard rank. Capability fit gates everything; a model that can't call tools won't power your agent no matter its MMLU score.
What misleads beginners:
- Using a base model and wondering why it won't follow instructions.
- Assuming any chat model can output a vector (it can't — you need an embedding model).
- Assuming "multimodal" means it can generate images (usually it means it can read them).
- Assuming tool calling is universal (many open-weight chat models lack reliable tool calling).
How experts reason: capability is a filter applied before comparison. They write down the required capability set for the workload, filter the catalog to matches, then rank survivors by quality/cost/latency (Phase 5).
What matters in production: verify a claimed capability actually works at the reliability you need — "supports tool calling" can mean "emits plausible tool JSON 80% of the time," which is not production-grade for an agent.
Debug/verify: for embeddings, check output dimension and that two similar texts score as similar; for tool calling, run 50 prompts and measure the valid-call rate; for vision, send an image and confirm grounded answers.
Questions to ask: Is this instruct/chat or base? What modalities are supported in vs out? Is tool calling first-class and benchmarked? Is structured output grammar-constrained? Is there a paired embedding model?
What silently gets unreliable: tool calling that "mostly works," vision that hallucinates on dense images, and embedding/generation model mismatches (always embed queries and documents with the same embedding model).
5. Warmup Readings
| Title | Why to read it | What to extract | Difficulty | Time |
|---|---|---|---|---|
| Hugging Face — "The pipeline" / task types | Maps capabilities to task names | text-generation vs feature-extraction vs reranking | Beginner | 15 min |
| OpenAI — Embeddings guide | What an embedding model actually returns | A vector, not text; cosine similarity | Beginner | 10 min |
| Anthropic / OpenAI — Tool use overview | First-class tool-calling capability | The model emits a request; you execute | Beginner | 15 min |
| Llama/Qwen model card (base vs instruct rows) | See stage labels in the wild | Why "Instruct" matters for products | Beginner | 10 min |
6. Deep Readings and External References
| Title | URL | Why it matters | Read first | Lab connection |
|---|---|---|---|---|
| OpenAI Embeddings | https://platform.openai.com/docs/guides/embeddings | Canonical embedding capability | Use cases + dimensions | Embedding lab task |
| Anthropic Tool Use | https://docs.anthropic.com/en/docs/build-with-claude/tool-use | First-class tool calling | Defining tools, tool_choice | Tool-calling check |
| Cohere Rerank | https://docs.cohere.com/docs/rerank-overview | What a reranker does | Query+docs → scores | Rerank lab task |
| InstructGPT (training instruct models) | https://arxiv.org/abs/2203.02155 | Why instruct ≠ base | Abstract + method | Explains the stage axis |
| models.dev | https://models.dev/ | Capability columns as filters | Reasoning/Tool/Structured/Input cols | Phase 4 filtering lab |
7. Key Terms
| Term | Simple meaning | Technical meaning | Why it matters | Where it appears | How to use it |
|---|---|---|---|---|---|
| Model family | A model lineage | Shared architecture/training line | Track releases & trust | Model cards, catalogs | Follow a family's cadence |
| Variant | A specific member | Size/stage/modality version | Picks the right member | Model pages | Match to workload |
| Base model | Raw pretrained | Next-token only, no instruction tuning | Wrong for chat/products | Model cards | Use only to fine-tune |
| Instruct model | Follows directions | SFT on instructions | Default for apps | Model cards | Pick for most tasks |
| Chat model | Conversational | Dialogue-formatted + RLHF | Multi-turn products | Model cards | Pick for assistants |
| Reasoning model | "Thinks" first | Emits internal reasoning tokens | Hard tasks, higher cost | o-series, thinking models | Route hard tasks here |
| Multimodal | Beyond text | Image/audio in and/or out | Determines input types | Catalogs (Input col) | Match in vs out needs |
| Embedding model | Text → vector | Fixed-length semantic vector | Powers RAG/search | Embeddings docs | Same model for query+docs |
| Reranker | Reorders results | Query+docs → relevance scores | Boosts retrieval precision | Rerank docs | After first-stage retrieval |
| Tool calling | Calls your functions | Emits structured tool requests | Agents/automation | Tool-use docs | Filter agents on this |
| Structured output | Schema-constrained | JSON-schema/grammar decode | Reliable extraction | API docs | Filter pipelines on this |
| Model ID / alias | Exact vs moving name | Pinned vs latest pointer | Reproducibility | API config | Pin IDs in prod |
8. Important Facts
- A base model does not reliably follow instructions — products need instruct/chat variants.
- Embedding models output vectors, not text; you cannot "chat" with them, and you must use the same embedding model for queries and documents.
- "Multimodal" usually means input (e.g. vision = reading images); generating images/audio is a separate, rarer capability.
- Tool calling and structured output are not universal — many open-weight chat models support them weakly or not at all.
- Reasoning models trade latency and reasoning-token cost for quality on hard tasks; they're overkill (and pricier) for simple ones.
- A reranker is not a generator — it scores relevance to reorder retrieved candidates.
- Capability flags in catalogs are filters applied before quality/cost comparison.
- The same family often ships base + instruct + multiple sizes; read the variant, not just the family name.
9. Observations from Real Systems
- models.dev has dedicated columns for Reasoning, Tool Call, Structured output, and Input modality — designed exactly as the pre-filter described here.
- Hugging Face tags models by task (
text-generation,feature-extraction/embeddings,sentence-similarity,text-ranking) and stage (-Instruct,-Base) — your fastest capability filter. - OpenAI / Anthropic / Cohere ship separate model IDs for chat, embeddings, and rerank — proof these are distinct capabilities, not modes of one model.
- Cursor / coding tools route to a reasoning model for planning and a fast instruct/code model for autocomplete — capability-based routing in production.
- OpenRouter lets you filter models by supported features (tools, structured output, modalities) before sending traffic.
10. Common Misconceptions
| Misconception | Reality |
|---|---|
| "Any model can chat" | Base models don't follow instructions; use instruct/chat |
| "I can embed text with a chat model" | Use a dedicated embedding model that returns vectors |
| "Multimodal = generates images" | Usually means it reads images; generation is separate |
| "All chat models call tools" | Tool calling varies widely; many lack reliable support |
| "Reasoning models are strictly better" | They cost more (reasoning tokens) and add latency; route by need |
| "Reranker and generator are interchangeable" | Reranker scores relevance; it does not generate text |
11. Engineering Decision Framework
Write the required capability set FIRST, then filter the catalog:
Product = chat assistant?
→ STAGE ≥ instruct/chat; FEATURES: streaming. Tools/structured only if needed.
Product = agent / automation?
→ FEATURES MUST include tool calling + structured output; STAGE = instruct/chat;
verify reliability (measure valid-call rate), don't trust the flag.
Product = RAG / semantic search?
→ need an EMBEDDING model (+ optional RERANKER) AND a generator.
Embeddings and generation are different models.
Task = hard math/code/planning?
→ consider a REASONING variant; route simple sub-tasks to a cheap instruct model.
Input includes images/audio?
→ require matching MODALITY *in*; confirm whether you also need modality *out*.
Only AFTER filtering by capability → compare survivors on quality / cost / latency (Phase 5).
| Workload | Must-have capabilities |
|---|---|
| Customer-support chatbot | instruct/chat, streaming |
| Coding agent | instruct/chat, tool calling, structured output, (reasoning for planning) |
| RAG over docs | embedding model, generator, (reranker), structured output for citations |
| Invoice extraction | structured output, (vision if scanned), validation |
| Voice assistant | STT (audio-in) + generator + TTS (audio-out) |
12. Hands-On Lab
Goal
Build a capability classifier: given a workload description, output the required capability set; then verify two capabilities (embeddings, tool calling) actually behave as claimed.
Prerequisites
- Python 3.10+, an API key with access to a chat model and an embedding model.
Setup
pip install openai numpy
export OPENAI_API_KEY=sk-...
Steps
from openai import OpenAI
import numpy as np
client = OpenAI()
# 1. Embedding capability: similar texts → high cosine similarity
def embed(t): return np.array(client.embeddings.create(
model="text-embedding-3-small", input=t).data[0].embedding)
a, b, c = embed("a cat sat on the mat"), embed("a kitten rested on the rug"), embed("quarterly tax filing deadlines")
cos = lambda x, y: float(x @ y / (np.linalg.norm(x)*np.linalg.norm(y)))
print("similar:", round(cos(a, b), 3), "unrelated:", round(cos(a, c), 3))
# 2. Tool-calling capability: does the model emit a structured call?
tools = [{"type":"function","function":{
"name":"get_weather",
"parameters":{"type":"object","properties":{"city":{"type":"string"}},"required":["city"]}}}]
r = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role":"user","content":"What's the weather in Paris?"}],
tools=tools, tool_choice="auto")
print("tool_calls:", r.choices[0].message.tool_calls)
Expected output
similarcosine clearly higher thanunrelated.- A populated
tool_callswithget_weather({"city":"Paris"}).
Debugging tips
- Trying to embed with a chat model → error or nonsense; use an embedding model.
- Empty
tool_calls→ the model/provider may not support tools, ortool_choiceneeds"required".
Extension task
Write required_capabilities(workload: str) -> set[str] for the five workloads in Section 11, and assert it against your expectations.
Production extension
Run 50 tool-calling prompts and compute the valid-call rate (parses + matches schema). This is the real metric for "does this model support tool calling well enough to ship."
What to measure
Cosine similarity gap (similar vs unrelated); tool-call valid rate over 50 prompts.
Deliverables
required_capabilities()mapping for 5 workloads.- A short reliability note: measured tool-calling valid-rate for one model.
13. Verification Questions
Basic
- What's the difference between a base, instruct, and reasoning model?
- What does an embedding model output, and how is it different from a chat model?
- Does "multimodal" usually refer to input, output, or both? Why check separately?
Applied 4. List the must-have capabilities for a coding agent and for a RAG search feature. 5. Why must queries and documents be embedded with the same model?
Debugging 6. Your "tool-capable" model returns plain text instead of a tool call. Name two likely causes. 7. Retrieval quality is poor even with a good generator. Which capability/model might be missing?
System design 8. Design the model set for a voice assistant that answers questions over a private knowledge base. Name each capability and why.
Startup / product 9. A founder wants one model "that does everything." Explain, using capability axes, why a small set of specialized models is usually cheaper and more reliable.
14. Takeaways
- Decode every model along four axes: stage, modality, purpose, features.
- Base ≠ instruct ≠ chat ≠ reasoning — products almost always need instruct/chat.
- Embeddings and rerankers are not generators; RAG needs all three roles.
- Capabilities are filters applied before quality/cost/latency comparison.
- Multimodal usually means input; confirm in vs out.
- Verify claimed capabilities (especially tool calling) by measuring, not trusting the flag.
15. Artifact Checklist
-
Code:
required_capabilities(workload)classifier. - Code: embedding-similarity and tool-call verification scripts.
- Benchmark result: tool-calling valid-rate for one model.
- Notes: the four-axis model in your own words.
- Decision record: the capability set for one real workload you care about.
- Cheat card: the workload → must-have-capabilities table.
Next: 05 — Serving Terms