From dfc964d63a060dffb5c84cb2b9c82e6a2c426d71 Mon Sep 17 00:00:00 2001 From: Adrian Klessa <50918271+AdrianKlessa@users.noreply.github.com> Date: Sun, 26 May 2024 19:58:57 +0200 Subject: [PATCH 1/2] Restart act --- dialog_model.py | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/dialog_model.py b/dialog_model.py index 887b5e3..0d5b6f1 100644 --- a/dialog_model.py +++ b/dialog_model.py @@ -117,7 +117,12 @@ class DST(dst.DST): elif act == 'request': pass - + elif act == 'restart': + self.state["belief_state"] = default_state()["belief_state"] + self.state["booked"] = {} + self.state["request_state"] = [] + self.state["terminated"] = False + self.state["history"] = [] return self.state @@ -149,6 +154,9 @@ class DP(): self.state['terminated'] = True # potwierdz i zakoncz, podsumuj zamowienie + elif self.state['user_action'][-1] == 'restart': + system_action = 'welcomemsg' + # zachowaj sie jak na poczatku rozmowy else: system_action = 'inform' # poinformuj o wybranych slotach z "request_state" @@ -222,4 +230,26 @@ if __name__ == "__main__": response = model("Dobrze, nie mogę się już doczekać.") assert response == "bye" - print() + print("----Testowanie restartu-------") + + model = Model() + response = model("Siema, w czym możesz mi pomóc?") + assert response == "welcomemsg" + response = model("Interesują mnie dania kuchni włoskiej oraz meksykanskiej.") + assert response == "offer" + response = model("Chciałbym zjesc tatara") + assert response == "inform" + response = model("uniwersytetu poznanskiego 4 61-614 poznan") + assert response == "inform" + response = model("od nowa") + assert response == "welcomemsg" + response = model("Interesują mnie dania kuchni włoskiej oraz meksykanskiej.") + assert response == "offer" + response = model("Chciałbym zjesc tatara") + assert response == "inform" + response = model("uniwersytetu poznanskiego 4 61-614 poznan") + assert response == "inform" + response = model("Zapłacę kartą przy odbiorze") + assert response == "inform" + response = model("Dobrze, nie mogę się już doczekać.") + assert response == "bye" \ No newline at end of file From d47fd92d3be5b3df0ea1352a48a3f4e2cd90c7c3 Mon Sep 17 00:00:00 2001 From: Adrian Klessa <50918271+AdrianKlessa@users.noreply.github.com> Date: Sun, 26 May 2024 21:23:41 +0200 Subject: [PATCH 2/2] Verify all required slots are filled before ending conv --- dialog_model.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/dialog_model.py b/dialog_model.py index 0d5b6f1..94a8623 100644 --- a/dialog_model.py +++ b/dialog_model.py @@ -150,10 +150,17 @@ class DP(): # zaoferuj cale menu elif self.state['user_action'][-1] == 'ack': - system_action = 'bye' - self.state['terminated'] = True - # potwierdz i zakoncz, podsumuj zamowienie + address = self.state["belief_state"]["address"] + payment_method = self.state["belief_state"]["payment_method"] + dish = self.state["belief_state"]["dish"] + # W przypadku braku szczegolnej informacji o czasie zamówienia zamawiamy natychmiast + if address and payment_method and dish: + system_action = 'bye' + self.state['terminated'] = True + # potwierdz i zakoncz, podsumuj zamowienie + else: + system_action = 'canthelp.missing_slot_value' elif self.state['user_action'][-1] == 'restart': system_action = 'welcomemsg' # zachowaj sie jak na poczatku rozmowy @@ -214,6 +221,11 @@ if __name__ == "__main__": response = model("uniwersytetu poznanskiego 4 61-614 poznan") assert response == "inform" + # jezeli sprobuje dokonac zamowienia bez podania potrzebnych informacji prosimy o nie + #response = model("Dobrze, nie mogę się już doczekać.") + response = model("Super, to zatem wszystko!") + assert response == "canthelp.missing_slot_value" + # jezeli wybierze rodzaj platnosci to zapisz wybor i poinformuj o nim # response = model("karta") # response = model("Poproszę blikiem z góry") @@ -230,7 +242,7 @@ if __name__ == "__main__": response = model("Dobrze, nie mogę się już doczekać.") assert response == "bye" - print("----Testowanie restartu-------") + print("----Konwersacja z restartem-------") model = Model() response = model("Siema, w czym możesz mi pomóc?")