Reasoning effort
Models that think before they answer spend tokens on the thinking, and you pay for those and wait for them. On the models AhuraSense hosts, you decide how much: a level on a ladder, an exact budget, or none at all.
Which models#
These controls apply to the hosted models in the catalog, the ones marked hosted on the Models page, such as zhipu/glm-5.3-flash-derisked. Their default is unbounded thinking, so a request that says nothing gets the fullest answer and the largest bill. Partner-served models keep whatever reasoning behaviour their vendor defines; the fields below are passed through to them unchanged and take effect only where the vendor supports them.
The ladder#
Send reasoning_effort at the top level of a chat-completions request. The last column is what one hard prompt actually spent on thinking at each level.
| Value | Behaviour | Thinking tokens on a hard prompt |
|---|---|---|
none / minimal | Answers immediately, no reasoning. | 1 |
low | Thinks briefly, with no ceiling. | 1,222 |
medium | Thinks, capped at 1,024 tokens. | 1,025 |
high | Thinks, capped at 4,096 tokens. | 4,097 |
xhigh / max / nothing sent | Unbounded thinking. The default. | 4,698 – 9,003 |
curl https://api.ahurasense.com/v1/chat/completions \
-H "Authorization: Bearer $AHURA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "zhipu/glm-5.3-flash-derisked",
"reasoning_effort": "medium",
"messages": [{"role": "user", "content": "Plan a three-day trip to Kyoto on a budget."}]
}'This is the field OpenCode, Hermes and most SDKs already send when you set a reasoning level in them, so in those tools there is nothing extra to configure. The template spelling, "chat_template_kwargs": {"reasoning_effort": "high"}, is accepted too.
Not every hosted model has five distinct levels. qwen/qwen3.8-flash-next-uncensored folds the ladder into three: high, max and xhigh all mean its deepest mode, which is also its default; low and minimal both mean low; medium and none are as above. zhipu/glm-5.3-uncensored has three as well: none is off, minimal and low think briefly, and everything else is its deep mode; on this model prefer low over none for the shortest clean answer. Sending any value is always safe; a model without a matching level uses its nearest.
An exact budget#
To cap thinking at a number of tokens rather than a level, send custom_params.thinking_budget. A budget overrides the ladder when both are present.
{
"model": "zhipu/glm-5.3-flash-derisked",
"custom_params": { "thinking_budget": 300 },
"messages": [{ "role": "user", "content": "Summarise this changelog in three bullets: …" }]
}No thinking at all#
reasoning_effort: "none" puts the model in no-think mode: it answers directly, in well under a second on the hosted models, and nothing from the reasoning stage appears in the reply. Use it for classification, extraction and short answers, where thinking adds latency and cost without changing the result.
From the Anthropic-compatible route#
Code written against the Anthropic SDK expresses the same intent with Anthropic’s fields, and POST /v1/messages translates them for hosted models:
| You send | The model gets |
|---|---|
"output_config": {"effort": "medium"} | reasoning_effort: medium |
"thinking": {"type": "enabled", "budget_tokens": 300} | thinking_budget: 300 |
"thinking": {"type": "disabled"} | No-think mode. |
message = client.messages.create(
model="zhipu/glm-5.3-flash-derisked",
max_tokens=1024,
thinking={"type": "enabled", "budget_tokens": 300},
messages=[{"role": "user", "content": "Summarise this changelog in three bullets: …"}],
)Claude Code and other Anthropic-protocol clients that set an effort level or a thinking budget therefore work as expected against hosted models. A budget wins over an effort level when both are present.
Cost and limits#
- Thinking tokens are output tokens: billed at the model's output rate and reported in
usageasreasoning_tokens. Pricing & usage. - They count against
max_tokens. With unbounded thinking and a smallmax_tokens, the model can spend the whole allowance thinking and return an empty reply withfinish_reason: length. Either raisemax_tokensor set an effort level. See reasoning tokens. - Reasoning settings are part of the request, not the key, so one key can run a no-think classifier and an unbounded planner side by side.
Choosing a level
Start at medium for anything interactive: it keeps the first token under a second or two on the hosted models and handles most tasks. Reserve unbounded thinking for batch work and hard problems where waiting is fine. Use none wherever the prompt already contains the answer and the model only has to reshape it.
Something missing or wrong on this page? Tell us, and quote the page title.