Модерация (Guardrails)
Нода Модерация выполняет проверку контента с помощью языковой модели. Она анализирует текст по заданным критериям и направляет поток по ветке «Пройдено» или «Не пройдено» в зависимости от результата.
Назначение
- Проверка пользовательского ввода на безопасность
- Модерация контента перед публикацией
- Валидация ответов агента по заданным правилам
- Фильтрация нежелательного контента
Настройки
Входная переменная
Определяет, какой текст проверять. По умолчанию -- input. Можно указать:
input-- входные данные процессаlastOutput-- результат предыдущей нодыnode_X-- результат конкретной ноды
Кнопка справа от поля позволяет выбрать переменную интерактивно.
Системный промпт
Промпт, определяющий правила проверки. Модель получает этот промпт как системное сообщение, а проверяемый текст -- как сообщение пользователя.
Модель должна вернуть JSON:
{
"passed": true,
"violations": []
}
Или, если нарушения найдены:
{
"passed": false,
"violations": ["описание нарушения 1", "описание нарушения 2"]
}
Промпт по умолчанию проверяет общую безопасность контента. Вы можете заменить его на свой с конкретными правилами.
Пример кастомного промпта:
Ты -- модератор контента для финансового сервиса.
Проверь текст на наличие:
1. Финансовых рекомендаций без дисклеймера
2. Обещаний гарантированной доходности
3. Призывов к рискованным инвестициям
4. Персональных данных (номера карт, ИНН и т.д.)
Ответь JSON: {"passed": true/false, "violations": [...]}
Если текст безопасен, set passed=true и violations=[].
Модель анализа
Языковая модель для проверки. По умолчанию: openai/gpt-4o. Рекомендуется использовать более мощные модели для точной модерации.
Действие при нарушении
Определяет поведение при обнаружении нарушений:
| Действие | Описание |
|---|---|
| Блокировать | Поток идет по ветке «Не пройдено» (по умолчанию) |
| Предупредить | Нарушение логируется, но поток идет по ветке «Пройдено» |
| Пометить | Нарушение записывается в лог, поток продолжается |
При действиях «Предупредить» и «Пометить» нода всегда направляет поток по ветке «Пройдено», даже если нарушения найдены. Это полезно для сбора статистики без блокировки.
Входные данные
Текст для проверки, определяемый входной переменной.
Выходные данные
{
"passed": true,
"condition": true,
"branch": "passed",
"violations": [],
"message": "All guardrails passed",
"question": "проверяемый текст",
"action_taken": "block"
}
При обнаружении нарушений:
{
"passed": false,
"condition": false,
"branch": "failed",
"violations": ["описание нарушения"],
"message": "Content flagged: описание нарушения",
"question": "проверяемый текст",
"action_taken": "block"
}
Подключения
- Вход: один вход (слева)
- Выход «Пройдено»: зеленая точка (верхняя) -- контент безопасен
- Выход «Не пройдено»: красная точка (нижняя) -- обнаружены нарушения
Примеры использования
Проверка пользовательского ввода
Старт → Модерация → [Пройдено] → Агент → Конец
→ [Не пройдено] → Сообщение "Ваш запрос содержит недопустимый контент"
Проверка ответа агента
Старт → Агент → Модерация → [Пройдено] → Конец
→ [Не пройдено] → LLM (переформулировать ответ) → Конец
Многоуровневая модерация
Старт → Модерация (безопасность) → [Пройдено] → Модерация (бренд-гайд) → [Пройдено] → Отправка
Если модель модерации не смогла выполнить проверку (например, из-за ошибки API), нода по умолчанию пропускает контент (fail-open) и записывает ошибку в результат. Это предотвращает полную блокировку процесса из-за технических проблем с модерацией. Подробнее: Отладка выполнений.
Каждая проверка -- это полноценный вызов LLM. При высоких объемах учитывайте дополнительные расходы на токены. Для снижения стоимости можно использовать более легкие модели (gpt-4o-mini).