Best AI model for programming: how to choose by the numbers

Which criteria to compare coding models on, which catalog models make good candidates, what an agent session costs at October 7, 2026 prices, and how to test models on your own repository.

7 min · · development · models

There's no universal answer to "what's the best AI model for programming": one developer runs an agent that edits a large monorepo, another writes Python scripts and SQL queries from descriptions. Below: the criteria worth comparing models on, candidates from the Zukko catalog with their intelligence index and prices as of October 7, 2026, the cost of an agent session, and a way to test models on your own repository.

Best AI model for programming: selection criteria

Intelligence index

In the Zukko catalog, models have an intelligence index — the Artificial Analysis Intelligence Index, a composite score across a set of benchmarks. It reflects a model's overall level, not a dedicated "how well does it write code" rating. It's good for a first cut: separating strong models from high-volume ones.

Input and cache price

At every step an agent resends a large context to the model: the system prompt, tool descriptions, files it has read, the history. The answers are short — an edit, a command, a couple of paragraphs. So in agent work a large share of the bill often comes from input and cache — don't look at the output price alone.

Connection format

For Claude, the cache discount comes only with the Anthropic format: Claude Code, the Anthropic SDK, /v1/messages. In clients using the OpenAI-compatible format (Cursor, Cline, Kilo Code and similar), all Claude input is billed at the input price. For GPT, caching is visible in both formats. More on choosing a format in the docs.

Context

Most models in the catalog have a 1M-token window; GLM 5.3 and GLM 5.3 Flash have 128K. For large repositories and long agent sessions, context headroom matters: the history grows with every step.

Agent work

An agent calls tools: it reads files, runs tests, edits code. How reliably a particular model does this in your agent with your tools isn't shown by the overall index. We have no numbers on it — it's checked by running it, covered below.

Image input

Needed if you show the model UI screenshots, mockups or diagrams. Among the candidates below, all Claude and GPT models accept images, as does Qwen 3.8 Max; GLM 5.3 and DeepSeek V4.1 Flash don't.

Candidates: index, price, context

Zukko prices in USD per 1M tokens, as of October 7, 2026. "Cache write" is billed only for Claude and only in the Anthropic format; for the other models it isn't charged separately.

ModelidIndexInput / outputCache: read / writeContext
Claude Opus 5.5claude-opus-5-5580.8 / 40.08 / 11M
GPT-6 Astragpt-6-astra530.62 / 3.050.063 / —1M
Claude Fable 5.1claude-fable-5-1537 / 350.7 / 8.751M
GPT-6.1 Solgpt-6.1-sol520.27 / 1.320.013 / —1M
Claude Sonnet 5claude-sonnet-5no data0.4 / 20.05 / 0.51M
Qwen 3.8 Maxqwen3.8-max450.088 / 0.2380.088 / —1M
GLM 5.3glm-5.3450.1 / 0.10.1 / —128K
DeepSeek V4.1 Flashdeepseek-v4.1-flash390.013 / 0.0380.013 / —1M

How to group them by task for testing:

  • Hard tasks — architecture, large refactors, untangling a nasty bug. Candidates: high-index models — Claude Opus 5.5, GPT-6 Astra, GPT-6.1 Sol.
  • Everyday edits in an agent — Claude Sonnet 5 (no index in the catalog, testing decides), GPT-6.1 Sol, GLM 5.3, Qwen 3.8 Max.
  • High-volume simple tasks — docstrings, commit messages, template-based tests. DeepSeek V4.1 Flash and other cheap models.

This is a list for testing, not a verdict. For the current list and prices, call GET https://api.zukko.pro/v1/models or open the Models page in the dashboard.

What an agent session costs

An example agent step: 2,000 fresh input tokens, 55,000 read from cache, 3,000 written to cache, 1,500 output. A session is 100 such steps. Step formula:

(fresh input × input price + cache read × cache read price + cache write × cache write price + output × output price) / 1,000,000

For models without a separate cache write charge, those 3,000 tokens count as regular input, so fresh input is 5,000.

Model and formatStep calculationStep100 steps
Claude Opus 5.5, Anthropic2,000 × 0.8 + 55,000 × 0.08 + 3,000 × 1 + 1,500 × 4 = 15,000$0.015$1.50
Claude Sonnet 5, Anthropic2,000 × 0.4 + 55,000 × 0.05 + 3,000 × 0.5 + 1,500 × 2 = 8,050$0.00805$0.805
GPT-6.1 Sol5,000 × 0.27 + 55,000 × 0.013 + 1,500 × 1.32 = 4,045$0.004045$0.4045
DeepSeek V4.1 Flash60,000 × 0.013 + 1,500 × 0.038 = 837$0.000837$0.0837
Claude Opus 5.5, OpenAI format60,000 × 0.8 + 1,500 × 4 = 54,000$0.054$5.40

The last row is the same Opus 5.5 session, but through an OpenAI-compatible client, where Claude gets no cache discount. For DeepSeek V4.1 Flash the cache read price equals the input price, so all input is billed at 0.013.

This is an example on October 7, 2026 prices. In a real session the cache share depends on the agent and the pauses between steps: the cache lives for a limited time. More in the key limits and cache docs.

How to test models on your own repository

The most reliable way to choose is to give the candidates the same real tasks.

  1. Take 5–10 already solved tasks from the project history: closed issues or commits that have tests. That gives you a reference.
  2. Give each model its own copy of the code at the commit before the fix:
bash
git worktree add -b try-opus ../try-opus <commit-before-fix>
git worktree add -b try-sol ../try-sol <commit-before-fix>
  1. One agent and one task text; only the model changes. For example, in Claude Code:
bash
export ANTHROPIC_BASE_URL=https://api.zukko.pro
export ANTHROPIC_AUTH_TOKEN=fetch_your_key
export ANTHROPIC_MODEL=claude-opus-5-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-opus-5-5
cd ../try-opus && claude

For the second run, set ANTHROPIC_MODEL=gpt-6.1-sol and ANTHROPIC_DEFAULT_HAIKU_MODEL=gpt-6.1-sol and start the agent in ../try-sol. The gateway converts requests for any model, so you can call GPT, DeepSeek or GLM from Claude Code too. ANTHROPIC_DEFAULT_HAIKU_MODEL is required: Claude Code sends background requests to the Haiku-slot model (by default claude-haiku-*), which is not in the Zukko catalog, and the gateway answers an unknown model name with 404 model_not_found. Here it points to the same model, so background requests also go to the model under test. If you switch with /model opus or /model sonnet during a session, also set ANTHROPIC_DEFAULT_OPUS_MODEL and ANTHROPIC_DEFAULT_SONNET_MODEL to catalog models. Step-by-step setup is in the Claude Code docs.

  1. Score everything in one table:
TaskModelTests passUnrelated changes in diffTimes you intervenedCost
issue-123claude-opus-5-5
issue-123gpt-6.1-sol
  1. Count the money. Spending is shown in the dashboard under Usage. For the experiment, it helps to create a separate key with a daily limit: if the agent loops, requests stop with a 429 key_daily_limit_reached error instead of draining your balance.

Pick the cheapest model that handles your tasks without extra interventions, and keep a strong one for the hard cases. If you haven't connected yet, create a key in the dashboard.

FAQ

So which model is actually the best?

By intelligence index as of October 7, 2026, Claude Opus 5.5 leads among Zukko models (58). But the index is composite, not coding-specific, and a cheaper model may be enough for your tasks. Only a test on your own code gives the answer.

Can I use GPT or DeepSeek in Claude Code?

Yes. Set the model id in ANTHROPIC_MODEL and in ANTHROPIC_DEFAULT_HAIKU_MODEL (otherwise background requests go to claude-haiku-* and get 404 model_not_found), and the gateway converts the requests. Check on your own tasks how reliably the model works with Claude Code's tools.

Why does Claude cost more in Cursor than in Claude Code?

Cursor connects through the OpenAI-compatible format, where all Claude input is billed at the input price. In Claude Code (Anthropic format), repeated context is read from cache at the cache read price. Other options instead of Cursor are covered in the article Cursor alternatives in 2026.

Is GLM 5.3's 128K context enough?

For individual tasks and short sessions it often is. In long agent sessions on a large repository the history can outgrow the window — then go with 1M-context models.

zukko

Pay 25×
less

for Claude Code & ChatGPT

One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.

Get API keyDocumentation

api.zukko.pro · fetch_*

Best AI model for programming: criteria and prices · Zukko