LLM-GR (Guardrails)
Реакция LLM-GR выполняет дополнительную проверку текста с помощью LLM перед тем, как отдать его пользователю. Основное назначение — валидация исходящих ответов LLM, но реакция может проверять любую переменную из контекста.
Когда использовать
- После реакции LLM-Ответ — для проверки сгенерированного ответа перед отправкой пользователю
- После реакции LLM-Анализ — для валидации результатов анализа
- В любом другом месте сценария — для проверки произвольных переменных контекста (например, входящего сообщения пользователя)
Настройка промпта Guardrails
Промпт для проверки можно задать на двух уровнях:
1. На уровне проекта
Перейдите в Настройки проекта → вкладка Модерация и заполните поле «Промпт для guardrails» (до 3 000 символов). Этот промпт будет использоваться по умолчанию для всех реакций LLM-GR в проекте.
2. На уровне шага сценария
В настройках самой реакции LLM-GR укажите промпт в поле «Промпт». Этот промпт имеет приоритет над проектным.
Если в реакции LLM-GR промпт не указан, используется промпт из настроек проекта (вкладка «Модерация»). Если не задан ни один — проверка не будет выполнена корректно.
Параметры реакции
| Поле | Описание | Обязательное |
|---|---|---|
| Переменная для проверки | Имя переменной контекста, из которой LLM-GR возьмёт текст для анализа | Да |
| Переменная для причины | Имя переменной, в которую будет записана причина ошибки при непройденной проверке | Нет |
| Промпт | Инструкция для LLM по проверке текста. Если не указан — используется промпт из настроек проекта | Нет |
Выходные порты реакции
Реакция имеет два выходных порта:
- Успех — текст прошёл проверку guardrails. Можно отправить оригинальный ответ пользователю.
- Ошибка — текст не прошёл проверку. В переменную для причины (если указана) записывается объяснение, почему проверка не пройдена.
Пример использования: LLM-Ответ + LLM-GR
Типичная цепочка: intent → LLM-Ответ → LLM-GR → Текст
Шаг 1. Настройте LLM-Ответ
В настройках реакции LLM-Ответ:
- Включите Silent mode
- В поле «Переменная для сохранения» укажите имя переменной, например:
llm_answer
LLM-Ответ сгенерирует ответ, но не отправит его пользователю, а сохранит в переменную llm_answer.
Шаг 2. Настройте LLM-GR
В настройках реакции LLM-GR:
- Переменная для проверки —
llm_answer(та же переменная, что в Silent mode) - Переменная для причины — например,
guardrails_reason - Промпт — инструкция для проверки (или оставьте пустым для использования проектного промпта)
Шаг 3. Настройте ветвление
- Ветка «Успех» → добавьте реакцию Текст с содержимым
{{ llm_answer }}— пользователь получит оригинальный ответ, прошедший проверку - Ветка «Ошибка» → добавьте реакцию Текст с сообщением об отказе, например:
Извините, но не можем вам ответить, потому что: {{ guardrails_reason }}
Переменную guardrails_reason можно использовать не только для отображения пользователю, но и для аналитики. Например, в сниппете:
core.send('guardrails_block', context.guardrails_reason);
Это позволит отслеживать причины блокировок через сырые данные.
Альтернативные сценарии использования
Реакция LLM-GR не ограничена проверкой ответов LLM. Её можно применять для:
- Модерации входящих сообщений — используйте переменную
context.current.params.textдля проверки сообщения пользователя через промпт guardrails. Это даёт полный контроль над логикой модерации через настраиваемый промпт. - Проверки данных из внешних источников — валидация контента, полученного через сниппеты или API-интеграции.
- Многоэтапной проверки — последовательное применение нескольких LLM-GR с разными промптами для разных аспектов проверки.
Каждый вызов LLM-GR — это отдельный запрос к LLM, расходующий токены. Учитывайте это при проектировании сценариев с множественными проверками.