Что такое правила¶
Что такое правила¶
Содержание инструкции:
- Определение
- Отличия правил от историй
- Формат записи правил в файлах проекта
- Противоречия в правилах
- Как избежать противоречий в правилах
Определение¶
Правила (от англ. Rules) - это способ описания коротких фрагментов диалога, которые всегда должны следовать одному и тому же пути.
Правила используются для описания жестко заданных сценариев, где бот должен реагировать определенным образом на конкретные пользовательские сообщения или действия. Они полезны для простых диалогов, таких как приветствие, прощание или ответы на часто задаваемые вопросы.
Отличия правил от историй¶
- Истории используются для обучения модели управления диалогом на основе машинного обучения. Они описывают возможные пути диалога.
- Правила, в отличие от историй, не требуют обучения и выполняются всегда, если их условия выполнены.
Формат записи правил в файлах проекта¶
Правила записываются в файле rules.yml
.
Каждое правило состоит из:
rule
: Уникальное имя правила.steps
: Последовательность шагов, которые бот должен выполнить.condition
: Условия, при которых правило должно сработать (опционально).
Пример записи:
-
Шаги в правилах:
intent
: Определяет, какое намерение пользователя должно быть распознано для срабатывания правила.action
: Действие, которое бот должен выполнить в ответ на намерение.slot_was_set
: Условие, связанное с установкой определенного слота (опционально).
-
Условия (Conditions):
Условия позволяют уточнить, когда правило должно сработать. Например, можно указать, что правило должно выполняться только если определенный слот имеет конкретное значение.
Например, пусть необходимо чтобы правило сработало только, если, когда-либо ранее был задан слот PERSON и к текущему моменту он не сброшен в null. Тогда это надо указать в разделе slot_was_set:
rules: - rule: Правило 2> Говорим 'До скорой встречи {username}', если человек сообщил имя condition: - slot_was_set: # правило сработает, если - username # слот {username} установлен steps: - intent: goodbye # 🙎 пока - action: utter_goodbye_username # 💻 До скорой встречи Настя - rule: Правило 3> Говорим 'До скорой встречи', если человек не сообщал имя condition: - slot_was_set: # правило сработает, если - username: null # слот {username} не был установлен steps: - intent: goodbye # 🙎 пока - action: utter_goodbye # 💻 До скорой встречи
Противоречия в правилах¶
Если правила настроены неправильно, могут возникать противоречия, которые приводят к неожиданному поведению бота. Противоречия в правилах могут возникать, когда несколько правил имеют перекрывающиеся условия или шаги, и помощник не может однозначно определить, какое правило применить.
-
Перекрывающиеся условия
Если два или более правила имеют одинаковые или похожие условия (например, одинаковые намерения или слоты), бот может не знать, какое правило выполнить.
-
Неправильная последовательность шагов
Если правила содержат шаги, которые конфликтуют с другими правилами или историями, это может вызвать неожиданное поведение.
-
Конфликт с историями
Правила имеют приоритет над историями, но если истории и правила описывают похожие сценарии, это может привести к путанице.
-
Неправильное использование слотов
Если правила зависят от слотов, но слоты не очищаются или не обновляются правильно, это может привести к конфликтам.
Как избежать противоречий в правилах¶
-
Уникальные условия
Убедитесь, что каждое правило имеет уникальные условия (например, уникальные намерения или комбинации слотов).
-
Четкая логика
- Определите, какие правила должны иметь приоритет, и убедитесь, что они не перекрываются.
- Используйте
condition
для уточнения условий срабатывания правил.
-
Тестирование
- Используйте инструменты тестирования, чтобы проверить, как бот ведет себя при различных сценариях.
- Проверьте, нет ли конфликтов между правилами и историями.
-
Очистка слотов
Убедитесь, что слоты очищаются или обновляются правильно, чтобы избежать неожиданного поведения.
-
Минимизация использования правил
Используйте правила только для простых и предсказуемых сценариев. Для сложных диалогов лучше полагаться на истории и машинное обучение.