Skip to main content
/blogguideby marcus rodriguez8 min read

Which AI Model Should You Use? A Routing Cheat Sheet for Chat, Image and Video (2026)

Which AI model to use for each task in 2026: chat, image and video cheat sheets with model ids, when to step up, and a simple router in code.

Short answer: start every task on a fast, low-cost model and move up only when real examples show the cheaper one isn't good enough. For most teams in October 2026 that means Gemini 3.8 Flash or Claude Haiku 5.5 for summaries, classification and extraction; Claude Sonnet 5.5 or GPT-6.1 Sol for writing and everyday reasoning; Claude Opus 5.5 or GPT-6 Astra for the hardest problems; Perplexity Sonar when answers need live web sources; Nano Banana 2.1 for image edits, FLUX 3 for photorealism and Midjourney V7 for style; and Veo 3.1 Fast for video with sound. The cheat sheets below go task by task, with model ids for the LazySusan API and the reasoning behind each pick.

The one rule: start cheap, escalate on evidence

Model choice is the biggest lever on both quality and cost. For a typical request, the most expensive chat models cost around a hundred times the cheapest. Most tasks don't need the top of the range, and the ones that do are easy to spot once you test.

The process that works:

  1. Collect 30 to 50 real examples of the task, with what a good answer looks like.
  2. Run them on the cheap default and on one step up.
  3. Read the failures. If the cheap model fails on things that matter, step up. If both fail the same way, the problem is the prompt, not the model.
  4. Write the decision down next to the model id in config, so the next person knows why.

Treat these cheat sheets as starting points for step 2, not verdicts. Your data wins.

Chat and text: the cheat sheet

TaskStart withStep up toNotes
Classification, tagging, routingClaude Haiku 5.5 (anthropic/claude-haiku-5-5)Gemini 3.8 FlashShort outputs; cheap models do this well
Extraction to JSONGemini 3.8 Flash (google/gemini-3.8-flash)GPT-6.1 SolCheck JSON-mode support on each candidate
Summaries of tickets, calls, emailsGemini 3.8 FlashClaude Sonnet 5.5Step up when tone matters, not length
Very high volume, simple tasksGPT-6 Luna (openai/gpt-6-luna) or Gemini 3.5 Flash-LiteClaude Haiku 5.5Lowest cost per request
Customer-facing writingClaude Sonnet 5.5 (anthropic/claude-sonnet-5-5)Claude Opus 5.5Sonnet is a strong default for prose
General reasoning and analysisGPT-6.1 Sol (openai/gpt-6.1-sol)GPT-6 AstraLeave room in max tokens for reasoning
Hardest reasoning, complex plansClaude Opus 5.5 or GPT-6 AstraClaude Fable 5.1Reserve for tasks that fail lower down
Long documents and big codebasesGemini 3.1 Pro (google/gemini-3.1-pro)Claude Opus 5.5Up to 1M tokens of context
Code generation and reviewClaude Sonnet 5.5Claude Opus 5.5 or GPT-6.1 SolGrok Build (xai/grok-build-0.1) is tuned for code too
Answers that need current web sourcesSonar (perplexity/sonar)Sonar Pro, Sonar Reasoning ProReturns citations; search adds a per-request fee
Low-cost reasoningDeepSeek V4.1 Flash (deepseek/deepseek-flash)DeepSeek V4 ProText only, 128K context
Fast answers with a direct toneGrok 4.3 (xai/grok-4.3)Grok 4.71M-token context
Reading images: screenshots, receipts, photosGemini 3.8 FlashGPT-6.1 Sol or Claude Sonnet 5.5DeepSeek and Perplexity models are text-only

A few things that trip people up:

  • Reasoning models spend tokens thinking. GPT-6, Gemini 3.x, Grok, DeepSeek V4 Pro and Sonar Reasoning Pro use part of your max tokens before answering. With a very small limit you can get an empty answer.
  • Some settings are ignored. OpenAI's GPT-6 models ignore temperature, top_p and the penalties.
  • Long context isn't free. A million-token window is useful, but you pay for every token you send, every time. Retrieve the relevant parts when you can.

Images: the cheat sheet

TaskStart withModel idWhy
Edit an existing photoNano Banana 2.1google/nano-banana-2.1Changes one thing, keeps the rest; up to 3 reference images
Final, high-detail assetsNano Banana Progoogle/nano-banana-proBetter fine detail and text than 2.1
Long, precise prompts, text in imagesGPT Image 2.5openai/gpt-image-2.5Follows detailed instructions; low, medium or high quality
Photorealistic product and lifestyle shotsFLUX 3bfl/flux-3Strong photorealism
High-resolution outputFLUX 1.1 Ultrabfl/flux-pro-1.1-ultraUp to 4MP
Stylised, art-directed imagesMidjourney V7midjourney/v7Distinctive look
Anime and illustrationNiji 6midjourney/niji-6Illustration styles
Posters, logos, typographyIdeogram 3.0ideogram/ideogram-3Best-in-class text in images
Icons and scalable illustrationsRecraft V3 Vectorrecraft/recraft-v3-vectorOutputs SVG
Open-model look, flexible stylesStable Diffusion 3.5 Largestability/sd-3.5-largeClassic open-model results
Cheap drafts and variationsLuma Photon Flash or Grok Imagineluma/photon-flash-1, xai/grok-imagine-imageA few credits to a couple of dozen per image

The image equivalent of "start cheap" is to draft on Photon Flash or Grok Imagine, pick the winners, and re-render them on the model you'd ship.

Video: the cheat sheet

TaskStart withModel idWhy
Short clip with dialogue or soundVeo 3.1 Fastgoogle/veo-3.1-fastNative audio at a fraction of full Veo's price
The final version of that clipVeo 3.1google/veo-3.1Best quality in the Veo family
Testing promptsVeo 3.1 Litegoogle/veo-3.1-liteLowest-cost Veo, still with audio
Cinematic camera movesRunway Gen-4.5runway/gen-4.5Strong motion and physics
Animate a still image cheaplyRunway Gen-4 Turborunway/gen-4-turboNeeds a starting image
People, faces, body movementHailuo 2.3minimax/hailuo-2.3Good expressions; no audio
Square, ultrawide or portrait framingLuma Ray 2luma/ray-2Six aspect ratios
Quick stylised social clipsPika 2.5pika/pika-2.5Fast, playful
Lowest-cost image to videoVidu Q2 Turbovidu/viduq2-turboNeeds a starting image

Only the Veo models generate audio. For the others, add a voiceover or music track separately. Sora isn't on the list because OpenAI shut it down; here's what replaced it.

Put the cheat sheet in code

A routing table is just a map from task to model id. Keep it in one file, read overrides from the environment, and tag every call with the task so the console shows cost per task:

js
import LazySusan from "lazysusan";

const ls = new LazySusan();

// task -> [default, step-up]
const ROUTES = {
  classify:  ["anthropic/claude-haiku-5-5", "google/gemini-3.8-flash"],
  summarize: ["google/gemini-3.8-flash", "anthropic/claude-sonnet-5-5"],
  write:     ["anthropic/claude-sonnet-5-5", "anthropic/claude-opus-5-5"],
  reason:    ["openai/gpt-6.1-sol", "openai/gpt-6-astra"],
  research:  ["perplexity/sonar", "perplexity/sonar-pro"],
};

export async function run(task, messages, { escalate = false, maxTokens = 1000 } = {}) {
  const [primary, stepUp] = ROUTES[task];
  const model = escalate ? stepUp : primary;
  return ls.chat.create({ model, messages, maxTokens, metadata: { task, model_tier: escalate ? "step-up" : "default" } });
}

// Escalate on a signal you trust: a failed validation, a low confidence score, a user retry
export async function summarizeChecked(text) {
  const messages = [{ role: "user", content: `Summarise as JSON {"summary": string}:\n${text}` }];
  const first = await run("summarize", messages, { maxTokens: 400 });
  try {
    return JSON.parse(first.text);
  } catch {
    const second = await run("summarize", messages, { escalate: true, maxTokens: 400 });
    return JSON.parse(second.text);
  }
}

Two things make this work. First, every model in a category takes the same request, so a route is just a string; there's nothing else to change (more on that here). Second, the task and model_tier tags let you see how often each route escalates and what it costs. If a route escalates more than a third of the time, the step-up model should probably be the default.

Keep the expensive models for the jobs that earn them

Routing is also a cost control. Give each service's key an allowlist of the models in its routes, so a typo can't send production traffic to the most expensive model in the catalog, and set a monthly budget per key. Setting AI API budgets per developer, project and environment covers how.

Not writing code?

The same models are in the LazySusan app, where you can switch models mid-conversation or compare several side by side. The models page lists the current lineup and pricing has the app plans, which are separate from API credits. If you're choosing between assistants rather than routing between them, ChatGPT vs Claude vs Gemini is the friendlier read.


FAQ

Which AI model should I use for summarising text? Start with a fast, low-cost model such as Gemini 3.8 Flash or Claude Haiku 5.5. Step up to Claude Sonnet 5.5 if tone or nuance matters and the cheaper model falls short on your real examples.

What's the best model for coding? Claude Sonnet 5.5 is a strong default, with Claude Opus 5.5 and GPT-6.1 Sol for harder problems. Grok Build is tuned for code too. Test on your own codebase before committing.

Which model has the largest context window? The Claude, Gemini and Grok models in the LazySusan API accept up to 1 million tokens. GPT-6 models accept 400K, and DeepSeek and Perplexity models around 128K.

What is LLM routing? Sending each request to a model chosen for its task: a cheap model for simple work, a stronger one for hard work. With one API for every model, a route is just a model id in a lookup table.

Which AI video model generates sound? In the LazySusan API, the Google Veo 3.1 models (Veo 3.1, Veo 3.1 Fast and Veo 3.1 Lite) generate audio with the video. Other video models return silent clips.

get started

Stop juggling AI subscriptions.

ChatGPT, Claude, Gemini, Grok and the leading image, video and voice models in one workspace.

Starter is $8/month. Cancel anytime.