Технологии

Что такое ограничители поведения модели

Ограничители обычно живут не в модели, а вокруг неё. Разбираем четыре уровня — и объясняем, почему настоящей защитой является только последний.

Guardrails (ограничители) — общее название для всего, что не даёт модели выдать нежелательный ответ или совершить нежелательное действие. Термин объединяет очень разные механизмы, и путаница между ними приводит к неверной оценке рисков.

Разложим их по уровням — от самого мягкого к единственному настоящему.

#Четыре уровня

Уровень 1. Внутри модели. Поведение, заложенное обучением: отказ от части тем, осторожные формулировки. Живёт в весах, работает всегда, обходится подбором формулировок. Как это туда попадает — в справке про RLHF.

Уровень 2. В промпте. Инструкции в системном сообщении: что можно и как отвечать при сомнении. Настраивается вами, но границей не является: инструкция — текст в том же потоке, что и всё остальное.

Уровень 3. Внешний фильтр. Отдельный классификатор, проверяющий вход и выход основной модели. Это не часть языковой модели, а самостоятельная программа рядом. У облачных сервисов именно она отвечает за жёсткие блокировки — хитрый промпт до неё не дотягивается, обходить пришлось бы сам фильтр.

Уровень 4. Ограничение возможностей. Не «что модель говорит», а «что она может сделать»: список разрешённых инструментов, каталогов, доменов, подтверждение человеком перед необратимым действием. Единственный уровень, который является защитой в инженерном смысле: он не зависит от того, что модель сгенерировала.

Уровень Где живёт Обходится Является защитой
Обучение в весах подбором формулировок ✗
Системный промпт в контексте инструкцией из данных ✗
Внешний фильтр рядом с моделью обходом фильтра, не модели частично
Ограничение прав в коде приложения только ошибкой в коде ✓

#Что это меняет для локального запуска

При работе с локальной моделью уровней 1 и 2 у вас ровно столько, сколько их в скачанных весах и в вашем промпте. Уровня 3 обычно нет вовсе, если вы не поставили его сами. То есть на локальной модели ограничители не защищают вас от модели — они разве что задают ей стиль.

Что действительно требуется, так это уровень 4, и требуется тем сильнее, чем больше у ассистента прав. Список разрешённых действий для агента разобран в тексте про агента и безопасность через allowlist, а самый острый частный случай — в разборе того, почему агенту нельзя давать shell.

#Где путают

Заблуждение первое: отказ модели — это защита. Отказ — это поведение, а не механизм. Он основан на статистике обучения, поэтому даёт и ложные срабатывания на безобидных запросах, и пропуски на вредных. Типовые способы его обойти разобраны в справке про джейлбрейк промпта.

Заблуждение второе: достаточно написать правила в системном промпте. Инструкция в промпте конкурирует со всем остальным текстом в контексте, включая текст, пришедший из внешних источников. Именно на этом устроена промпт-инъекция.

Заблуждение третье: ограничители снижают риск утечки данных. Не снижают. Утечка происходит не через «плохой ответ», а через то, что данные попали в контекст и ушли туда, куда уходит запрос. Единственная работающая мера — не класть в контекст то, что не должно уйти.

Заблуждение четвёртое: чем строже ограничители, тем безопаснее продукт. Избыточная строгость даёт отказы на рабочих задачах, и люди переносят работу туда, где ограничений нет. Картина от этого ухудшается.

#Частые вопросы

#Можно ли снять ограничители с локальной модели?

Частично — да: системный промпт вы пишете сами, а на рынке есть версии моделей с ослабленным выравниванием. Знаний у них не больше, а склонность выдумывать нередко выше.

#Нужны ли ограничители личному ассистенту?

Нужны четвёртого уровня: перечень инструментов, доступ к файлам, подтверждение необратимых действий. Фильтры содержимого в личном сценарии обычно мешают.

#Как проверить, что ограничения работают?

Не разговором с моделью, а проверкой прав: попробуйте выполнить запрещённое действие напрямую через интерфейс инструмента. Если оно проходит, отказ модели ничего не значит.

#Кто отвечает за ответ модели — фильтр или обучение?

Обычно оба, в разной пропорции у разных сервисов. Вывод один: поведение модели через API и той же модели локально может заметно отличаться — вокруг облачной стоит слой, которого вы не видите.

Остальные термины — в глоссарии терминов ИИ.

Хотите ИИ, который помнит вас?

Persona держит контекст между чатами и работает на вашем железе — если развернуть её у себя и подключить локальную модель.

Создать аккаунт