Skip to content

The design pages say what a reasoning cap costs - #759

Merged
WaylandYang merged 1 commit into
devfrom
docs/what-a-reasoning-cap-costs
Sep 18, 2026
Merged

WaylandYang merged 1 commit into
devfrom
docs/what-a-reasoning-cap-costs

Conversation

@WaylandYang

Copy link
Copy Markdown
Contributor

What capping the model's reasoning buys and what it costs, measured on the endpoint we run against.

The endpoint honours one of the four ways to ask for less thinking

On the same 1,310-character passage, with the same system prompt, one call each:

field reasoning tokens completion statements parsed
none (today) 32,925 34,391 14
reasoning_effort: low 16,074 17,550 12
thinking: {budget_tokens: 4096} 30,161 32,010 16
reasoning: {max_tokens: 4096} 39,586 41,213 16
max_tokens: 4096 43,968 45,428 13
thinking: {type: disabled} 0 4,096, cut unparseable

Only reasoning_effort is honoured, and a second pass pins it: low twice gives 15,486 and 16,537
reasoning tokens, medium 32,989 and 35,125, high 32,011 and 29,477. Low halves the thinking; medium
and high are what the endpoint already does. max_tokens is ignored outright, which the third row
from the bottom shows: a call capped at 4,096 returned 45,428 completion tokens and finished with
stop.

Halving the thinking costs more than it buys

The four NVDA filings, a fresh base with the same 14 classes and 28 properties, the same 55 chunks,
the same four documents extracted concurrently, once with the cap and once without:

uncapped reasoning_effort: low
seconds per chunk 150 115
open statements 885 729
entities 468 365
figures in tables reaching no statement 7/451 (2%) 73/451 (16%)
figures in prose reaching no statement 0/35 (0%) 1/35 (3%)
quotes that do not occur in the chunk 46 107
judged misworded 34/910 (3.7%) 51/737 (6.9%)
judged not_stated 0.0% 0.4%

A quarter off the wall clock, and against it: a sixth of the filing's table figures never reach a
statement, the quote check catches more than twice as many quotes the passage does not contain, and
the judge reads nearly twice the share of statements as misworded. Judging the same graph twice
moves that number by 1.4 points, so 3.2 is not the judge moving. The figure bench is structural and
reads no model at all, which is why the 2% to 16% is the number to look at.

The statements lost are the ones the thinking was paying for. Both halves of the trade land on
tables, the dense chunks where a row's heading, its caption and its column have to be held together
to write a correct quote.

Nothing changes in the product

The lever stays where it is. The read timeout it was proposed for is already answered by streaming
[#757], and the passage that crossed 300 seconds three times is not fixed by being a quarter
quicker. This PR records the measurement in the extraction design page so the next person does not
re-run it.

One thing to follow up separately: the capped run recorded 8 truncated_reply drops against the
baseline's 0, and a call with reasoning disabled stops at exactly 4,096 completion tokens with
finish_reason: length. We never send max_tokens, so the endpoint's own ceiling decides where a
long answer stops.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: WaylandYang <wayland0916@gmail.com>
@WaylandYang
WaylandYang merged commit 9a2b3be into dev Sep 18, 2026
4 checks passed
@WaylandYang
WaylandYang deleted the docs/what-a-reasoning-cap-costs branch September 18, 2026 17:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant