Что такое защитные ограничения
Фильтры безопасности и качества
«Что такое защитные ограничения» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.
Определение защитных механизмов
Защитные механизмы — это программные проверки, размещённые вокруг LLM для обеспечения безопасности, соблюдения правил и качества. Они выполняются на входе (пользовательские данные) и на выходе (результат модели), определяя, что доходит до модели и что получает пользователь.
Модель вероятностна, а защитные механизмы представляют собой детерминированное применение правил поверх неё.
Почему одних инструкций недостаточно
Инструкции в системном запросе вроде «никогда не раскрывайте секреты» являются мягкими: их можно обойти с помощью атак на инструкции, они могут утратить силу в длинном контексте или игнорироваться при сдвиге распределения данных. Защитные механизмы являются жёсткими, поскольку это код вне модели, который невозможно убедить нарушить правила.
Эшелонированная защита: давайте модели инструкции и оборачивайте её независимыми проверками.
Защитные механизмы для входных и выходных данных
Два места размещения с разными задачами:
- Защитные механизмы для входных данных блокируют внедрение инструкций, запрещённые запросы и PII до того, как токены начнут расходовать средства.
- Защитные механизмы для выходных данных обнаруживают небезопасное содержимое, утечки данных, галлюцинации и нарушения схемы до передачи результата пользователю.
Проверки входных данных экономят средства, а проверки выходных данных защищают пользователей.
Заблокировать, удалить, сгенерировать заново, передать специалисту
Защитный механизм должен выбрать действие при срабатывании:
- Заблокировать — отказать и вернуть безопасное сообщение.
- Удалить — убрать проблемный фрагмент и продолжить.
- Сгенерировать заново — повторить запрос, указав обнаруженное нарушение.
- Передать специалисту — направить запрос человеку или более строгой модели.
Правильное действие зависит от серьёзности нарушения и доверия пользователя.
def on_violation(severity):
if severity == 'critical': return 'block'
if severity == 'pii': return 'redact'
if severity == 'quality': return 'regenerate'
return 'escalate'Конвейер защитных механизмов
Объединяйте защитные механизмы в упорядоченный конвейер и немедленно прекращайте обработку при первом серьёзном нарушении.
def guarded_generate(user_input):
for g in INPUT_GUARDS:
verdict = g.check(user_input)
if verdict.block:
return safe_refusal(verdict)
output = call_model(user_input)
for g in OUTPUT_GUARDS:
verdict = g.check(output)
if verdict.block:
return verdict.handle(output)
return outputДетерминированные и модельные защитные механизмы
Два подхода к реализации:
- Детерминированный — регулярные выражения, схемы, разрешающие и запрещающие списки, классификаторы с фиксированными порогами. Быстрый, дешёвый и проверяемый.
- Модельный — модель модерации или LLM для оценки соблюдения правил в неоднозначных случаях. Гибкий, но более медленный и сам подверженный ошибкам.
Используйте детерминированные защитные механизмы для жёстких правил, а модельные — для случаев, требующих суждения.
Бюджеты задержки и затрат
Каждый защитный механизм увеличивает задержку. Стратегии для сохранения высокой скорости:
- Запускайте независимые проверки выходных данных параллельно.
- Располага́йте дешёвые детерминированные проверки перед дорогостоящими проверками с помощью моделей.
- Немедленно прекращайте обработку при первом жёстком блокировании.
- Передавайте результат потоком, но удерживайте его доставку до прохождения критических проверок.
verdicts = await asyncio.gather(*[g.check(out) for g in OUTPUT_GUARDS])
if any(v.block for v in verdicts):
return handle(verdicts)Ложные срабатывания имеют реальную цену
Слишком агрессивные защитные механизмы блокируют законные запросы и раздражают пользователей — например, отвечают «Я не могу с этим помочь» на безобидные вопросы. Настраивайте пороги на размеченном наборе и отслеживайте долю ложных срабатываний как самостоятельную метрику, а не только полноту обнаружения атак.
Потоковая передача усложняет защиту выходных данных
Если передавать токены пользователю потоком, поздно обнаруженное нарушение уже может оказаться на экране. Возможные варианты:
- Полностью буферизовать результат, проверить его и только затем выпустить (самый безопасный вариант, но с большей задержкой).
- Проверять результат по границам предложений во время потоковой передачи.
- Передавать результат оптимистично, но отзывать или заменять его при обнаружении нарушения.
Выбирайте подход с учётом того, насколько опасным может быть раскрытие неполного результата.
Возможность аудита и ведение журнала
Защитные механизмы являются объектами аудита и подтверждения соблюдения требований. Записывайте в журнал каждый вердикт вместе с хешем входных данных, идентификатором защитного механизма, уровнем серьёзности и выполненным действием, не записывая само чувствительное содержимое. Такая запись подтверждает соблюдение правил во время аудита и помогает настраивать систему.
audit.log({'guard': g.id, 'verdict': verdict.label,
'action': verdict.action, 'input_hash': sha256(inp)})Защитные механизмы не заменяют архитектуру
Защитные механизмы снижают риск, но не устраняют его. Модель без доступа к секрету не может его раскрыть. Предпочитайте архитектурные средства контроля — минимальные привилегии, инструменты с ограниченной областью действия и отсутствие чувствительных данных в контексте — и используйте защитные механизмы как последний, а не единственный уровень.
Быстрая проверка
Какое размещение защитного механизма в первую очередь сокращает расход токенов на запрещённые запросы?
Итоги
Основы защитных механизмов:
- Детерминированные правила, наложенные на вероятностную модель.
- Защитные механизмы для входных данных экономят средства, а защитные механизмы для выходных данных защищают пользователей.
- Действия: заблокировать, удалить, сгенерировать заново, передать специалисту.
- Сочетайте детерминированные и модельные проверки и запускайте их параллельно.
- Отслеживайте ложные срабатывания, записывайте вердикты в журнал и предпочитайте архитектурные решения исправлениям.
Далее: подробное изучение фильтрации входных и выходных данных.
Часто задаваемые вопросы
Урок «Что такое защитные ограничения» бесплатный?
Да — полный текст урока «Что такое защитные ограничения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.
Чему я научусь в уроке «Что такое защитные ограничения»?
Фильтры безопасности и качества Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Prompt Engineering?
Предыдущий опыт не требуется. AI Prompt Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Что такое защитные ограничения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Prompt Engineering?
Да. Каждый урок AI Prompt Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что такое защитные ограничения
- Фильтрация входных и выходных данных
- Проверяющие схемы и правила
- Проверка с помощью самокритики