Conv restart act + verify required slots filled before conv end #1

Merged
s452487 merged 2 commits from restart into main 2024-05-26 21:26:50 +02:00

View File

@ -117,7 +117,12 @@ class DST(dst.DST):
elif act == 'request': elif act == 'request':
pass 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 return self.state
@ -145,10 +150,20 @@ class DP():
# zaoferuj cale menu # zaoferuj cale menu
elif self.state['user_action'][-1] == 'ack': elif self.state['user_action'][-1] == 'ack':
system_action = 'bye' address = self.state["belief_state"]["address"]
self.state['terminated'] = True payment_method = self.state["belief_state"]["payment_method"]
# potwierdz i zakoncz, podsumuj zamowienie 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
else: else:
system_action = 'inform' system_action = 'inform'
# poinformuj o wybranych slotach z "request_state" # poinformuj o wybranych slotach z "request_state"
@ -206,6 +221,11 @@ if __name__ == "__main__":
response = model("uniwersytetu poznanskiego 4 61-614 poznan") response = model("uniwersytetu poznanskiego 4 61-614 poznan")
assert response == "inform" 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 # jezeli wybierze rodzaj platnosci to zapisz wybor i poinformuj o nim
# response = model("karta") # response = model("karta")
# response = model("Poproszę blikiem z góry") # response = model("Poproszę blikiem z góry")
@ -222,4 +242,26 @@ if __name__ == "__main__":
response = model("Dobrze, nie mogę się już doczekać.") response = model("Dobrze, nie mogę się już doczekać.")
assert response == "bye" assert response == "bye"
print() print("----Konwersacja z restartem-------")
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"