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.
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 до и после и принимайте решение по реальным цифрам, а не на глаз. Цены по каждой модели — на странице цен, полный справочник параметров — в документации.