Проблема: почему Nemotron Nano 3 постоянно 'думает' вслух?
Если вы скачали одну из моделей семейства Nemotron Nano 3 (например, 1.5B или 4B) и запустили её в LM Studio, то наверняка столкнулись с раздражающим поведением: модель постоянно вставляет в свои ответы внутренние размышления, заключённые в теги <|thinking|> и <|end|>.
Пример того, что вы видите в чате:Пользователь: Напиши приветственное письмо.
<|thinking|>Пользователь просит написать формальное письмо. Нужно использовать стандартную структуру: приветствие, тело, подпись.<|end|>
Ассистент: Уважаемый коллега, ...
Эти внутренние монологи загромождают диалог, съедают контекстное окно и мешают нормальному взаимодействию.
Это не баг, а особенность архитектуры и шаблона чата, на котором была дообучена модель. Разработчики NVIDIA встроили механизм «размышления вслух» (think-aloud), чтобы модель могла демонстрировать ход своих мыслей. Однако для повседневного использования в LM Studio это абсолютно не нужно.
Решение: правильная настройка шаблона и промпта
Проблема решается на двух уровнях:
- Исправление Jinja-шаблона чата в настройках модели в LM Studio.
- Корректировка System Prompt, чтобы явно запретить модели использовать теги thinking.
В отличие от других моделей, где достаточно просто скачать и запустить, с Nemotron Nano 3 требуется небольшая, но важная донастройка.
1Шаг 1: Находим и редактируем Jinja-шаблон
Откройте LM Studio и перейдите в настройки выбранной модели Nemotron Nano 3.
- На вкладке "Chat" найдите раздел "Chat Template".
- По умолчанию там может быть пусто или стоять шаблон для другой модели.
- Замените его содержимое на следующий исправленный Jinja-шаблон:
{{ bos_token }}{% for message in messages %}{% if message['role'] == 'user' %}{{ '<|user|>\n' + message['content'] + '<|end|>\n<|assistant|>' }}{% elif message['role'] == 'assistant' %}{{ message['content'] + '<|end|>\n' }}{% elif message['role'] == 'system' %}{{ '<|system|>\n' + message['content'] + '<|end|>' }}{% else %}{{ raise_exception('Only user, assistant, and system roles are supported!') }}{% endif %}{% endfor %}<|thinking|> в ответах ассистента. Исходный шаблон от NVIDIA принудительно добавлял этот тег перед каждым ответом модели, заставляя её «думать». Наш фикс убирает эту принудительную вставку.2Шаг 2: Настраиваем System Prompt
Даже с правильным шаблоном модель, обученная на диалогах с thinking, может попытаться вставить его по привычке. Чтобы это предотвратить, нужно дать чёткую инструкцию.
- В той же вкладке "Chat" найдите поле "System Prompt".
- Добавьте туда следующий текст:
Ты — полезный AI-ассистент. Отвечай прямо и по делу.
ВАЖНОЕ ПРАВИЛО: НИКОГДА не используй и не пиши теги <|thinking|> и <|end|> внутри своего ответа. Отвечай сразу, без внутренних размышлений в тексте.Этот промпт явно запрещает модели использовать проблемные теги, перенаправляя её на прямое общение.
3Шаг 3: Сохраняем и перезагружаем модель
- Нажмите "Save" в настройках модели.
- Полностью остановите модель (кнопка Stop).
- Загрузите модель заново (кнопка Load). Это критически важно, так как LM Studio кэширует старые настройки шаблона.
- Создайте новый сеанс чата (старый может содержать в истории проблемные теги).
После этих действий модель должна отвечать чисто, без вставок thinking.
Почему это работает? Разбор под капотом
Чтобы понять фикс, нужно немного углубиться в то, как LM Studio и подобные оболочки работают с моделями.
| Компонент | Роль | Что пошло не так с Nemotron |
|---|---|---|
| Jinja-шаблон | Преобразует историю диалога (роли user/assistant) в сырой текст (prompt), который подаётся на вход модели. | Оригинальный шаблон NVIDIA форсированно добавлял <|thinking|> перед каждым ответом ассистента, обучая модель всегда его использовать. |
| System Prompt | Контекстная инструкция, определяющая поведение модели. Вставляется в начало промпта. | Без явного запрета модель, дообученная на диалогах с thinking, продолжает его генерировать по инерции. |
| Токенизатор | Сопоставляет текст (включая спецтеги) с ID-токенами модели. | Теги <|thinking|> и <|end|> — это специальные токены для Nemotron. Модель ожидает их в определённых местах. |
Наш фикс переучивает модель на лету, меняя формат ожидаемого диалога. Это похоже на то, как при квантовании моделей иногда требуется подбирать правильный формат промпта для сохранения качества.
Возможные ошибки и нюансы
Ошибка 1: «Модель всё равно иногда вставляет thinking»
Причина: В истории чата остались старые сообщения с тегами thinking. Модель их видит и пытается продолжить шаблон.
Решение: Всегда начинайте новый чат после применения фикса. Очистите историю полностью.
Ошибка 2: «Модель стала отвечать односложно или странно»
Причина: Слишком агрессивный system prompt может ограничить креативность модели.
Решение: Смягчите system prompt. Например: «Ты — полезный и разговорчивый ассистент. Отвечай развёрнуто, но без использования внутренних тегов thinking.»
Ошибка 3: «Фикс не работает в API-режиме»
Причина: При использовании LM Studio как сервера OpenAI API настройки шаблона могут не применяться к запросам извне.
Решение: Убедитесь, что в запросе API вы также передаёте правильный system prompt. Или используйте модели, изначально лучше адаптированные для API, как некоторые из инструментов для разработчиков.
Альтернативные методы и когда они нужны
Если описанный фикс не сработал, можно попробовать более радикальные методы:
- Использование другого фронтенда: Попробуйте загрузить модель в Ollama или text-generation-webui. У них могут быть свои, уже исправленные шаблоны для Nemotron Nano 3.
- Прямое редактирование конфига модели: В папке с моделью найдите файл
tokenizer_config.jsonилиconfig.json. Иногда там прописан шаблон чата по умолчанию ("chat_template"). Его можно отредактировать, аналогично убрав thinking. Но делайте это только с копией модели. - Конвертация модели: Через утилиты вроде
transformersможно явно загрузить модель и сохранить её с новым, чистым чат-шаблоном. Это метод для продвинутых пользователей.
Помните, что проблема «мышления вслух» — это не уникальная особенность Nemotron. С похожими артефактами можно столкнуться и с другими исследовательскими моделями, где разработчики жертвуют удобством в уготу прозрачности работы AI. Это, кстати, одна из причин, почему внедрение ИИ в критических областях идёт так медленно — требуется огромная работа по доводке моделей до интуитивно понятного поведения.
Итог: чистый Nemotron Nano 3 за 5 минут
Nemotron Nano 3 — отличная компактная модель от NVIDIA с хорошими показателями. Её навязчивое «мышление» — всего лишь досадный артефакт обучения, который легко исправить. Главное — понять цепочку: Jinja-шаблон → System Prompt → Перезагрузка.
Потратив пять минут на настройку, вы получите полностью функционального ассистента, который не будет засорять диалог лишними тегами. Этот навык настройки чат-шаблонов пригодится вам и для работы с другими моделями, ведь каждая из них, как и GLM-4.5-Air, может требовать индивидуального подхода для идеальной работы в LM Studio.
Удачных экспериментов с локальным ИИ!