Experiment 1 · November 2026

More thinking costs more tokens, not always more accuracy.

I ran four open AI models on my own graphics card and counted the tokens each task used: thinking off and on, a single answer and an agent. The price per token stayed fixed. Only the tokens per task and the success rate changed.

  • 4 open models
  • 12 settings
  • 4 tasks
  • 2,540 answers scored against a key
  • 1 RTX 5090
  • Run on 8 November 2026

The short version

Tokens per task decide the bill, and they move a lot.

  • ×6.8tokens with thinking onSmall model, hard maths, and 20 points less accuracy.
  • ×11tokens as an agentBut only ×3.5 the cost, because input is cheap.
  • ×128cost, frontier vs small modelSame school maths questions, at list prices (projection).
  • ×14speed gap on one GPU287 against 20 tokens per second.

Measure tokens per task and the success rate before you pay for more thinking, a bigger model or an agent.

Finding 1 · Thinking

More thinking means more tokens, not always more accuracy.

The same fifty hard maths problems, with thinking off and on. Tokens per problem rose 1.3 to 6.8 times. Accuracy moved by −20 to +14 points.

The small model thought until it ran out of room on 10 of the 50 problems, and solved fewer than without thinking. On a hundred school maths problems, thinking bought one to three points for 1.3 to 6.5 times the tokens.

Turn thinking on only where it raises the success rate on your own test.

Thinking multiplied tokens per problem by up to 6.8.

Hard maths (MATH-500, level 5), 50 problems: mean tokens per problem · % correct

  • Thinking off (gpt-oss: effort low)
  • Thinking on (Qwen3.8-27B: xhigh, its default; gpt-oss: effort high)
Qwen3.8-27B×1.3 tokensQwen3.8-27B, thinking off: 2,318 tokens per problem, 94% correct2,318 · 94%Qwen3.8-27B, effort xhigh (default): 3,027 tokens per problem, 98% correct3,027 · 98%Gemma 4 31B×4.8 tokensGemma 4 31B, thinking off: 897 tokens per problem, 98% correct897 · 98%Gemma 4 31B, thinking on: 4,319 tokens per problem, 100% correct4,319 · 100%gpt-oss-20b×6.5 tokensgpt-oss-20b, effort low: 1,224 tokens per problem, 84% correct1,224 · 84%gpt-oss-20b, effort high: 7,954 tokens per problem, 98% correct7,954 · 98%Qwen3.5-4B×6.8 tokensQwen3.5-4B, thinking off: 2,422 tokens per problem, 100% correct2,422 · 100%Qwen3.5-4B, thinking on: 16,400 tokens per problem, 80% correct16,400 · 80%−20 pts: ran out of room on 10 of 50

Source: own measurement, Dr. Kalun Ho (2026) · chart redrawn in brand style

Finding 2 · Classifying

The model that used the most tokens was not the most accurate.

A hundred customer messages, each to be sorted into one of 77 intents. The best result came from gpt-oss-20b at low effort: 87 % for 570 tokens per message. Qwen3.8-27B at its default effort scored 79 % for 676 tokens. The small model with thinking on reached 75 % for 2,856.

Test each task on several models before you pick one.

The best setting used a fifth of the tokens of the most expensive one.

Banking77, 100 customer messages, 77 intents: % correct by mean tokens per message, every setting

  • Thinking off or low effort
  • Thinking on, medium, high or xhigh
60%70%80%90%01,0002,0003,000Tokens per messageQwen3.5-4B, thinking off: 70% correct, 456 tokens per messageQwen3.5-4B, thinking on: 75% correct, 2,856 tokens per messageQwen3.8-27B, thinking off: 71% correct, 456 tokens per messageQwen3.8-27B, effort low: 79% correct, 632 tokens per messageQwen3.8-27B, effort medium (no instruction): 80% correct, 664 tokens per messageQwen3.8-27B, effort xhigh (default): 79% correct, 676 tokens per messageGemma 4 31B, thinking off: 81% correct, 603 tokens per messageGemma 4 31B, thinking on: 85% correct, 987 tokens per messagegpt-oss-20b, effort low: 87% correct, 570 tokens per messagegpt-oss-20b, effort high: 84% correct, 979 tokens per messagegpt-oss-20b, effort low: 87%Qwen3.8-27B, effort xhigh: 79%Qwen3.5-4B, thinking on: 75%

Source: own measurement, Dr. Kalun Ho (2026)

Finding 3 · Agents

An agent sends its whole context again at every step.

As an agent with three tools, Qwen3.8-27B answered all twenty invoice questions correctly, with 3.8 calls and 5,613 tokens per question. A single answer to a school maths problem took 494 tokens: the agent used 11 times as many, on a different task.

Each call sends everything seen so far. 93 % of the tokens are input, which costs a fifth of output at list prices. So the cost rises about 3.5 times, not 11.

Use an agent only when the task needs to look something up.

Every call sends more: 712 tokens, then 2,025 by the fourth.

Invoice agent, Qwen3.8-27B, thinking off: input tokens sent per call (mean of the 12 four-call questions)

01,0002,000Call 1: 712 tokens sent (mean of the 12 four-call questions)712Call 1Call 2: 1,104 tokens sent (mean of the 12 four-call questions)1,104Call 2Call 3: 1,803 tokens sent (mean of the 12 four-call questions)1,803Call 3Call 4: 2,025 tokens sent (mean of the 12 four-call questions)2,025Call 4Each call sends everything seen so far

Source: own measurement, Dr. Kalun Ho (2026)

Finding 4 · Cost

Which model answers moves the bill more than thinking or agents.

Priced at OpenAI’s list prices, a million school maths questions cost €144 with the small model and €18,325 with the frontier model: 128 times more. Thinking at xhigh adds a quarter (€22,859). The agent, on its invoice questions, comes to €64,643.

The token counts come from the open models and the prices from a commercial price list, so this is a projection, not a bill.

Route each task to the smallest model that passes your test.

The frontier model costs 128 times the small one.

€ per million questions, measured tokens at OpenAI list prices (projection)

Small model (gpt-6-luna): €144 per million questionsSmall modelgpt-6-luna€144Frontier model (gpt-6-astra): €18,325 per million questionsFrontier modelgpt-6-astra€18,325 ×128Frontier, xhigh (gpt-6-astra): €22,859 per million questionsFrontier, xhighgpt-6-astra€22,859Frontier as an agent (gpt-6-astra): €64,643 per million questionsFrontier as an agentgpt-6-astra€64,643Invoice questions: a different task from the others

Source: own measurement, Dr. Kalun Ho (2026); OpenAI API pricing, 8 November 2026; ECB rate 1 € = 1.1165 $

Finding 5 · Speed

On your own hardware, time is the bill.

One request at a time on one RTX 5090: gpt-oss-20b wrote 287 tokens per second, Qwen3.5-4B 157, Gemma 4 31B 71 and Qwen3.8-27B 20. That is 14 times apart.

Thinking multiplies the wait. The small model took 19 seconds per hard problem with thinking off, and 162 seconds with it on.

On your own hardware, measure the time per task, not only the tokens.

The fastest model writes 14 times as fast as the slowest.

Single stream, one RTX 5090, vLLM: output tokens per second (mean of 3 runs)

gpt-oss-20b: 287 tokens per second, single streamgpt-oss-20b287 tokens/sQwen3.5-4B: 157 tokens per second, single streamQwen3.5-4B157 tokens/sGemma 4 31B: 71 tokens per second, single streamGemma 4 31B71 tokens/sQwen3.8-27B: 20 tokens per second, single streamQwen3.8-27B20 tokens/s (14× slower)

Source: own measurement, Dr. Kalun Ho (2026)

How it was measured

Same items for every model, success counted against a key.

Four tasks with known answers, so nothing is judged by taste. Every token of every call is counted, including the context an agent sends again at each step.

TaskDataItemsStands forSuccess
ClassifyBanking77 test set (PolyAI, CC BY 4.0), random sample100routing a support ticketexact intent, of 77
CalculateGSM8K test set (OpenAI, MIT), random sample100a multi-step business calculationfinal number matches
Hard mathsMATH-500 (HuggingFaceH4, MIT), level 5, integer answers50a hard reasoning probleminteger matches
AgentSynthetic invoice ledger: 500 invoices, 12 suppliers, 4 quarters; tools to list suppliers, fetch invoices and calculate; up to 15 steps20an analyst question answered by looking things upmatches the key computed from the ledger
ModelMaker, releaseBuild on the cardSettings tested
Qwen3.5-4BAlibaba, March 2026BF16thinking off, thinking on
Qwen3.8-27BAlibaba, August 2026NVFP4, 4-bitthinking off; effort low, medium, xhigh (its default); as an agent: thinking off, effort low
Gemma 4 31BGoogle, 2026QAT W4A16, 4-bitthinking off, thinking on
gpt-oss-20bOpenAI, August 2025MXFP4effort low, effort high
  • Hardware. One NVIDIA RTX 5090 with 32 GB, my own, at home. No employer hardware and no employer data.
  • Software. vLLM 0.26.0, one model at a time; Qwen3.8-27B ran on a vLLM development build for its 4-bit kernels. Context up to 32,768 tokens, answers up to 28,000.
  • Sampling. The model makers’ recommended settings for each mode. Items sampled with seed 42, requests with seed 42, one run per item.
  • Counting. Tokens per item are prompt plus completion tokens, summed over every call. Reasoning tokens are part of the completion. An answer that hit the limit counts as wrong.

Full results

Every setting, every task.

Means per item. The same numbers are in the repository as CSV, one row per item and per call.

Hard maths: MATH-500 level 5, 50 problems
ModelSettingCorrectAccuracyTokens per itemMedianReasoning tokensTruncatedTokens per correct answer
Qwen3.5-4Bthinking off50 of 50100%2,4221,44100%2,422
Qwen3.5-4Bthinking on40 of 5080%16,40018,76015,55320%20,501
Qwen3.8-27Bthinking off47 of 5094%2,3181,57200%2,465
Qwen3.8-27Beffort low48 of 5096%2,3741,3241,7030%2,473
Qwen3.8-27Beffort medium (no instruction)49 of 5098%1,9691,2981,3520%2,009
Qwen3.8-27Beffort xhigh (default)49 of 5098%3,0271,5842,5510%3,089
Gemma 4 31Bthinking off49 of 5098%89784100%916
Gemma 4 31Bthinking on50 of 50100%4,3193,9483,4910%4,319
gpt-oss-20beffort low42 of 5084%1,2249056200%1,457
gpt-oss-20beffort high49 of 5098%7,9544,1067,3622%8,117
Classify: Banking77, 100 customer messages, 77 intents
ModelSettingCorrectAccuracyTokens per itemMedianReasoning tokensTruncatedTokens per correct answer
Qwen3.5-4Bthinking off70 of 10070%45645300%651
Qwen3.5-4Bthinking on75 of 10075%2,8561,8282,4000%3,808
Qwen3.8-27Bthinking off71 of 10071%45645400%642
Qwen3.8-27Beffort low79 of 10079%6326221460%800
Qwen3.8-27Beffort medium (no instruction)80 of 10080%6646482090%830
Qwen3.8-27Beffort xhigh (default)79 of 10079%6765791780%855
Gemma 4 31Bthinking off81 of 10081%60360100%744
Gemma 4 31Bthinking on85 of 10085%9878763770%1,161
gpt-oss-20beffort low87 of 10087%570555410%656
gpt-oss-20beffort high84 of 10084%9797824500%1,165
Calculate: GSM8K, 100 school maths problems
ModelSettingCorrectAccuracyTokens per itemMedianReasoning tokensTruncatedTokens per correct answer
Qwen3.5-4Bthinking off92 of 10092%40636400%441
Qwen3.5-4Bthinking on93 of 10093%2,6411,3262,3182%2,840
Qwen3.8-27Bthinking off96 of 10096%49442500%515
Qwen3.8-27Beffort low96 of 10096%4343961720%452
Qwen3.8-27Beffort medium (no instruction)96 of 10096%4493872030%468
Qwen3.8-27Beffort xhigh (default)97 of 10097%6273194190%647
Gemma 4 31Bthinking off94 of 10094%34132000%363
Gemma 4 31Bthinking on97 of 10097%1,4018021,0320%1,445
gpt-oss-20beffort low96 of 10096%254234830%265
gpt-oss-20beffort high97 of 10097%9956188140%1,025
Agent: 20 invoice questions, 3 tools, up to 15 steps
ModelSettingCorrectAccuracyTokens per itemMedianReasoning tokensCalls per itemTruncatedTokens per correct answer
Qwen3.8-27Bagent, thinking off20 of 20100%5,6135,92003.80%5,613
Qwen3.8-27Bagent, effort low20 of 20100%5,4774,8263803.30%5,477
Speed: one request at a time
ModelTime to first tokenTokens per secondOutput tokensRuns
gpt-oss-20b, effort low0.05 s286.66493
Qwen3.5-4B, thinking off0.07 s157.16073
Gemma 4 31B, thinking off0.05 s71.34253
Qwen3.8-27B, thinking off0.16 s20.35453

Decode speed after the first token, mean of 3 runs. Speed depends on the 4-bit format, the vLLM version and how many requests share the card.

Limits

A measurement of this setup, not of AI in general.

  • Open models only. Commercial models count and reason differently. The multipliers are the point, not the absolute token counts.
  • Benchmarks stand in for work. The tasks have answer keys, real business tasks rarely do. The agent task is synthetic.
  • Small samples. One run per item, 20 agent questions and 50 hard problems. A second seed would show the spread.
  • Effort is an instruction. For Qwen3.8-27B, “effort” is a line in the system prompt, not a token budget, and “medium” adds nothing.
  • Euros are a projection. Measured tokens at commercial list prices, which change.

Data and code

Check it, rerun it, cite it.

The test code, the answer keys and the raw results, one row per item and per call, are on GitHub, together with a technical report that adds confidence intervals and the full method. Questions and corrections are welcome there as issues.

How to cite

Kalun Ho (2026). Cheaper Tokens, Costlier Tasks: Measuring Tokens per Task Across Reasoning Settings, Model Size and Agentic Tool Use. Technical report. https://github.com/kalunho17/yt-experiment-001

Licences: code MIT; results, figures, report and the invoice ledger CC BY 4.0. The benchmarks keep their own licences: Banking77 (PolyAI, CC BY 4.0), GSM8K (OpenAI, MIT), MATH-500 (HuggingFaceH4, MIT).

The video explains what it means for your bill.

Subscribe on YouTube to see it. The handout has every chart and source.