From dfed26e955022062adc0da9de7ef065889954b17 Mon Sep 17 00:00:00 2001 From: s495728 Date: Mon, 10 Jun 2024 19:31:38 +0200 Subject: [PATCH] Zmiany dla dialog policy --- src/service/dialog_policy.py | 48 +++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/src/service/dialog_policy.py b/src/service/dialog_policy.py index cb8a1de..a1d5d4f 100644 --- a/src/service/dialog_policy.py +++ b/src/service/dialog_policy.py @@ -5,29 +5,43 @@ from model.slot import Slot class DialogPolicy: def predict(self, dsm): - system_action = defaultdict(list) last_frame = dsm.state['history'][-1] - if(dsm.state['was_previous_order_invalid']==False): - match(last_frame.act.strip('/')): - case "inform" | "affirm": + if(dsm.state['was_previous_order_invalid'] == False): + if("inform" in last_frame.act): + act = last_frame.act.split('/')[0] + else: + act = last_frame.act + match(act): + case "inform" | "affirm" | "negate": current_active_status = dsm.get_current_active_stage() match(current_active_status): case "collect_food": - system_action["inform"].append(["menu", dsm.state['constants']['menu']]) + return Frame(source="system", act = "request/food") case "collect_drinks": - system_action["inform"].append(["drink", dsm.state['constants']['drink']]) + return Frame(source="system", act = "request/drinks") case "collect_address": - system_action["request"].append(["address"]) + return Frame(source="system", act = "request/address") if(current_active_status == None): - system_action["inform"].append(["order", dsm.belief_state]) - case "request": - for slot in last_frame.slots: - system_action["inform"].append([slot, dsm.state['constants'][slot]]) + return Frame(source="system", act = "end") + case "request/menu": + return Frame(source="system", act = "inform", slots = [Slot("menu", dsm.state['constants']['menu'])]) + case "request/price": + return Frame(source="system", act = "inform", slots = [Slot("price", dsm.state['total_cost'])]) + case "request/ingredients": + return Frame(source="system", act = "inform", slots = [Slot("ingredients", dsm.state['constants']['ingredients'])]) + case "request/sauce": + return Frame(source="system", act = "inform", slots = [Slot("sauce", dsm.state['constants']['sauce'])]) + case "request/time": + return Frame(source="system", act = "inform", slots = [Slot("time", dsm.state['belief_state']['time'])]) + case "request/size": + return Frame(source="system", act = "inform", slots = [Slot("size", dsm.state['constants']['size'])]) + case "request/delivery-price": + return Frame(source="system", act = "inform", slots = [Slot("delivery-price", "10")]) + case "request/drinks": + return Frame(source="system", act = "inform", slots = [Slot("drink", dsm.state['constants']['drink'])]) case "welcomemsg": - system_action["inform"].append(["menu", dsm.state['constants']['menu']]) + return Frame(source="system", act = "inform", slots = [Slot("menu", dsm.state['constants']['menu'])]) case "bye": - system_action["bye"].append([[], None]) - case "negate": - system_action["affirm"].append([[], None]) - - return system_action \ No newline at end of file + return Frame(source="system", act = "bye") + + return Frame(source="system", act = "repeat") \ No newline at end of file