«Модель отвечает не по делу»: игнорирует часть вопроса, обрывает мысль на середине, забывает то, что вы написали пять сообщений назад, повторяет одну и ту же фразу или выдаёт связный, но не относящийся к делу текст. Первая реакция — скачать другую модель. Она почти всегда неверная.
Языковая модель в вашем рантайме — это не единственная переменная, а одна из шести, и остальные пять настраиваются за минуты. Шаблон чата, длина контекста, параметры сэмплирования, системный промпт, уровень квантизации и, наконец, соответствие задачи классу модели. Смена модели — последний узел дерева, а не первый, и переходить к нему имеет смысл, только пройдя предыдущие пять.
Ниже — диагностика от симптома к причине. Команды даны для Ollama; в другом рантайме названия параметров отличаются, смысл — нет.
#Быстрая проверка, которая отсекает половину случаев
Две команды. Первая показывает, с каким шаблоном и с какими параметрами модель зарегистрирована в системе, вторая — что реально загружено в память прямо сейчас.
ollama show имя-модели
ollama ps
В выводе первой смотрите на шаблон чата и на список параметров по умолчанию. В выводе второй — на то, какая модель занята и сколько памяти занимает. Два самых частых открытия на этом шаге: контекст выставлен куда меньше, чем вы предполагали, и загружена не та модель, с которой вы, как вам казалось, разговариваете.
#Узел 1. Шаблон чата
Признак. Модель отвечает не на ваш вопрос, а продолжает его. Вставляет служебные обрывки вроде имён ролей. Начинает диалог сама с собой, задавая себе следующий вопрос. Игнорирует системный промпт полностью.
Проверка. Посмотрите шаблон в выводе ollama show. Он должен соответствовать семейству модели: у каждого семейства свой формат разметки ролей, и подставленный не тот шаблон превращает диалог в мешанину. Особенно часто это случается со сборками, собранными третьими лицами: файл модели один, а метаданные с шаблоном внутри — от другой архитектуры. Как устроен контейнер и что в нём хранится помимо весов, разобрано в справке про формат GGUF.
Решение. Взять сборку из основного источника семейства либо задать шаблон вручную. Это единственная причина из шести, при которой ответы выглядят не «хуже», а откровенно сломанными.
#Узел 2. Обрезанный контекст
Признак. Модель забывает начало разговора. Отвечает по последнему сообщению, игнорируя условия, поставленные выше. Теряет системный промпт после нескольких реплик. Не видит середину длинного документа.
Проверка. Найдите фактическую длину контекста в параметрах рантайма. Ключевой момент: заявленное окно модели и окно, выставленное в рантайме, — разные числа, и второе обычно меньше. Многие рантаймы по умолчанию ставят скромное значение ради экономии памяти, а карточка модели при этом обещает многократно больше.
Решение. Поднять длину контекста явно — и сразу заложить память под KV-кэш, который растёт линейно с длиной и легко становится тем, что не влезает. Расчёт — в материале про контекст и расход видеопамяти на KV-кэш, настройка параметров — в гайде по настройке параметров Ollama.
#Узел 3. Температура и сэмплирование
Признак. Один и тот же вопрос даёт то приличный, то бессвязный ответ. Модель уходит в сторону от темы к концу длинного ответа. Или наоборот: отвечает однообразно, зацикливается, повторяет фразу до конца лимита.
Проверка. Посмотрите фактические значения температуры и параметров отсечения. Высокая температура даёт разнообразие и вместе с ним фактические ошибки; слишком низкая — зацикливание и канцелярскую одинаковость.
Решение. Для фактических задач — извлечение данных, переписывание по правилам, работа с кодом — температуру вниз. Для черновиков и вариантов формулировок — вверх. Механика параметра разобрана в справке о том, что такое температура в языковой модели. Правило простое: менять по одному параметру за раз и на фиксированном наборе вопросов, иначе вы не поймёте, что подействовало.
#Узел 4. Системный промпт
Признак. Ответы правильные, но не в том формате, не той длины и не тем тоном. Модель отвечает вежливой водой вместо конкретики. Игнорирует требование отвечать кратко.
Проверка. Прочитайте свой системный промпт целиком и честно ответьте, сколько в нём противоречий: «отвечай кратко» и «объясняй подробно» в одном тексте встречаются чаще, чем кажется. Небольшие модели следуют инструкциям буквальнее и хуже разрешают такие конфликты, чем крупные.
Решение. Один промпт — один набор непротиворечивых требований, с примером желаемого ответа. Как его собирать, разобрано в материале про системный промпт для личного ассистента.
#Узел 5. Слишком агрессивная квантизация
Признак. Модель в целом связна, но ошибается в мелочах: путает числа, теряет отрицания, ломает формат вывода, срывается на английский посреди русского ответа.
Проверка. Посмотрите, какой уровень квантизации вы скачали. На четырёх битах деградация обычно приемлема; ниже она становится заметной невооружённым глазом, и первым страдает именно точность в деталях и качество неанглийских языков.
Решение. Взять ту же модель на уровень выше по точности, если память позволяет, — или модель поменьше, но менее сжатую. Проверять после этого нужно тем же набором вопросов, что и до.
#Узел 6. Задача за пределами класса модели
Признак. Все предыдущие узлы пройдены, настройки в порядке, а модель всё равно не справляется — но не «сломанно», а ровно и предсказуемо: не держит длинную цепочку рассуждений, путается в многошаговой логике, не знает вашей узкой предметной области.
Проверка. Дайте ту же задачу заведомо более крупной модели — хоть один раз, хоть через облачный API. Если результат принципиально другой, дело в размере. Если такой же — дело в постановке задачи, а не в модели.
Решение. Здесь смена модели наконец оправдана. Сузить список кандидатов по железу и задачам помогает разбор того, какую модель выбрать под свою задачу, а проверить их сопоставимо, а не «на глазок», — гайд о том, как тестировать модель на своих задачах.
#Таблица: симптом, причина, проверка
Таблица — вход в дерево с другой стороны: не по порядку узлов, а по тому, что вы наблюдаете. Найдите свою строку и идите к соответствующему узлу.
| Симптом | Вероятная причина | Чем проверить |
|---|---|---|
| Продолжает вопрос вместо ответа, служебный мусор | Шаблон чата | ollama show |
| Забывает начало диалога, теряет середину документа | Обрезанный контекст | Фактическая длина контекста в рантайме |
| Один вопрос — разные по качеству ответы | Высокая температура | Параметры сэмплирования |
| Зацикливается, повторяет фразу | Слишком низкая температура или узкое отсечение | Параметры сэмплирования |
| Форма и тон не те при верном содержании | Системный промпт | Чтение своего промпта на противоречия |
| Путает числа, теряет отрицания, срывается на английский | Слишком агрессивная квантизация | Уровень квантизации файла |
| Ровно не тянет многошаговую логику | Класс модели | Та же задача на модели крупнее |
Из таблицы видно главное: шесть разных причин дают шесть разных почерков сбоя. «Плохо отвечает» — не симптом, а жалоба. Симптом — это то, что в левой колонке, и он почти всегда указывает на конкретный узел.
#Если ничего не помогло
Три вещи, которые стоит проверить, когда дерево пройдено целиком.
Вы разговариваете не с той моделью. Интерфейсы запоминают выбор по чатам, профилям и вкладкам. Убедитесь, что загружена та модель, о которой вы думаете, — командой ollama ps, а не по подписи в интерфейсе.
Задача сформулирована так, что на неё нет хорошего ответа. Вопрос без критерия успеха («сделай красиво») даёт плохой ответ на любой модели. Добавьте в запрос пример желаемого результата — это часто сильнее, чем переход на модель вдвое крупнее.
Модель права, а ошибается ваше ожидание. Если вы просите фактическую справку по узкой теме, модель без доступа к вашим данным и к сети отвечает по памяти обучения, и эта память неполна и устарела. Правильное решение здесь — не другая модель, а подача нужных фактов в запрос.
#Частые вопросы
#Почему модель отвечает хуже, чем в чужих демонстрациях?
Чаще всего из-за разницы в настройках, а не в модели: другая длина контекста, другая температура, другой системный промпт, другой уровень квантизации. Сравнивать имеет смысл только при одинаковых условиях прогона.
#Модель забывает, что я писал выше. Это ограничение модели?
Обычно нет: это фактическая длина контекста, выставленная в рантайме, которая может быть в разы меньше заявленного окна модели. Проверьте параметр контекста и поднимите его, заложив память под KV-кэш.
#Помогает ли смена модели, если ответы слишком многословные?
Как правило, нет. Многословность лечится системным промптом с явным требованием к длине и примером ответа нужного объёма. Смена модели меняет манеру, но не решает задачу, если инструкция противоречива.
#Как понять, что дело всё-таки в размере модели?
Пройдите пять предыдущих узлов и дайте ту же задачу заведомо более крупной модели в тех же условиях. Принципиально другой результат означает, что упёрлись в класс модели. Одинаковый результат означает, что проблема в постановке задачи.
#Стоит ли ставить температуру в ноль для точных задач?
Для извлечения фактов и работы по строгим правилам низкая температура полезна, но нулевая нередко приводит к зацикливанию и повторам. Разумнее начинать с небольшого ненулевого значения и менять по одному параметру за раз на фиксированном наборе вопросов.