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.
| Model | id | Index | Input / output | Cache: read / write | Context |
|---|---|---|---|---|---|
| Claude Opus 5.5 | claude-opus-5-5 | 58 | 0.8 / 4 | 0.08 / 1 | 1M |
| GPT-6 Astra | gpt-6-astra | 53 | 0.62 / 3.05 | 0.063 / — | 1M |
| Claude Fable 5.1 | claude-fable-5-1 | 53 | 7 / 35 | 0.7 / 8.75 | 1M |
| GPT-6.1 Sol | gpt-6.1-sol | 52 | 0.27 / 1.32 | 0.013 / — | 1M |
| Claude Sonnet 5 | claude-sonnet-5 | no data | 0.4 / 2 | 0.05 / 0.5 | 1M |
| Qwen 3.8 Max | qwen3.8-max | 45 | 0.088 / 0.238 | 0.088 / — | 1M |
| GLM 5.3 | glm-5.3 | 45 | 0.1 / 0.1 | 0.1 / — | 128K |
| DeepSeek V4.1 Flash | deepseek-v4.1-flash | 39 | 0.013 / 0.038 | 0.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 format | Step calculation | Step | 100 steps |
|---|---|---|---|
| Claude Opus 5.5, Anthropic | 2,000 × 0.8 + 55,000 × 0.08 + 3,000 × 1 + 1,500 × 4 = 15,000 | $0.015 | $1.50 |
| Claude Sonnet 5, Anthropic | 2,000 × 0.4 + 55,000 × 0.05 + 3,000 × 0.5 + 1,500 × 2 = 8,050 | $0.00805 | $0.805 |
| GPT-6.1 Sol | 5,000 × 0.27 + 55,000 × 0.013 + 1,500 × 1.32 = 4,045 | $0.004045 | $0.4045 |
| DeepSeek V4.1 Flash | 60,000 × 0.013 + 1,500 × 0.038 = 837 | $0.000837 | $0.0837 |
| Claude Opus 5.5, OpenAI format | 60,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.
- Take 5–10 already solved tasks from the project history: closed issues or commits that have tests. That gives you a reference.
- Give each model its own copy of the code at the commit before the fix:
git worktree add -b try-opus ../try-opus <commit-before-fix>
git worktree add -b try-sol ../try-sol <commit-before-fix>- One agent and one task text; only the model changes. For example, in Claude Code:
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 && claudeFor 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.
- Score everything in one table:
| Task | Model | Tests pass | Unrelated changes in diff | Times you intervened | Cost |
|---|---|---|---|---|---|
| issue-123 | claude-opus-5-5 | ||||
| issue-123 | gpt-6.1-sol |
- 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_reachederror 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.
Related articles
- Prompt Engineering Examples: 12 Ready-Made Templates for WorkTwelve prompt templates for everyday tasks: what each one says, why it is built that way, and what a single API call costs.
- A database for RAG: where to store knowledge — vector DB, search or contextRAG does not require a vector database. Four ways to store knowledge, the cost of a query for each, and a working SQLite example.
- The best AI for C# programming: choosing a model and setting up an agentWe give no ranking of the best model for C#, but we show how to compare options by price and index, set up an agent for .NET and verify the result with builds and tests.
- Claude Opus 4.6: what it is and how to move to Opus 5.5 safelyOpus 4.6, 4.7 and 4.8 are the previous generation, and the catalogue now has Opus 5 and 5.5. A four-step migration plan: model id, your own prompts, cost comparison, rollback.