Один ключ к DeepSeek, GPT, Claude и Gemini — оплата в рублях, доступ без VPN.

Получить ключ

Режим рассуждений (thinking mode) в DeepSeek API

Модели DeepSeek умеют работать в двух режимах: с цепочкой рассуждений и без неё. Thinking включён по умолчанию, поэтому самый первый запрос может вернуть не только ответ, но и ход решения — в отдельном поле reasoning_content.

Как устроен thinking mode

В режиме рассуждений модель сначала строит цепочку шагов и только затем формулирует ответ для пользователя. Это не отдельная модель и не отдельный эндпоинт: режим переключается параметрами того же запроса POST /chat/completions, а доступен он обеим моделям — deepseek-flash и deepseek-v4-pro.

Ключевой момент для интеграции: рассуждение приходит в поле reasoning_content, которое лежит на одном уровне с content. То есть текст ответа и ход решения не смешиваются, и его можно не показывать пользователю, а логировать или отбрасывать.

По умолчанию

Thinking включён: по умолчанию действует {"thinking": {"type": "enabled"}}, а уровень усилия reasoning_effort равен high. Явно указывать эти параметры не обязательно — поведение будет тем же.

Параметры управления режимом

В OpenAI-совместимом формате режим задаётся объектом thinking со значением enabled или disabled, а глубина рассуждений — параметром reasoning_effort со значениями none, low, high, max. Значение none выключает thinking.

Как задать режим рассуждений в разных интерфейсах DeepSeek
Интерфейс Что передаётся
Chat Completions
OpenAI-совместимый формат
{"thinking": {"type": "enabled"}} или {"thinking": {"type": "disabled"}}
усилие — reasoning_effort: none | low | high | max
Anthropic-совместимый
base_url https://api.deepseek.com/anthropic
усилие — {"reasoning": {"effort": "none | low | high | max"}}
Responses API
POST https://api.deepseek.com/responses
усилие — reasoning.effort

В OpenAI SDK объект thinking не входит в число типизированных аргументов метода, поэтому его передают через extra_body — так он попадает в тело запроса как есть.

python
import os

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com",
)

response = client.chat.completions.create(
    model="deepseek-flash",
    messages=[{"role": "user", "content": "Разложи 2026 на простые множители."}],
    # thinking и reasoning_effort уходят в тело запроса через extra_body
    extra_body={"thinking": {"type": "enabled"}, "reasoning_effort": "high"},
)

message = response.choices[0].message
print("Ход решения:", message.reasoning_content)
print("Ответ:", message.content)
print(
    "Токенов на рассуждение:",
    response.usage.completion_tokens_details.reasoning_tokens,
)

Чтобы выключить рассуждения, достаточно отправить disabled (или reasoning_effort: "none"). Такой режим называют non-thinking:

python
response = client.chat.completions.create(
    model="deepseek-flash",
    messages=[{"role": "user", "content": "Одним словом: столица Португалии?"}],
    extra_body={"thinking": {"type": "disabled"}, "reasoning_effort": "none"},
)

print(response.choices[0].message.content)
# Поля reasoning_content в ответе не будет: рассуждений нет.

Тот же режим из командной строки, без SDK:

bash
curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
        "model": "deepseek-flash",
        "messages": [
          {"role": "user", "content": "Сколько будет 17 * 23? Поясни ход решения."}
        ],
        "thinking": {"type": "enabled"},
        "reasoning_effort": "high",
        "stream": false
      }'

Нужен API-ключ сегодня

Регистрация по email или Telegram занимает пару минут, оплата идёт в рублях, VPN не нужен. Один ключ работает и с DeepSeek, и с другими моделями.

Получить ключ

Длина ответа и max_tokens

Рассуждения расходуют токены вывода, поэтому режим влияет на размер ответа по умолчанию. Если max_tokens не задан, применяются такие значения:

Размер ответа по умолчанию, если max_tokens не указан
Режим max_tokens по умолчанию
Non-thinking 8K
Thinking 64K
Thinking при reasoning_effort: "max" 128K

Если задавать max_tokens вручную, допустимый диапазон — от 1 до 393 216 (максимум 384K токенов вывода). Контекст обеих моделей — 1M токенов (1 048 576).

Ограничения thinking mode

Режим рассуждений меняет поведение части параметров. Часть из них просто не даёт эффекта, часть — приводит к ошибке.

Важно

В thinking mode не действуют temperature, presence_penalty и frequency_penalty. Ошибки при этом не возникает — параметры принимаются и игнорируются. top_p, наоборот, работает только в thinking mode, и его эффективный диапазон — 0.95–1.0: значение ниже 0.95 трактуется как 0.95. В non-thinking top_p фиксирован на 1.0 и игнорируется.

Важно

tool_choice: "required" и выбор конкретной функции в thinking mode дают HTTP 400. Если инструменты нужны в режиме рассуждений, оставляйте tool_choice в значении auto или none либо выключайте thinking.

Важно

Если в запросе есть tools, поле reasoning_content обязательно передавать назад во всех последующих запросах диалога — иначе ответ придёт с HTTP 400. Если tools в запросе нет, возвращать reasoning_content не нужно: поле игнорируется.

  • temperature (≤ 2, по умолчанию 1) — в thinking mode не действует.
  • presence_penalty и frequency_penalty — устарели и не дают эффекта.
  • top_p (≤ 1, по умолчанию 1) — только thinking, эффективно 0.95–1.0.
  • tool_choice — required и конкретная функция недоступны: HTTP 400.
  • reasoning_content — обязателен в истории диалога, пока в запросе присутствуют tools.

Многоходовой диалог

Официальный паттерн для диалога — возвращать в историю сообщение ассистента целиком. Тогда reasoning_content сохраняется автоматически, и при использовании инструментов не возникнет ошибки формата.

python
import os

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com",
)

messages = [{"role": "user", "content": "Какая гора самая высокая в мире?"}]

response = client.chat.completions.create(
    model="deepseek-flash",
    messages=messages,
)

# Сообщение возвращается в историю целиком — вместе с reasoning_content
messages.append(response.choices[0].message)

messages.append({"role": "user", "content": "А вторая по высоте?"})
second = client.chat.completions.create(model="deepseek-flash", messages=messages)

print(second.choices[0].message.content)

Расход токенов и стоимость

Токены рассуждения тарифицируются как токены вывода: их количество приходит в usage.completion_tokens_details.reasoning_tokens. Для задач, где решение не требуется — классификация, извлечение полей, короткие ответы по шаблону, — thinking имеет смысл выключать: ответ станет дешевле и быстрее. Для арифметики, анализа кода и многошаговых задач режим рассуждений, наоборот, обычно улучшает результат.

Это практическая рекомендация, а не требование API. Как считать стоимость запроса по полям usage, разобрано в разделе «Стриминг и токены», актуальные цены — в разделе «Цены и расчёт».

Нужен API-ключ сегодня

Регистрация по email или Telegram занимает пару минут, оплата идёт в рублях, VPN не нужен. Один ключ работает и с DeepSeek, и с другими моделями.

Получить ключ

Читайте также

Один ключ вместо пяти аккаунтов

DeepSeek, GPT, Claude и Gemini через один OpenAI-совместимый адрес: api.aitunnel.ru/v1. Регистрация занимает пару минут, оплата в рублях, доступ без VPN.

  • Один ключ на все модели
  • Оплата в рублях и счёт для юрлиц
  • Совместимо с OpenAI SDK