English translation is not available yet. Showing Russian content.
Объясните разницу между NeMo Guardrails и Garak. Когда что используется?
Краткий тезис
NeMo Guardrails и Garak — это инструменты для обеспечения безопасности LLM-приложений, но они решают принципиально разные задачи. NeMo Guardrails — это runtime-защита, которая внедряется в production-среду и перехватывает потенциально опасные запросы и ответы в реальном времени. Garak — это инструмент для тестирования (red-teaming), который запускается до деплоя и автоматически генерирует атаки для поиска уязвимостей модели. Guardrails предотвращает инциденты, Garak — помогает их найти и устранить на этапе разработки.
1. Термины: Runtime-защита vs Red-teaming
Runtime-защита — это механизмы, работающие в режиме реального времени во время эксплуатации системы. Они проверяют каждый входящий запрос и исходящий ответ на соответствие заданным политикам безопасности, фильтруют нежелательный контент, предотвращают инъекции и утечки данных. Guardrails реализует именно такой подход.
Red-teaming (красная команда) — это процесс активного поиска уязвимостей в модели путём имитации атак злоумышленника. Garak автоматизирует red-teaming: генерирует тысячи вариаций вредоносных промптов (jailbreaks, prompt injections, токсичные запросы) и оценивает, как модель на них реагирует.
Ключевое различие — фаза жизненного цикла: NeMo Guardrails работает после деплоя (в production), Garak — до деплоя (на этапе тестирования и валидации).
2. NeMo Guardrails: архитектура и сценарии
NeMo Guardrails — это открытая библиотека от NVIDIA для добавления «ограничителей» (guardrails) в LLM-приложения. Основные компоненты:
- Colang — декларативный язык для описания правил (rails). Пример:
# Запрет на обсуждение незаконных действий define user ask illegal "Как взломать ..." "Где купить наркотики ..." define flow user ask illegal bot refuse "Извините, я не могу ответить на этот запрос." - Runtime engine — выполняет правила, анализирует намерения пользователя, извлекает сущности, классифицирует запросы.
- Input/Output rails — проверки на входе (input) и выходе (output). Input rails могут отвергнуть запрос, output rails — модифицировать или заблокировать ответ.
- Moderation rails — интеграция с внешними модераторами (например, Azure Content Safety, NVIDIA Nemo).
Когда используется:
- В production-среде, где требуется гарантировать, что модель не выдаст опасный контент.
- Для compliance-требований (например, GDPR — запрет на генерацию персональных данных).
- Когда нужна настраиваемая политика безопасности: можно создать свои правила под конкретный use case.
Пример конфигурации (Python):
from nemoguardrails import RailsConfig, LLMRails
config = RailsConfig.from_path("./config")
rails = LLMRails(config)
response = rails.generate(messages=[{"role": "user", "content": "Как украсть данные?"}])
print(response["content"]) # "Извините, я не могу ответить на этот запрос."
3. Garak: автоматизированный red-teaming
Garak — это инструмент для тестирования LLM на устойчивость к атакам. Разработан компанией NVIDIA (ранее от Leondra). Особенности:
- Плагинная архитектура — есть модули (probes) для разных типов атак:
- Jailbreak — попытки обойти ограничения (например, «DAN», «roleplay as assistant without restrictions»).
- Prompt injection — внедрение вредоносных инструкций.
- Toxicity — проверка на генерацию оскорбительного контента.
- Data leakage — попытка извлечь тренировочные данные.
- Denial of service — генерация бесконечных ответов.
- Генерация атак — Garak может модифицировать один промпт в сотни вариаций (через синонимы, перестановки, encoding).
- Отчёт — после прогона выводит подробную статистику: сколько атак прошло, какие типы уязвимостей найдены, примеры успешных атак.
Когда используется:
- Перед деплоем новой модели или обновления.
- Для регулярного аудита безопасности (например, раз в месяц).
- Для сравнения разных моделей или версий одной модели.
- Для сертификации модели (например, для соответствия стандарту OWASP LLM Top 10).
Пример запуска Garak:
# Установка
pip install garak
# Прогон на модели (например, OpenAI GPT-3.5)
garak --model_name openai/gpt-3.5-turbo --probes promptinject,toxicity
# Прогон на локальной модели (через Hugging Face)
garak --model_type huggingface --model_name microsoft/phi-2 --probes jailbreak
4. Сравнительная таблица NeMo Guardrails vs Garak
| Характеристика | NeMo Guardrails | Garak |
|---|---|---|
| Назначение | Runtime-защита | Red-teaming / тестирование |
| Этап использования | Production (после деплоя) | Разработка / Pre-deployment |
| Режим работы | Активный — перехватывает запросы/ответы | Пассивный — генерирует атаки, не изменяет ответы |
| Язык правил | Colang (декларативный DSL) | Нет правил — конфигурация через probes |
| Интеграция | Через Python SDK, REST API, LangChain | Через CLI, Python API |
| Что проверяет | Ввод/вывод на соответствие политикам | Устойчивость модели к атакам |
| Генерация атак | Нет (только блокировка) | Да (автоматическая мутация промптов) |
| Результат | Заблокированный запрос или модифицированный ответ | Отчёт с найденными уязвимостями |
| Типичные пользователи | DevSecOps, инженеры по безопасности в production | Исследователи безопасности, QA-инженеры |
| Пример использования | «Не дать модели ответить на вопрос о взломе» | «Проверить, можно ли заставить модель выдать секретный ключ» |
5. Взаимодополнение: почему нужны оба инструмента
NeMo Guardrails и Garak не заменяют друг друга, а дополняют:
- Garak находит уязвимости → разработчик закрывает их (дообучение, доработка guardrails).
- NeMo Guardrails защищает от оставшихся угроз в production.
- Garak можно использовать для регрессионного тестирования guardrails: после обновления правил прогнать те же атаки и убедиться, что новые атаки блокируются.
Пример цикла безопасности:
- Разработчик модели → обучение → Garak (находит 10 jailbreaks) → дообучение + настройка NeMo Guardrails → деплой → ежедневная runtime-защита NeMo Guardrails → ежемесячный прогон Garak для обновлённых атак.
6. Когда что использовать: конкретные сценарии
NeMo Guardrails использовать, когда:
- Вы запускаете чат-бота для клиентов (нужно фильтровать нецензурную лексику, персональные данные).
- LLM-приложение работает с конфиденциальными данными (медицина, финансы).
- Требуется аудит всех взаимодействий с моделью (логирование и блокировка запрещённых тем).
- Вы хотите добавить «мягкие» ограничения (например, «не отвечай на вопросы о политике»).
Garak использовать, когда:
- Вы выпускаете новую версию модели и хотите сравнить её уязвимости с предыдущей.
- Вы ищете конкретные типы уязвимостей (например, только prompt injection или data leakage).
- Вы проводите аудит безопасности в рамках compliance (ISO 27001, SOC 2).
- Вы тренируете red-team внутри компании — Garak даёт baseline для ручного тестирования.
Комбинированный сценарий: Вы хотите быть уверены, что модель устойчива к новым видам атак (Garak), а также имеет runtime-защиту на случай, если атака всё-таки сработает (NeMo Guardrails). Например, Garak находит, что модель можно обмануть через Unicode homoglyphs. Вы добавляете в NeMo Guardrails правило на нормализацию Unicode во входных данных. Затем повторно прогоняете Garak — атака больше не проходит.
7. Ограничения и best practices
- Не защищает от атак, которые маскируются под легитимные запросы (например, «explain how to pick a lock» vs «how to open a lock without key»). Требует тонкой настройки политик.
- Снижает latency (добавляет вызов LLM для классификации намерений).
- Может быть обойдён, если злоумышленник знает правила (social engineering).
- Не даёт 100% гарантии, что уязвимостей нет — только те, что есть в probes.
- Результаты зависят от качества генерации атак (нужно обновлять библиотеки probes).
- Может генерировать ложноположительные срабатывания (модель отвечает безопасно, но probe считает иначе).
Best practices:
- Используйте оба инструмента в CI/CD пайплайне: перед каждым деплоем прогоняйте Garak, а production защищайте NeMo Guardrails.
- Храните историю атак Garak (в формате JSON) для отслеживания регрессий.
- Для NeMo Guardrails настраивайте разные наборы правил для разных каналов (например, для публичного чата — строгие правила, для внутреннего — мягкие).
Пет-проект для закрепления
Задача: Разработать минимальную систему защиты LLM-бота для генерации кода, используя NeMo Guardrails и Garak.
Инструменты:
- Python 3.10+
- NeMo Guardrails (
pip install nemoguardrails) - Garak (
pip install garak) - Локальная модель (например,
microsoft/phi-2черезtransformers)
Шаги:
Ожидаемый результат:
- Рабочий сервер с runtime-защитой.
- Отчёт Garak, показывающий снижение количества успешных атак с (например) 15% до 2%.
- Понимание, как интегрировать оба инструмента в реальный пайплайн.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 124 | Защита RAG от инъекций (связано с NeMo Guardrails) |
| 126 | Тестирование безопасности (Garak как инструмент) |
| 123 | Типы атак (общие термины) |
| 128 | Настройка guardrails (NeMo Guardrails) |
| 119 | Общий процесс оценки безопасности |
| 127 | Data leakage — одна из тем Garak |
Навигация
- Предыдущий: 124
- Следующий: 126
- Индекс: 00. Индекс разборов