DeepSeek V4 Pro
DeepSeek V4 Pro
Tutorial

DeepSeek Thinking Mode: Toggle, reasoning_effort & Tools 400

✍️ DeepSeek V4 Pro Team 📅 Sep 7, 2026 ⏱️ 8 min read 🔄 Updated Sep 7, 2026
DeepSeek Thinking Mode: Toggle, reasoning_effort & Tools 400
📑 Table of Contents

Introduction

Search DeepSeek thinking mode, and many people assume you need a separate “reasoner” model ID. You do not.

On the DeepSeek API, both deepseek-v4-pro and deepseek-v4-flash support thinking mode: the model emits a chain of thought (reasoning_content) before the final answer (content). It is on by default, with effort defaulting to high. This site is an independent community; treat the official Thinking Mode guide as source of truth for parameters, and the pricing page for billing and peak windows.

DeepSeek thinking mode: toggle, reasoning_effort, and reasoning_content
DeepSeek thinking mode: toggle, reasoning_effort, and reasoning_content

I. What DeepSeek Thinking Mode Is — vs the Web App

SurfaceHow you control thinking
DeepSeek web appIn-product think / non-think switch (labels may change by version)
DeepSeek API Chat Completionsthinking + reasoning_effort
Anthropic-compatible endpointthinking + output_config.effort
Responses API / Codexreasoning.effort (none turns thinking off)

In short: V4 Pro / Flash are the models; thinking mode is a call switch — not a third model name. Pick the model by task hardness; use parameters for whether it should “think longer.” Flagship selection: What is DeepSeek V4 Pro. Codex model_reasoning_effort: DeepSeek Codex setup.

II. On / Off: Minimal Chat Completions Example

With the OpenAI Python SDK, put thinking in extra_body; reasoning_effort can stay top-level:

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_KEY",
    base_url="https://api.deepseek.com",
)

response = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[{"role": "user", "content": "Which is greater, 9.11 or 9.8?"}],
    reasoning_effort="high",
    extra_body={"thinking": {"type": "enabled"}},
)

print(response.choices[0].message.reasoning_content)
print(response.choices[0].message.content)

Turn thinking off by setting thinking.type to disabled. On the Responses API, use reasoning.effort = "none". Do not mix Chat Completions and Responses field shapes.

In thinking mode, temperature, top_p, presence_penalty, and frequency_penalty have no effect (setting them does not error, for compatibility). Control “how long it thinks” with reasoning_effort, not sampling knobs.

III. Choosing reasoning_effort: low / high / max

Official mapping (same for Flash and Pro):

Value you sendMapped effort
lowlow
medium / high / xhighhigh
maxmax

Practical picks:

  • Everyday Q&A, short rewrites, simple classify: turn thinking off, or keep default high but cap max_tokens so the chain of thought does not exhaust the budget.
  • Coding, math, multi-step reasoning: high is usually enough.
  • Long agent chains, hard bugs, complex tool orchestration: raise to max (some agent clients auto-bump to max).
  • Billing: thinking tokens count toward output usage; higher effort and longer chains cost more. Off-peak and cache: DeepSeek API price change.
reasoning_effort tiers vs DeepSeek thinking mode cost trade-offs
reasoning_effort tiers vs DeepSeek thinking mode cost trade-offs

IV. Must You Echo reasoning_content? Tools Are the Split

  1. No tools in the request: you do not need to resend prior reasoning_content; if you do, the API ignores it and it does not enter context.
  2. Request includes tools: every later turn must resend full historical reasoning_content — even when that turn made no tool call. Missing it returns HTTP 400. Choosing ools vs JSON Output: DeepSeek API Function Calling.

Safest pattern: append the whole assistant message:

messages.append(response.choices[0].message)

That is equivalent to manually carrying content, reasoning_content, and tool_calls. If your agent framework only stores final content, verify this path before production.

V. Four Surfaces — Avoid Mixing Configs

You useThinking controlsCommon pitfall
Custom Chat Completionsextra_body.thinking + reasoning_effortTop-level thinking may be dropped by the SDK
Anthropic-compatible /anthropicthinking + output_config.effortbudget_tokens is ignored
Codexmodel_reasoning_effortFirst ensure wire_api = "responses"
DeepSeek HarnessModel adapter / client settingsHarness is the runtime — not “another thinking model”

Use the web app to feel quality differences; pin parameters on the API for reproducibility. Keys and model IDs: 2026 DeepSeek beginner guide.

VI. FAQ

Is thinking billed separately?
No separate “thinking switch” fee. You pay for longer output tokens (including the chain of thought). Turning thinking off is usually cheaper and faster; hard tasks may lose quality.

finish_reason: length with empty content?
Often max_tokens was consumed by the chain of thought. Raise the limit, or probe with lower reasoning_effort / thinking off.

Relation to deepseek-reasoner / deepseek-chat?
Legacy aliases are in a retirement window. New integrations should call deepseek-v4-pro / deepseek-v4-flash and control behavior with thinking parameters — not old model names.

Summary

Shortest DeepSeek thinking mode checklist: on by default → toggle with thinking → pick intensity with reasoning_effort → with tools, always echo reasoning_content. Official docs own the field contract; this page is a practical pitfall list.

Further reading

Share this article:
D

DeepSeek V4 Pro Team

DeepSeek V4 Pro technical team

✨

Ready to experience DeepSeek V4?

Start chatting now and feel the power of 1M-token context.

🚀 Start Chatting

Free · No sign-up required

🧭 In this series

Explore related guides and hub pages in this topic cluster.

Category hub

Tutorial →

Related resources

📚 Recommended Reading