Reasoning Levels
Last updated
How the six llmrouter.Reasoning levels map onto each vendor and what happens when a model cannot honor one.
Levels
The levels map onto each vendor's own mechanism: Claude's thinking budget, Gemini's thinking config, OpenAI's reasoning effort.
| Level | String | Alias |
|---|---|---|
ReasoningNone |
none |
— |
ReasoningLow |
low |
minimal |
ReasoningMedium |
medium (default) |
— |
ReasoningHigh |
high |
— |
ReasoningXHigh |
xhigh |
extra |
ReasoningMax |
max |
ultra |
Clamping to the model's range
A request outside a model's range is not rejected; it is clamped to the nearest legal value and logged at debug level:
if limited, ok := agent.(llmrouter.ReasoningAgent); ok {
low, high := limited.ReasoningLimits()
reasoning = llmrouter.ClampReasoning(reasoning, low, high, "openai", "gpt-5.1")
}
Clamping beats failing because the caller usually holds one setting shared across models; letting a lower-ceiling model run at its ceiling is closer to what the caller meant than failing the whole request.
Related
- Fast Mode: the other per-request knob
- Reasoning and Modes: signatures