Updated 2026-06-25
DeepSeek Thinking Mode Parameters: stop tuning knobs that the model ignores
A lot of DeepSeek debugging gets wasted on parameters that do not actually control thinking mode. The official Thinking Mode guide says some classic sampling fields have no effect, effort is the real control surface, and `reasoning_content` becomes mandatory state once tool calls are involved. If you miss that contract, you can end up blaming the model for a client bug or a no-op config.
1. Thinking mode already changes the rules
DeepSeek's official guide says thinking mode defaults to enabled. It also says some complex agent requests automatically use higher effort, which means many agent stacks are already in a more opinionated mode than the developer realizes.
That changes how you should debug quality. The first question is not whether to add more random tuning knobs. The first question is whether you are in thinking mode, which protocol you are using, and which effort lane the request actually took.
Sources checked
- DeepSeek official Thinking Mode guide - Primary source for default-enabled thinking and effort behavior.
2. Some common parameters are ignored in thinking mode
DeepSeek says thinking mode does not support `temperature`, `top_p`, `presence_penalty`, or `frequency_penalty`. Passing them will not trigger an error, but they also will not change model behavior.
This creates a common false-positive debugging path: a team tweaks those fields, sees no improvement, and concludes the model is unstable. The cleaner conclusion is that the request stayed inside a mode where those controls are inert.
| Parameter | Thinking-mode behavior |
|---|---|
| `temperature` | Ignored |
| `top_p` | Ignored |
| `presence_penalty` | Ignored |
| `frequency_penalty` | Ignored |
3. Effort is the real quality knob
DeepSeek's official guide points to effort rather than classic sampling as the real tuning surface. In OpenAI format, the docs use `reasoning_effort` with `extra_body.thinking`. In Anthropic format, the docs use `output_config.effort`.
The same page also says compatibility aliases map `low` and `medium` to `high`, and `xhigh` to `max`. So if a client claims it has fine-grained effort levels, check whether DeepSeek actually collapses them into fewer effective lanes.
const response = await client.chat.completions.create({
model: "deepseek-v4-pro",
messages,
reasoning_effort: "high",
extra_body: {
thinking: { type: "enabled" },
},
});4. `reasoning_content` becomes mandatory after tool calls
Once tool calls appear, the parameter story stops being academic. DeepSeek says the intermediate assistant `reasoning_content` must be passed back in all subsequent requests after a tool-call turn. If you drop it, the API can return a 400 error.
That means some 'parameter bugs' are really replay bugs. A developer thinks the problem came from the wrong effort or unsupported sampling fields, when the actual failure is that the app lost the model's reasoning state between tool invocations.
Sources checked
- DeepSeek official Thinking Mode guide - Explains the replay rule and the 400 error consequence.
5. Debugging order that saves time
Start by logging the chosen protocol family and the exact effort field shape. Then remove unsupported sampling parameters from the request so the payload shows only controls that matter. After that, validate whether any tool-call turn is replaying `reasoning_content` exactly as DeepSeek returned it.
If the route still looks wrong, compare a minimal direct request against the larger agent runtime. That quickly separates a model issue from a client abstraction problem.
6. Recommended DeepSeek-first implementation policy
Treat thinking mode as a protocol contract, not a styling option. Use exact effort fields for the chosen API format, delete inert sampling knobs from templates, and store `reasoning_content` whenever tool calls occur.
If your next problem is route selection, continue with `/guides/deepseek-openai-vs-anthropic-api-routing`. If your next problem is Anthropic alias routing, continue with `/guides/deepseek-anthropic-model-fallback`.
FAQ
Does `temperature` work in DeepSeek thinking mode?
No in practice. DeepSeek says `temperature` is unsupported in thinking mode and has no effect.
Does `top_p` still matter in thinking mode?
No. The official guide groups `top_p` with other unsupported sampling knobs that are ignored in thinking mode.
What should I tune instead?
Use the documented effort controls for your protocol: `reasoning_effort` plus `extra_body.thinking` in OpenAI format, or `output_config.effort` in Anthropic format.
Why am I seeing a 400 after a tool call?
One likely cause is that your app failed to pass `reasoning_content` back after a tool-call turn. DeepSeek's official guide says that replay is required.
Should I keep unsupported sampling fields in the payload anyway?
No unless a client forces them. They add noise to debugging because DeepSeek says they do not affect thinking-mode behavior.
DeepSeek thinking mode gets easier to operate when you stop pretending every familiar LLM knob still matters. Effort controls are real, classic sampling fields can be inert, and after tool calls the decisive state is `reasoning_content`, not your unused `temperature` value.
Related model comparisons
Continue from this guide into structured DeepSeek-first comparison pages with model tables, routing advice, and pricing context.