genmux API теперь доступен всем. Читать документацию →
genmux API

Блог

Thinking-режим: когда включать рассуждения и сколько стоит

4 мин чтенияАвтор genmux API Team


Thinking-модель производит два вида текста, прежде чем вы увидите ответ: внутренний ход рассуждений и финальный ответ. Оба — это токены, и оба тарифицируются одинаково — как выход. Именно этот факт объясняет большинство неожиданных счетов, которые получают те, кто впервые включает enable_thinking на нагруженном эндпоинте.

Какие модели это поддерживают

enable_thinking: true — расширение genmux поверх стандартной схемы OpenAI, и оно что-то меняет только на моделях, для этого предназначенных:

МодельThinking
deepseek-v4-pro, deepseek-v4-flashда
qwen3-7-max, qwen3-maxда
doubao-seed-2-pro, doubao-seed-2-code, doubao-seed-2-liteда
deepseek-v3, qwen3-6-flash, doubao-seed-2-miniнет

Отправка enable_thinking модели из второй группы не вызывает ошибку — параметр просто игнорируется, поэтому его можно спокойно оставить в общем коде, который вызывает разные модели в зависимости от задачи. GLM, Kimi и варианты Qwen Plus/Coder временно исключены из линейки, пока вендор не починит апстрим — их статус по thinking вернётся в эту таблицу вместе с ними.

Почему токены рассуждений считаются выходом

Отдельного тарифа на «размышления» и скидки на текст рассуждений по сравнению с видимым ответом нет — и то, и другое выходит из модели как сгенерированные токены, и usage.completion_tokens считает всё целиком. Если включить thinking на модели, которая иначе ответила бы за 80 токенов, а она порассуждает 600 токенов перед ответом, счёт будет примерно за 680 выходных токенов, а не за 80.

python
from openai import OpenAI

client = OpenAI(base_url="https://api.genmux.tech/v1", api_key="nb_live_...")

resp = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[{"role": "user", "content": "8191 — простое число? Покажи ход рассуждений."}],
    max_tokens=1200,
    enable_thinking=True,
)

print(resp.choices[0].message.content)
print(resp.usage)
# Usage(prompt_tokens=14, completion_tokens=643, total_tokens=657,
#       cost=0.092, cost_source="vendor")

Эти 643 токена completion — в основном ход рассуждений, а не ответ из одного предложения, на который без thinking ушло бы токенов 20.

Разбор на примере

Один и тот же вопрос, одна модель, thinking выключен и включён, по цене выхода DeepSeek V4 Pro $1.782/1М:

Токены completionСтоимость выхода
Thinking выключен~25~$0.00004
Thinking включён~643~$0.00115

Разница примерно в 25 раз на один вызов легко переживается; тот же коэффициент на 100 000 запросов в день превращает эндпоинт за $4/день в эндпоинт за $115/день. Ни одна из цифр не является ошибкой — это честный обмен цены на глубину рассуждений, — но такой выбор должен быть осознанным, а не забытой настройкой из тестов.

Когда включать

  • Многошаговая математика, логика, планирование — именно для этого и построены thinking-модели. Прирост точности здесь обычно окупает стоимость.
  • Разовые или редкие вызовы — скрипт для внутренней поддержки, который запускается пару сотен раз в день, легко потянет множитель.
  • Неоднозначные или «состязательные» входные данные — рассуждения помогают модели заметить крайние случаи, которые прямой ответ пропустит.

Когда оставить выключенным

  • Массовая классификация, извлечение данных, короткий чат — задачи, с которыми и без thinking модель справляется хорошо, не нуждаются в дополнительных расходах.
  • Интерфейс, чувствительный к задержке — рассуждения добавляют реальное время до того, как (или пока) начнёт стримиться видимый ответ.
  • Всё, что стоит в горячем пути на каждый запрос — сначала включите на выборке трафика и измерьте разницу в токенах, прежде чем раскатывать везде.

Стриминг и thinking вместе

Текст рассуждений идёт через то же поле delta.content, что и финальный ответ — отдельного типа SSE-события для него нет, — поэтому наивный интерфейс покажет пользователю ход рассуждений, если его не отфильтровать. usage, включая полное число completion_tokens с рассуждениями и ответом вместе, по-прежнему приходит только в последнем чанке перед data: [DONE]; детали разбора — в гайде по SSE-стримингу.

Проверка на своей нагрузке

Прежде чем включать thinking по умолчанию для эндпоинта, прогоните репрезентативную выборку запросов с enable_thinking: true и без него, сравните среднее значение usage.completion_tokens по обеим группам и умножьте разницу на дневной объём запросов. Пяти-десяти минут ручного тестирования обычно достаточно, чтобы увидеть, окупает ли прирост качества дополнительные расходы для конкретной задачи — гадать по документации смысла нет, когда можно измерить на реальных данных за несколько запросов.

С чего начать

Попробовать enable_thinking ничего не стоит — добавьте его в один запрос, сравните usage.completion_tokens до и после и принимайте решение по реальным цифрам, а не на глаз. Цены по каждой модели — на странице цен, полный справочник параметров — в документации.

Об авторе

Автор genmux API Team — genmux API.

Подробнее о нас