Reguły są trochę podobnym elementem do Konwersacji, również mają za zadanie połączyć intencje z akcjami. Różnica jest taka, że Reguły są krótkie: 1 intencja plus formularz i/lub akcje. Dodatkowo reguły zawsze będą podążać tą samą ścieżką rozmowy, w przeciwieństwie do konwersacji, które mogą zostać wykorzystane do takiego wytrenowania modelu, aby umiał obsłużyć nieprzewidziane ścieżki rozmowy.
Dodatkowo reguły zastępują natychmiastowe odpowiedzi, które do tej pory występowały w systemie.
Reguły to takie rozmowy, w których na konkretną wiadomość od użytkownika chcemy, aby bot zareagował zawsze tak samo.
Okno dialogowe dodawania reguły:
Regułę, analogicznie jak konwersację, możemy odpowiednio nazwać i wybrać czy chcemy ją opublikować. Również mamy do dyspozycji system tagowania, który ułatwia filtrowanie dodanych reguł.
Każda reguła musi zaczynać się od wypowiedzi/intencji użytkownika. Dodajemy ją klikając w niebieski button z napisem “+ Intencja”, a następnie wybieramy tą konkretną poprzez wybór z listy bądź wpisanie jej nazwy.
Następnie określamy reakcje bota, na wybraną intencję. Klikamy w button “+Akcja” lub “+Formularz” i spośród wszystkich dodanych wcześniej, wybieramy właściwy element. Możliwe jest dodawanie kilku akcji bota, które następują po sobie.
Tak stworzona konwersacja zostaje automatycznie zapisana, dzięki systemowi Autozapisu.
Sprawdzenie slota w regułach definiujemy w analogiczny sposób jak w konwersacjach.
Powinniśmy jednak stosować pewną dodatkową zasadę: jeśli w jakiejś regule 1 po akcji A następuje sprawdzenie slota S, to gdy w regule 2 również mamy wystąpienie akcji A to również powinno nastąpić sprawdzenie slota S.
❌ Źle:
Reguła 1: intencja_A → akcja_A → slot_S → akcja_B
Reguła 2: intencja_A → akcja_A → akcja_C
✅ Dobrze:
Reguła 1: intencja_A → akcja_A → slot_S → akcja_B
Reguła 2: intencja_A → akcja_A → slot_S → akcja_C
Dla niepoprawnego zadeklarowania reguł zostanie zwrócony błąd walidacji.
Reguły nie mogą być sprzeczne zarówno między sobą, jak i z konwersacjami.
Reguły są sprzeczne, gdy deklarują początkowo podobny przebieg rozmowy, który jednak ma zakończyć się inaczej.
Na przykład:
- gdy dla różnych intencji ma nastąpić inna akcja:
❌ Źle:
Reguła 1: intencja_A → akcja_A
Reguła 2: intencja_A → akcja_B
- gdy występuje konwersacja, która zawiera w sobie kroki analogiczne do jednej z reguł, ale poszerza tok rozmowy o kolejne kroki:
❌ Źle:
Reguła: intencja_A → formularz_A → akcja_A
Konwersacja: intencja_A → formularz_A-> akcja_A → akcja_B → intencja_B → akcja_C
Przy okazji, należy zwrócić uwagę czy używamy slotów, które są ignorowane (a zatem nie wpływają na przebieg/przewidywanie toku rozmowy).
Przykładowo reguły:
Reguła 1: intencja_A → slot_A (wartość: X) → akcja_A
Reguła 2: intencja_A → slot_A (wartość: Y) → akcja_B
Mogą być sprzeczne, gdy slot_A jest ignorowany, bo wtedy intencja_A ma raz wywołać akcję_A a innym razem akcję_B. Te reguły nie będą natomiast sprzeczne, gdy slot_A NIE jest ignorowany.
Można “wyłączyć” sprawdzanie takich sprzeczności przez RASA:
Trenowanie → Trenowanie modeli → Konfiguracja RASA → dla RulePolicy ustawić check_for_contradictions: false.
Jednak takie wyłączenie trzeba robić świadomie, bo wytrenowany model może wtedy zachowywać się w trochę nieprzewidziany sposób.