Reasoning-модели: когда включать reasoning_effort
Рассуждающие модели решают то, на чём обычные ломаются, но стоят дороже и думают дольше. Как выбрать уровень усилий и не платить за лишние размышления.
Роман Дьяченко
Reasoning-модели: когда включать reasoning_effort
Reasoning-модели перед ответом строят внутреннюю цепочку рассуждений. Это заметно поднимает качество на задачах с логикой, математикой, планированием и сложным кодом. Расплата — задержка (модель «думает» секунды) и цена (токены рассуждений тоже оплачиваются).
Параметр reasoning_effort
Уровень усилий регулируется. Обычно доступны low | medium | high:
resp = client.chat.completions.create( model="deepseek-r1", messages=[{"role": "user", "content": "Разбери, почему алгоритм даёт O(n^2), и предложи O(n log n)."}], reasoning_effort="high",)low— короткое размышление, быстрее и дешевле. Для задач, где надо чуть «подумать», но не строить длинную цепочку.medium— баланс, разумный дефолт для сложных запросов.high— максимум усилий: олимпиадная математика, разбор запутанной логики, многошаговое планирование. Дорого и медленно.
Когда reasoning оправдан
- Математика и вычисления с несколькими шагами.
- Отладка неочевидного бага, где надо проследить поток данных.
- Планирование: разбить большую задачу на шаги с зависимостями.
- Задачи с ограничениями, где надо перебрать варианты и не нарушить условия.
Когда это лишнее
- Извлечение полей, классификация, перевод. Тут думать нечего — reasoning только замедлит и удорожит. Берите обычную модель с
temperature=0. - Генерация контента, чат поддержки. Ответ по шаблону не выигрывает от размышлений.
- RAG-ответы по готовому контексту. Модель пересказывает найденное, а не решает задачу.
- Простые вызовы инструментов. «Дёрни функцию по имени» — не про reasoning.
Ставить high на бота поддержки — всё равно что нанять профессора отвечать «где мой заказ». Дорого и медленно без выигрыша.
Стоимость: считайте токены рассуждений
Главная ловушка бюджета — рассуждения генерируются как выходные токены и оплачиваются, даже если вы их не видите. На high модель может «продумать» несколько тысяч токенов перед коротким ответом. То есть счёт вырастает не пропорционально длине ответа, а пропорционально глубине размышления.
print(resp.usage.completion_tokens_details.reasoning_tokens)Логируйте reasoning_tokens и смотрите, за что платите. 1 кредит = 1 ₽ — на потоке разница между medium и high бьёт по счёту ощутимо.
Практическая стратегия
- Дефолт для приложения — обычная модель без reasoning.
- Reasoning включайте адресно, под конкретный тип запроса, а не глобально.
- Начинайте с
medium, поднимайте доhighтолько если на ваших задачахmediumреально не дотягивает — проверьте на выборке, а не на ощущениях. - Ставьте таймаут и покажите пользователю индикатор «думаю»: несколько секунд молчания без объяснения выглядят как зависание.
Reasoning — мощный инструмент, но узкоспециальный. Большинство запросов в типовом продукте в нём не нуждаются, и включённый «на всякий случай» high — это просто переплата за задержку.