TL;DR
Гибридное мышление — механизм в некоторых LLM (Qwen3, Gemini, DeepSeek V3), который позволяет переключаться между режимом рассуждения (генерирует развёрнутые цепочки мыслей в блоке <think>) и режимом прямого ответа (сразу финал, без объяснений) через специальные токены \think и \no_think в промпте. Идея — контролировать когда модель тратит токены на рассуждения, а когда выдаёт сразу результат.
Исследователи нашли критическую проблему: режимы не разделены полностью. Даже в no-think режиме модели «протекают» — генерируют слова-маркеры рассуждения вроде «подождите», «хмм», «или может», оставляя блок <think> формально пустым, но рассуждая в основном тексте. Например, Qwen3-8B на датасете AIME24 в no-think режиме сгенерировал 646 вхождений слова «wait», хотя должен был давать сжатый ответ. Выходит, модель понимает инструкцию лишь частично — сокращает объём, но не убирает логику рассуждений.
Анализ факторов обучения показал: модели легче учатся думать вслух, чем молчать. Think-режим стабилен при любых настройках тренировки, а no-think требует больших объёмов данных (140k+ примеров), специфической пропорции (больше no-think примеров) и двухфазного обучения (сначала только think, потом добавить no-think). Даже при оптимальных условиях полного разделения не происходит.
Почему это важно
LLM обучены генерировать рассуждения — это основа их способности решать сложные задачи. Но рассуждения стоят токенов и времени. Гибридное мышление обещает гибкость: «думай когда надо, отвечай быстро когда можно».
Реальность: Модель не может полностью выключить рассуждения. Даже получив команду «без объяснений», она всё равно частично рассуждает — просто скрывает часть процесса. Это как попросить человека «не думать о белом медведе» — мысль всё равно появляется.
Для пользователя это значит:
- Промпты типа «кратко, без рассуждений» не гарантируют сжатый ответ
- Модель может генерировать «лишние» токены, даже если вы просили экономить
- Явный контроль через структуру промпта важнее, чем расчёт на автоматическое переключение
Как исследовали
Команда взяла Qwen3-8B (модель с гибридным мышлением) и протестировала на математических задачах (MATH500), олимпиадных вопросах (AIME24) и научных тестах (GPQA). Сравнивали с Qwen2.5-7B-Instruct — чистой моделью без think-режима, которая всегда отвечает напрямую.
Метрики: точность ответов, длина генерации, количество слов-маркеров рассуждения («wait», «hmm», «alternatively»).
Результат на AIME24:
- Think-режим: 63% точность, 11394 токена в среднем, 12184 «wait»
- No-think режим: 24% точность, 4062 токена, 184 «wait»
- Чистая Instruct: 6.67% точность, 1729 токенов, 0 «wait»
No-think у Qwen3 в 2.3 раза длиннее чистой Instruct-модели и содержит рассуждения, которых быть не должно.
Затем обучили несколько версий Qwen2.5-7B на разных датасетах (от 20k до 140k примеров), меняя четыре фактора:
- Объём данных: Чем больше примеров, тем короче выходы в no-think (при 140k длина упала с 2214 до 776 токенов на MATH500)
- Парность данных: Если think и no-think ответы взяты с разных вопросов, no-think контроль сильнее (942 токена vs 1438 при парных данных)
- Пропорция no-think: Увеличение доли no-think примеров с 1:1 до 1:2 сократило выходы с 1086 до 761 токена
- Двухфазное обучение: Сначала тренировка только на think-данных, потом добавление no-think — даёт выходы 586 токенов против 1086 при смешанном обучении
Удивительный результат: Даже при лучших условиях модель в no-think режиме генерирует в 1.3-2 раза больше текста, чем чистая no-think модель. Полного разделения не получается — think-данные «протекают» в no-think поведение.
Применимые выводы
1. Явный контроль через промпт работает лучше неявного
Вместо расчёта на автоматику:
[Просто задаёшь вопрос и надеешься что модель сама выберет режим]
Делай так:
Для сложной задачи:
"Реши задачу. Покажи все шаги рассуждений от начала до конца."
Для простого факта:
"Ответь одним предложением. Без объяснений и рассуждений."
Даже если модель поддерживает токены \think / \no_think (Qwen3, DeepSeek), усиливай их явными инструкциями.
2. Понимай «протекание» как особенность, не баг
Когда просишь модель «кратко, без рассуждений», а получаешь что-то вроде:
"Хм, давайте подумаем... подождите, нужно учесть... окей, ответ: 42"
Это не сбой. Модель частично подавляет рассуждения (сократила с 10000 до 2000 токенов), но полностью выключить их не может. Думать — её природа.
Что делать:
- Если нужна максимальная краткость — переформулируй вопрос так, чтобы он требовал факта, не анализа
- Если получил «протекание» — извлеки только финальный ответ, проигнорируй вводные слова
- Для критически коротких ответов используй форматирование: "Ответь строго в формате: Результат: [число]"
3. Для российского контекста: модели с гибридным мышлением
Qwen3 (доступен через API и локально) поддерживает токены:
\think — включить рассуждения
\no_think — отключить рассуждения
DeepSeek V3.1 (API) — аналогично.
Claude и ChatGPT таких токенов не имеют, но можно симулировать через промпт-инструкции.
Для практики:
- Если работаешь с Qwen/DeepSeek — используй токены напрямую
- Если ChatGPT/Claude — пиши явные инструкции в промпте
Ограничения
⚠️ Недоступность для базовых моделей: Токены
\think/\no_thinkработают только в специфических моделях (Qwen3, Gemini, DeepSeek). В ChatGPT/Claude нужно эмулировать через текстовые инструкции.
⚠️ Применение выводов требует обучения: Основные находки (объём данных, пропорции, двухфазное обучение) полезны только если ты обучаешь собственную модель через fine-tuning. Для обычного использования в чате это теоретическое знание.
⚠️ Протекание неустранимо: Даже оптимально обученные модели не дают 100% разделения режимов. No-think всегда будет содержать элементы рассуждений.
Ресурсы
Demystifying Hybrid Thinking: Can LLMs Truly Switch Between Think and No-Think?
Shouren Wang, Wang Yang, Xianxuan Long (Case Western Reserve University), Qifan Wang (Meta AI)
GitHub с кодом
