Исправленный Jinja-шаблон для Qwen 3.5, 3.6 и 3.8¶
7.0/10
Вышла первая модель Qwen 3.8, главное новшество которой — управление глубиной рассуждений через prompt-параметр reasoning_effort (xhigh, medium, low). Однако официальный шаблон чата содержит серьёзные ошибки: при enable_thinking=false модель 3.8 падает, в многоходовых диалогах в историю добавляются пустые теги <think></think>, вызовы инструментов с аргументами в JSON-строках вызывают сбой, а агентские циклы ломаются из-за потери системных сообщений. Автор выложил единый исправленный Jinja-шаблон на Hugging Face (froggeric/Qwen-Fixed-Chat-Templates), который работает с Qwen 3.5, 3.6 и 3.8. Он поддерживает reasoning_effort со значениями xhigh/high/medium/low, возвращает возможность отключить мышление через kwargs или маркер <|think_off|>, сохраняет KV-кэш и поддерживает llama.cpp с флагом --reasoning-preserve. Фикс можно использовать как drop-in замену официального шаблона.
Контекст¶
Jinja-шаблон чата — это код, который форматирует историю сообщений в единую строку перед подачей в модель; от него зависит, как модель видит системные сообщения, реплики пользователя, вызовы инструментов и теги мышления. У Qwen 3.5, 3.6 и 3.8 используются такие шаблоны с поддержкой режима рассуждений, поэтому ошибки в них приводят к падениям, испорченной истории или неработающим вызовам инструментов.
Влияние¶
Разработчики, использующие Qwen 3.8 (а также 3.5 и 3.6), могут заменить официальный шаблон на исправленный, чтобы избежать падений при отключении мышления и наладить вызовы инструментов в многошаговых сценариях; правда, часть пользователей сообщает, что для некоторых конфигураций всё равно приходится писать собственный шаблон.
Обсуждение в сообществе¶
В комментариях пользователи в основном благодарят автора, но также спрашивают, почему Qwen не тестирует собственные шаблоны, и отмечают, что у кого-то не было проблем с 3.5/3.6. Один комментатор сообщил, что не смог добиться надёжного вызова инструментов с этим шаблоном для связки Qwen 3.6 + Hermes Agent + LM Studio и разработал собственный.
Подробности¶
Исправленный шаблон добавляет управление reasoning_effort со значениями xhigh, high, medium и low, а также позволяет отключить рассуждения через kwargs или вставив в промпт маркер <|think_off|>. Чтобы избежать отравления истории, он не вставляет пустые теги <think></think> перед реальными мыслями и по умолчанию сохраняет прошлые рассуждения, что даёт 100% попаданий в KV-кэш между ходами. Для llama.cpp добавлена нативная поддержка флага --reasoning-preserve. Также шаблон обрабатывает аргументы инструментов, переданные в стандартном OpenAI-формате JSON-строк, из-за которых официальный шаблон падает, и не теряет системные сообщения в середине диалога, предотвращая зависание агентских циклов.