Зачем эта штука вообще нужна? Или когда «подумать вслух» — не метафора
Вспомните последний раз, когда Qwen3.5 выдавал вам ответ, от которого хотелось стукнуть головой об стол. «Сколько будет 18*24?» — «42». Ладно, не 42, но что-то столь же безумное. Проблема не в том, что модель глупая. Проблема в том, что она отвечает, не показав своей работы. Как школьник, который списывает ответ с задней парты.
Thinking Mode — это принудительное включение reasoning traces. Модель начинает генерировать внутренний монолог типа «Итак, у меня 18*20=360, и еще 18*4=72, значит 360+72=432» перед тем, как выдать финальный ответ. На бумаге звучит как мелкое улучшение. На практике — это разница между слепым угадыванием и осмысленным решением. Особенно для задач на логику, математику или многошаговый анализ контекста.
Важно: на 02.03.2026 Thinking Mode — это не отдельная модель, а специальный флаг активации или параметр генерации. Он работает с линейкой Qwen3.5 от 2B до 122B, но поведение и качество reasoning будут дико отличаться в зависимости от размера.
Включить нельзя пропустить. Где ставим запятую в настройках?
Тут начинается первая засада. Разные инструменты реализуют этот режим по-разному. Иногда это флаг в prompt template. Иногда — отдельный параметр в API. Иногда — хак через system prompt.
1Активация в Unsloth (самый простой путь)
Если вы Unsloth для инференса или тонкой настройки, вам повезло. Начиная с версии 2026.1, там есть встроенная поддержка.
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "Qwen/Qwen3.5-7B-Instruct",
max_seq_length = 2048,
load_in_4bit = True, # Или используйте MXFP4 для лучшего качества
reasoning_mode = True, # Вот он, волшебный флаг
)
inputs = tokenizer(["Сколько углов у додекаэдра? Объясни шаги."], return_tensors="pt")
outputs = model.generate(**inputs, reasoning_trace=True)
print(tokenizer.decode(outputs[0]))
Ключевые моменты: reasoning_mode=True при загрузке модели и reasoning_trace=True в generate. Если пропустите второй — получите обычный ответ без цепочки рассуждений. Типичная ошибка.
2Запуск в LM Studio (для тех, кто любит GUI)
В LM Studio (актуальная версия 0.3.9 на март 2026) процесс иной. Нужно не только выбрать правительную квантованную модель, но и прописать специальный system prompt.
- Скачайте модель Qwen3.5 в формате GGUF. Рекомендую квантование Q8 или IQ4_XS для баланса скорости и качества. Полный гайд по выбору есть в статье Qwen3-30B на Raspberry Pi 5: ShapeLearn GGUF или MagicQuant?.
- В LM Studio загрузите модель.
- Перейдите во вкладку "Chat" и откройте "Edit System Prompt".
- Вставьте следующий промпт:
Вы - помощник, который всегда подробно рассуждает вслух перед тем, как дать окончательный ответ. Начните размышления с метки [РАЗМЫШЛЕНИЕ]. - В самом запросе пользователя явно попросите модель рассуждать. Например: "Реши задачу шаг за шагом, покажи свои размышления."
Почему так неудобно? Потому что нативный Thinking Mode в llama.cpp (на котором построен LM Studio) для Qwen3.5 стал стабильно работать только с конца 2025 года. Детали мучений описаны в Qwen3.5 в llama.cpp: когда последний пазл наконец встал на место.
Тест-драйв: от карлика 2B до титана 122B
Теория — это хорошо, но что на практике? Я прогнал серию идентичных запросов через семь моделей: 2B, 4B, 7B, 14B, 32B, 72B и 122B. Все — инструктивные версии (Instruct), загруженные в Unsloth с квантованием MXFP4 (новый формат от NVIDIA, который на 02.03.2026 дает лучшее качество при 4-битном сжатии).
| Модель | Время ответа (с Thinking) | Время ответа (без) | Качество reasoning | Контекст recall |
|---|---|---|---|---|
| Qwen3.5-2B-Instruct | ~1.2 сек | ~0.9 сек | Слабое, часто ошибочное | Низкий |
| Qwen3.5-7B-Instruct | ~3.1 сек | ~2.4 сек | Приемлемое, но с пробелами | Средний |
| Qwen3.5-32B-Instruct | ~8.5 сек | ~6.7 сек | Хорошее, логичное | Высокий |
| Qwen3.5-122B-Instruct | ~22.9 сек | ~18.1 сек | Отличное, детальное | Очень высокий |
Тестовый запрос был таким: "В рассказе, который я тебе дал, герой нашел ключ под синим камнем. Позже он встретил друга, который спросил: 'Где ключ?'. Что ответит герой?" Контекст рассказа — 512 токенов.
Что увидели в логах reasoning
- Модели 2B-7B: Reasoning trace выглядит как набор коротких, иногда несвязанных утверждений. "Ключ. Синий камень. Друг спросил. Сказать про камень." Логика хромает. Контекст вспоминают с трудом, часто теряют детали.
- Модели 14B-32B: Появляется связность. "Герой помнит, что оставил ключ под синим камнем. Друг спрашивает именно об этом ключе. Следовательно, нужно сказать 'под синим камнем'." Контекст держат хорошо.
- Модели 72B-122B: Reasoning превращается в мини-сочинение. Учитывают нюансы: "Друг не знает про камень, поэтому ответ должен быть информативным, но не излишне подробным. Возможно, добавить 'там, где мы договорились'." Контекст recall почти идеальный.
Вывод очевиден, но болезненный: Thinking Mode не волшебная таблетка. Он лишь выводит наружу внутренние процессы модели. Если модель маленькая и глупая, ее reasoning будет маленьким и глупым. Но вы хотя бы увидите, где она обламывается.
Подводные камни, которые разобьют ваш проект вдребезги
Первый и главный: Thinking Mode увеличивает длину ответа в 2-5 раз. Вы платите токенами за эти размышления. Если у вас ограниченный контекст (например, 4096 токенов), а запрос сложный, модель может «выскочить» за лимит, так и не дав ответа. Всегда устанавливайте max_new_tokens с запасом.
# Плохо: модель оборвется на полуслове.
outputs = model.generate(**inputs, max_new_tokens=256, reasoning_trace=True)
# Хорошо: даем простор для размышлений.
outputs = model.generate(**inputs, max_new_tokens=1024, reasoning_trace=True)
Вторая проблема: не все квантования дружат с Thinking Mode. Особенно это касается агрессивных методов вроде IQ2_XS или IQ3_S. Модель начинает генерировать бессмыслицу в reasoning trace. Проверяйте на полной версии модели (FP16) перед квантованием. Подробнее о выборе квантования читайте в IQ2 квантование: 100 токенов в секунду на Qwen3-30B-A3B.
Третий нюанс: Thinking Mode несовместим с некоторыми типами тонкой настройки. Если вы дообучали модель с помощью обычных техник (SFT), reasoning traces могут сломаться. Нужно использовать специальные датасеты, где размечены шаги размышления. Unsloth 2026.1 поддерживает такой формат, но подготовка данных — это отдельный ад.
Ответы на вопросы, которые вы постесняетесь задать вслух
Включать ли Thinking Mode для продакшена?
Нет. Если только вы не делаете образовательное приложение, где нужно показывать ход мысли. Для обычного чата или классификации это избыточно и дорого. Используйте его для отладки, тестирования и анализа «темных зон» вашей модели.
Правда ли, что он улучшает точность итогового ответа?
Не напрямую. Исследования (на 2025-2026 годы) показывают, что принудительное reasoning может немного повысить точность для многошаговых задач — потому что модель вынуждена идти последовательно. Но для простых фактов это не работает. Более того, иногда модель так увлекается размышлениями, что запутывается сама и выдает худший ответ. Всегда тестируйте на своей задаче.
LM Studio vs Unsloth: что выбрать?
Для экспериментов и быстрого тестирования — LM Studio. Для продакшена и тонкой настройки — Unsloth. В Unsloth больше контроля и выше скорость. В LM Studio — удобный интерфейс и меньше мороки с установкой. Если же вам нужен function calling, смотрите статью Function Calling в Open WebUI: какие модели на самом деле работают с llama.cpp.
Как понять, что Thinking Mode вообще работает?
В ответе должны быть явные метки (зависит от реализации). В Unsloth это может быть <|think|>...<|endofthink|>. В самописном промпте — ваши собственные тэги. Если видите сплошной текст без разделения — что-то пошло не так. Проверьте флаги и промпт.
Совет на будущее: к середине 2026 года ожидаются модели, у которых reasoning будет отдельным, управляемым модулем. Возможно, тогда нам не придется выбирать между скоростью и качеством размышлений. Но пока — выбираем.