Restart + "clean" console command after user is finished

This commit is contained in:
Adrian Klessa 2024-06-10 20:48:24 +02:00
parent 6598a84e48
commit 7a5064f19e

View File

@ -49,11 +49,11 @@ class Model:
r = self.nlu(msg) r = self.nlu(msg)
slots = r['slots'] slots = r['slots']
#print(r) # print(r)
r = self.dst(r) r = self.dst(r)
#print(r) # print(r)
r = self.dp() r = self.dp()
#print(r) # print(r)
r = self.nlg(r, slots) r = self.nlg(r, slots)
if debug: if debug:
print(r) print(r)
@ -193,7 +193,7 @@ class NLG():
def __init__(self, state): def __init__(self, state):
self.model = AutoModelForSeq2SeqLM.from_pretrained("filnow/nlg-umt5-pol") self.model = AutoModelForSeq2SeqLM.from_pretrained("filnow/nlg-umt5-pol")
self.tokenizer = AutoTokenizer.from_pretrained("google/umt5-small") self.tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
self.nlg_pipeline = pipeline('summarization', model=self.model, tokenizer=self.tokenizer) self.nlg_pipeline = pipeline('summarization', model=self.model, tokenizer=self.tokenizer)
self.messages = { self.messages = {
"welcomemsg": [ "welcomemsg": [
@ -231,31 +231,32 @@ class NLG():
def __call__(self, act: str, slots: List[Tuple[str, str]]) -> str: def __call__(self, act: str, slots: List[Tuple[str, str]]) -> str:
if act == 'welcomemsg': if act == 'welcomemsg':
return random.choice(self.messages["welcomemsg"]) return random.choice(self.messages["welcomemsg"])
elif act in ["inform", "request", "select"]: elif act in ["inform", "request", "select"]:
if slots == []: if slots == []:
return "Przepraszam nie rozumiem. Podaj więcej informacji." return "Przepraszam nie rozumiem. Podaj więcej informacji."
else: else:
text = [f"{slot[0]}[{slot[1]}]" for slot in slots if slot[1] is not None] text = [f"{slot[0]}[{slot[1]}]" for slot in slots if slot[1] is not None]
return self.nlg_pipeline(f'generate text: {", ".join(text)}')[0]['summary_text'] return self.nlg_pipeline(f'generate text: {", ".join(text)}')[0]['summary_text']
elif act == "canthelp.missing_slot_value" or act == "canthelp": elif act == "canthelp.missing_slot_value" or act == "canthelp":
return random.choice(self.messages["canthelp"]) return random.choice(self.messages["canthelp"])
elif act == "bye": elif act == "bye":
return random.choice(self.messages["bye"]) return random.choice(self.messages["bye"])
elif act == 'affirm': elif act == 'affirm':
return random.choice(self.messages["affirm"]) return random.choice(self.messages["affirm"])
elif act == "repeat": elif act == "repeat":
return random.choice(self.messages["repeat"]) return random.choice(self.messages["repeat"])
elif act == "reqmore": elif act == "reqmore":
return random.choice(self.messages["reqmore"]) return random.choice(self.messages["reqmore"])
elif act == "offer": elif act == "offer":
return "Proszę oto menu zeskanuj kod QR aby je zobaczyć." return "Proszę oto menu zeskanuj kod QR aby je zobaczyć."
def dialogue_test(): def dialogue_test():
model = Model() model = Model()
@ -285,12 +286,12 @@ def dialogue_test():
response = model("uniwersytetu poznanskiego 4 61-614 poznan") response = model("uniwersytetu poznanskiego 4 61-614 poznan")
print() print()
# jezeli sprobuje dokonac zamowienia bez podania potrzebnych informacji prosimy o nie # jezeli sprobuje dokonac zamowienia bez podania potrzebnych informacji prosimy o nie
#response = model("Dobrze, nie mogę się już doczekać.") # response = model("Dobrze, nie mogę się już doczekać.")
response = model("Super, to zatem wszystko!") response = model("Super, to zatem wszystko!")
print() print()
# 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")
response = model("Zapłacę kartą przy odbiorze") response = model("Zapłacę kartą przy odbiorze")
print() print()
# jezeli potwiedzi zamowienie to zakoncz zamawianie sukcesem i wypisz calosc # jezeli potwiedzi zamowienie to zakoncz zamawianie sukcesem i wypisz calosc
@ -325,10 +326,17 @@ def dialogue_test():
response = model("Dobrze, nie mogę się już doczekać.") response = model("Dobrze, nie mogę się już doczekać.")
print() print()
if __name__ == "__main__": if __name__ == "__main__":
model = Model() model = Model()
print("Chatbot Jarvis\n--------------") print("Chatbot Jarvis\n--------------")
while True: while True:
print("\nUżytkownik: ") print("\nUżytkownik: ")
user_input = input() user_input = input()
response = model(user_input, debug=False) while user_input == "SYSTEM_FINISH":
print("\n\n\n\n\n\n\n\n\n\n\n\n")
model = Model()
print("Chatbot Jarvis\n--------------")
print("\nUżytkownik: ")
user_input = input()
response = model(user_input, debug=False)