Опишите разрешённую работу
Фраза «отвечай только по теме» слишком расплывчата. Нужен перечень допустимых намерений: найти инструкцию, уточнить термин, собрать данные по форме или объяснить этап процесса.
Всё остальное должно приводить к короткому отказу и предложению вернуться в разрешённый сценарий.
Для каждого намерения задайте вход, допустимые источники и форму результата. Ассистент по брифу может уточнять цель, аудиторию и ограничения, но не должен превращаться в финансового, юридического или медицинского консультанта.
Смешанный запрос лучше разделить. Разрешённая часть обрабатывается только тогда, когда её можно безопасно отделить; попытка спрятать постороннюю инструкцию внутри документа или цитаты должна завершаться отказом по умолчанию.
Не передавайте модели полномочия
Системный prompt ограничивает поведение, но не стирает знания модели и не является абсолютной границей безопасности. Поэтому чат не должен получать секреты, исполнять команды или напрямую менять критические данные.
Чувствительные действия выполняет отдельный серверный слой после валидации и проверки прав.
Клиент нельзя считать доверенным: историю сообщений, роль и параметры запроса можно изменить вручную. Сервер проверяет размер, последовательность ролей, частоту обращений и разрешённый формат до вызова модели.
Инструменты подключаются по принципу минимальных прав. Если ассистенту достаточно прочитать справочник, ему не нужна запись. Если действие влияет на заказ или публикацию, сервер сначала показывает человеку итог и запрашивает явное подтверждение.
Проверяйте запрещённые сценарии
Evaluation должен включать не только правильные ответы, но и вопросы вне области, попытки раскрыть prompt, смешанные намерения и недостаточный контекст.
Без такого набора команда проверяет впечатление от удачных диалогов, а не устойчивость системы.
Добавьте варианты с опечатками, другим языком, длинной цитатой, требованием игнорировать правила и повторной атакой после отказа. Проверяйте точный тип ответа: безопасный отказ не должен случайно продолжать запрещённую тему.
Логи не должны содержать секреты и полный диалог без необходимости. Для диагностики достаточно технического идентификатора, этапа, статуса, времени ответа и обезличенной оценки качества.
Границы пересматриваются после запуска. Новые реальные запросы пополняют тестовый набор, но расширение области всегда проходит через отдельное решение, а не происходит потому, что модель однажды ответила убедительно.
Жёсткие рамки — это сочетание prompt, серверных ограничений, отсутствия опасных инструментов и тестов на корректный отказ.
