LLM API и интеграция
Нейросеть отказывается отвечать: почему и что делать
«Модель не отвечает» — это два разных события, которые в коде обычно валят в одну обработку, и из-за этого чинят не то. Отказ модели приходит как успешный ответ: код 200, обычное тело, а внутри текст «не могу помочь с этим». Техническая проблема — неверный ключ, закрытый маршрут, превышенный лимит — возвращает код ошибки и текста не содержит вовсе. Первое не лечится повтором никогда, второе иногда лечится только повтором. Разбираем, как их различать, что делать с ложными отказами на законных задачах и почему обход фильтров — плохая основа для сервиса.
Два разных события
Различие принципиальное, и начинать надо с него.
Отказ модели. Запрос дошёл, модель его обработала и решила, что отвечать не будет. Приходит как нормальный успешный ответ, токены за него списываются, в теле — текст объяснения. Ваш код, который проверяет только код ответа, посчитает это удачей.
Техническая ошибка. Запрос до модели не дошёл или не был обработан. Возвращается код ошибки, тела с ответом нет, токены обычно не списываются.
Отсюда практический вывод: проверять надо не только код ответа, но и содержание. Иначе отказы будут молча попадать пользователю как «ответ модели», а вы будете считать, что всё работает.
Технические ошибки мы разбирали подробно в материалах про коды, повторы и fallback и про лимиты частоты. Дальше — про отказы самой модели.
Почему модель отказывает
Четыре типовые причины, и только одна из них про содержание запроса.
Тема попала под правила вендора. У каждой модели есть зашитые ограничения, и они различаются между вендорами и версиями. То, на что одна отвечает спокойно, другая отклоняет.
Формулировка выглядит подозрительно, а задача законна. Самый частый и самый обидный случай: медицинский текст, разбор инцидента безопасности, юридический документ, художественная сцена. Задача нормальная, формулировка сработала как триггер.
В контексте оказался чужой текст с чем-то запрещённым. Вы отправили документ клиента на разбор, а в нём содержимое, на которое модель реагирует. Отказ приходит на весь запрос.
Модель решила, что не хватает данных, и оформила это как отказ. Формально не отказ по правилам, но выглядит так же.
Отдельная категория — ограничения, которые вендор недавно ужесточил. Правила меняются вместе с версиями и системными слоями, и запрос, работавший месяц назад, может начать отклоняться — где смотреть системные промпты вендоров.
Что делать с ложным отказом
Порядок по убыванию эффективности. Обход правил в списке отсутствует намеренно.
Объясните цель. Одна фраза о том, зачем вам это, снимает заметную часть ложных срабатываний: «разбираю инцидент безопасности для отчёта», «готовлю материал для врача». Это не хитрость, а недостающий контекст.
Разбейте задачу. Часто отклоняется целое, а части проходят. Разбор длинного документа по разделам работает там, где целиком не проходит.
Уберите лишнее из контекста. Если чужой документ попал целиком, отправьте нужный фрагмент — как работать с документами.
Переформулируйте от результата. Вместо описания процесса опишите, какой результат вам нужен.
Попробуйте другую модель. Правила различаются между вендорами существенно. В каталоге на 5 сентября 2026 года 54 позиции в шестнадцати семействах, и переключение — смена строки в запросе.
Последний пункт — самый надёжный на практике: если задача законна, а конкретная модель на ней спотыкается, дешевле сменить модель, чем воевать с формулировками.
Чего делать не стоит
Прямо и коротко.
Не пытайтесь обойти правила. Формулировки-обходы ломаются при каждом обновлении модели, а сервис, построенный на них, перестаёт работать без предупреждения и без вашего участия. Это не вопрос морали, а вопрос устойчивости.
Не повторяйте тот же запрос. При отказе модели повтор даёт тот же результат и стоит денег.
Не прячьте отказ от пользователя. Пустой экран хуже, чем «модель не смогла ответить на этот запрос, попробуйте переформулировать».
Не считайте отказ ошибкой в логах. Тогда вы не увидите, что их стало больше после обновления модели.
Как обрабатывать в коде
Пять правил для рабочего сервиса.
- Различайте три исхода: ответ, отказ модели, техническая ошибка. Три ветки, а не две.
- Распознавайте отказ по содержанию. Универсального поля нет; на практике помогает проверка на характерные формулировки плюс то, что структура ответа не соответствует ожидаемой — при строгом формате отказ виден сразу, потому что схема не выполнена.
- Логируйте отказы отдельно. С текстом запроса, если это допустимо по вашим правилам обработки данных.
- Показывайте понятное сообщение и предлагайте действие: переформулировать, сократить, обратиться к человеку.
- Считайте долю отказов как метрику. Её рост — сигнал, что вендор поменял правила или ваш поток изменился.
Пятый пункт полезнее всего на дистанции: без него изменение правил у вендора вы заметите по жалобам, а не по графику.
Когда отказ — правильное поведение
Раздел для равновесия.
Часть отказов обоснована, и лечить их не надо. Если ваш сервис получает от пользователей запросы, на которые модель отказывается отвечать по существу, вопрос не к модели, а к тому, что вы вообще собираетесь с этим делать.
Отдельный случай — отказ, вызванный содержимым чужого документа. Он неудобен, но он же сигнал: в ваш контекст попал текст, которого вы не контролируете. Это ровно тот канал, через который работает промпт-инъекция, и относиться к внешним документам стоит как к недоверенному вводу.
Как отличить отказ от нехватки данных
Разграничение, которое влияет на то, что показывать пользователю.
Внешне похоже: в обоих случаях приходит текст вместо ожидаемого результата. Но причины разные, и реакция должна быть разной.
Отказ по правилам звучит как отказ: модель сообщает, что не может помочь с этим запросом. Переформулирование иногда помогает, повтор — никогда.
Нехватка данных звучит как признание: в предоставленных материалах ответа нет. Это правильное поведение, если вы сами просили честно сообщать о таких случаях. Лечится не переформулированием, а тем, что вы кладёте в контекст, — поиском нужных фрагментов.
Неспособность выполнить задачу — третий случай: модель пытается, но результат не соответствует требованиям. Здесь помогает разбиение задачи или другая позиция.
Практическая разница: при отказе по правилам пользователю честнее предложить переформулировать; при нехватке данных — сказать, что информации нет, и предложить обратиться к человеку. Свалить их в одно сообщение «что-то пошло не так» — самый быстрый способ получить недовольство, потому что во втором случае система работает правильно, а выглядит сломанной.
Чего мы не утверждаем
Не публикуем списки триггеров. Правила у вендоров не документированы полностью и меняются.
Не сравниваем модели по строгости. Своих замеров мы не делали; различия есть, но измерять их надо на своих запросах.
Не помогаем обходить ограничения. Приёмы выше — про то, как донести законную задачу, а не про обход.
Не обещаем, что смена модели решит вопрос. Иногда решает, иногда нет.
Что нужно, чтобы попробовать другую модель
Ключ заводится за минуту на keydealer.ru/login — почта и пароль, без документов и без зарубежной карты. Один ключ на весь каталог: если ваша задача упирается в правила конкретной модели, проверить её на позиции из другого семейства — это правка одной строки, а не новый договор и не новая интеграция.
Платные текстовые модели доступны сразу на приветственном бонусе, оплата дальше — российской картой в рублях.
Что держать в голове
Отказ модели приходит с кодом 200 и списанными токенами — код ответа его не ловит. Проверять надо содержание, иначе отказы будут молча уходить пользователю.
При ложном срабатывании на законной задаче работают три вещи: объяснить цель, разбить на части, сменить модель. Обход правил в этот список не входит — он ломается при следующем обновлении и уносит с собой ваш сервис.
Как мы проверяем факты и что храним из запросов — на странице о проекте и в llms.txt. Проверить свою задачу на нескольких семействах: keydealer.ru/login.
Частые вопросы
Почему нейросеть отказывается отвечать?
Причин две принципиально разных: модель сочла запрос неподходящим по своим правилам или запрос вообще не дошёл до модели из-за ошибки маршрута, ключа или лимита. Различаются они по виду ответа.
Как отличить отказ модели от технической ошибки?
Отказ модели приходит как обычный успешный ответ с текстом объяснения. Техническая ошибка возвращает код ошибки и текста ответа не содержит.
Можно ли отключить фильтры модели?
Нет. Правила зашиты вендором в саму модель и её системный слой; никакая формулировка запроса их не снимает, а попытки обхода — плохая основа для рабочего сервиса.
Что делать, если модель отказывает на легитимной задаче?
Переформулировать задачу, добавить контекст о цели, разбить на части или попробовать другую модель — правила у разных вендоров различаются.
Как обрабатывать отказы в коде?
Определять их отдельно от ошибок и показывать пользователю понятное сообщение, а не пустой экран. Повтор того же запроса при отказе модели бесполезен.