Skip to content

docs(api): one documented way to turn reasoning off, on every chat model - #186

Merged
sre-helmcode merged 3 commits into
mainfrom
docs/reasoning-off-contract
Oct 15, 2026
Merged

sre-helmcode merged 3 commits into
mainfrom
docs/reasoning-off-contract

Conversation

@sre-helmcode

Copy link
Copy Markdown
Contributor

What

  • API reference (src/data/openapi.json): new Reasoning section in the overview; reasoning_effort on /chat/completions rewritten (levels gain xhigh, none turns reasoning off on every chat model, GLM floor stated, aliases listed); chat_template_kwargs documented as an alias; /responses gains reasoning.effort.
  • Models page (en + es): "Controlling reasoning" / "Controlar el razonamiento" rewritten as the contract: one switch per API, the accepted aliases, a per-model table (what none does, what the other values do, mimo remaps, vLLM budgets and on/off-only on Responses), curl + OpenAI SDK examples for both APIs. Model cards aligned.

Why

The previous reference said reasoning_effort had no effect on deepseek-v4-flash (false: none turns it off) and that qwen3.8-flash / mimo could not adjust it, and /responses did not document reasoning. An enterprise customer had to guess, used DeepSeek's thinking switch, and kept reasoning on. Matrix measured live 2026-10-15 on both hosts; the behaviour documented here is enforced by the proxy hook in helmcode/nan-devops feat/reasoning-off-contract, which must be deployed before this merges.

Tests

  • src/tests/lib/docsReasoning.test.ts (22, written first; 20 fail on the previous docs).
  • Full suite: 2556/2556. npm run build OK; the #controlling-reasoning and #controlar-el-razonamiento anchors exist in the built pages.

Deploy notes

Static docs; deploys on merge (Cloudflare). Merge after the devops PR is deployed and the hooks restarted.

🤖 Generated with Claude Code

barckcode and others added 3 commits October 15, 2026 15:53
The reference said reasoning_effort had no effect on deepseek-v4-flash and
that qwen3.8-flash / mimo-v2.6-flash could not adjust it, and /responses
did not document `reasoning` at all. A customer had to guess, used
DeepSeek's own `thinking` switch, and kept reasoning on.

Measured live on 2026-10-15 on both hosts and enforced by the proxy's
reasoning-effort hook (helmcode/nan-devops, same day):

- `reasoning_effort: "none"` (chat) / `reasoning: {"effort": "none"}`
  (responses) turns reasoning off on every chat model. GLM always reasons:
  there `none` is applied as `minimal`, and the docs say so.
- the other providers' switches (thinking disabled, reasoning.enabled
  false, enable_thinking false, chat_template_kwargs.enable_thinking false,
  top level or in extra_body) are documented as accepted aliases; the
  explicit value wins.
- per-model table rewritten as the contract (mimo remaps, the vLLM
  budgets and their on/off-only behaviour on Responses), cards aligned,
  levels gain `xhigh`, OpenAPI overview gains a Reasoning section, the
  /responses schema gains `reasoning.effort`. English and Spanish.

Tests: src/tests/lib/docsReasoning.test.ts (22, written first; 20 of them
fail on the previous docs). Full suite 2556/2556, npm run build OK, the
#controlling-reasoning / #controlar-el-razonamiento anchors exist in the
built pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Copy-pasteable SDK examples: each builds its own client; Python
  extra_body fallback for older SDKs; Node for Chat Completions and
  Responses; TypeScript note for typed unions that lack a value; the
  Helmcode base URL as the alternative host.
- Model card bullets use <code> instead of literal backticks (set:html)
  and link to the Controlling reasoning section; qwen3.6/gemma4 cards say
  minimal turns reasoning off, like the table.
- API reference: the model catalog no longer calls gemma4 "opt-in" and
  qwen3.6 "opt-out"; scope is "every model in the catalogue"; document
  what an unlisted value does.
- deepseek-v4-flash max_tokens floor applies only while reasoning is on
  (reasoning_effort "none" or an alias sends max_tokens as is).
- Wording: "on Chat Completions and on Responses", table header
  "Off switch (`none`)", ES "Baja".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Validated live 2026-10-15: on api.helmcode.com deepseek-v4-flash accepts
response_format json_schema (and json_object without the word JSON); on
api.nan.builders json_schema is still rejected with a 400 and json_object
still needs the word JSON. Card (EN+ES), examples.md (EN+ES) and the
ResponseFormat description now say so per host. "Accepted" only, no
strictness promise for the enterprise host. The spec refers to the
enterprise base URL from the overview, keeping Helmcode out of the spec
body.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sre-helmcode
sre-helmcode merged commit 7458c9b into main Oct 15, 2026
1 check passed
@barckcode
barckcode deleted the docs/reasoning-off-contract branch October 17, 2026 11:55
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.

2 participants