templatki

This commit is contained in:
s495724 2024-06-12 16:00:40 +02:00
parent fded76596b
commit e7a8814438
2 changed files with 296 additions and 105 deletions

View File

@ -1,35 +1,203 @@
import random import random
from service.templates import templates from service.templates import templates
def generate_pizza_info(slots):
pizza_name = None
query_type = None
for slot in slots:
if slot['name'] == 'pizza':
pizza_name = slot['value'].lower()
elif slot['name'] == 'ingredient':
query_type = 'ingredient'
elif slot['name'] == 'price':
query_type = 'price'
if pizza_name not in pizza_data:
return f"Nie mamy w ofercie pizzy o nazwie {pizza_name}."
if query_type == 'ingredient':
ingredients = pizza_data[pizza_name]['ingredient']
return f"Składniki pizzy {pizza_name} to: {', '.join(ingredients)}."
elif query_type == 'price':
price = pizza_data[pizza_name]['price']
return f"Cena pizzy {pizza_name} to {price} zł."
return f"Informacje o pizzy {pizza_name}: składniki to {', '.join(pizza_data[pizza_name]['ingredient'])}, cena to {pizza_data[pizza_name]['price']} zł."
def generate_ingredients_response(slots):
ingredients = [slot['value'] for slot in slots if slot['name'] == 'ingredients']
if ingredients:
ingredient_list = []
for ingredient in ingredients:
ingredient_list.extend(ingredient.keys())
response = f"Składniki to: {', '.join(ingredient_list)}."
return response
return "Nie podano składników."
def generate_drinks_response(slots):
drinks = [slot['value'] for slot in slots if slot['name'] == 'drink']
if drinks:
drink_details = []
for drink in drinks:
for name, details in drink.items():
price = details.get('price', 'unknown')
drink_details.append(f"{name} w cenie {price}")
if len(drink_details) > 1:
response = f"Dostępne napoje to: {', '.join(drink_details[:-1])} oraz {drink_details[-1]}."
else:
response = f"Dostępne napoje to: {drink_details[0]}."
return response
return "Nie podano napojów."
def generate_size_response(slots):
sizes = [slot['value'] for slot in slots if slot['name'] == 'size']
if sizes:
size_details = []
for size in sizes:
for name, details in size.items():
rozmiar = details.get('rozmiar', 'unknown')
size_details.append(f"{name} o średnicy {rozmiar} cm")
if len(size_details) > 1:
response = f"Dostępne rozmiary to: {', '.join(size_details[:-1])} oraz {size_details[-1]}."
else:
response = f"Dostępne rozmiary to: {size_details[0]}."
return response
return "Nie podano rozmiarów."
def generate_sauce_response(slots):
sauces = [slot['value'] for slot in slots if slot['name'] == 'sauce']
if sauces:
sauce_list = []
for sauce in sauces:
if isinstance(sauce, list):
sauce_list.extend(sauce)
else:
sauce_list.append(sauce)
return f"Dostępne sosy to: {', '.join(sauce_list)}."
return "Nie podano sosów."
def select_template(act, slots): def select_template(act, slots):
slot_names = {slot['name'] for slot in slots} slot_names = {slot['name'] for slot in slots}
if act == "welcomemsg": if act == "welcomemsg":
return random.choice(templates["welcomemsg"]) return random.choice(templates["welcomemsg"])
if act == "request/menu":
return random.choice(templates["request/menu"]) if "ingredients" in slot_names:
if act == "inform/address": return generate_ingredients_response(slots)
elif "drink" in slot_names:
return generate_drinks_response(slots)
elif "sauce" in slot_names:
return generate_sauce_response(slots)
elif "size" in slot_names:
return generate_size_response(slots)
elif "price" in slot_names:
return random.choice(templates["inform/price"])
if act == "inform":
if "menu" in slot_names:
return random.choice(templates["inform/menu"])
elif "address" in slot_names:
return random.choice(templates["inform/address"]) return random.choice(templates["inform/address"])
if act == "inform/delivery": elif "phone" in slot_names:
return random.choice(templates["inform/phone"])
elif "order-complete" in slot_names:
return random.choice(templates["inform/order-complete"])
elif "delivery" in slot_names:
return random.choice(templates["inform/delivery"]) return random.choice(templates["inform/delivery"])
if act == "inform/payment": elif "payment" in slot_names:
return random.choice(templates["inform/payment"]) return random.choice(templates["inform/payment"])
if act == "affirm": elif "time" in slot_names:
return random.choice(templates["affirm"]) return random.choice(templates["inform/time"])
if act == "request/drinks": elif "name" in slot_names:
return random.choice(templates["request/drinks"]) return random.choice(templates["inform/name"])
if act == "bye": elif "price" in slot_names and "pizza" in slot_names:
return random.choice(templates["bye"]) return generate_pizza_info(slots)
if act == "inform/order": elif act == "inform/order":
if "quantity" in slot_names and "food" in slot_names and "pizza" in slot_names: if "quantity" in slot_names and "pizza" in slot_names and "size" in slot_names:
return templates["inform/order"][1] return templates["inform/order"][1]
elif "quantity" in slot_names and "pizza" in slot_names: elif "quantity" in slot_names and "pizza" in slot_names:
return templates["inform/order"][4]
elif "food" in slot_names and "pizza" in slot_names:
return templates["inform/order"][2] return templates["inform/order"][2]
elif "quantity" in slot_names and "food" in slot_names:
return templates["inform/order"][0]
elif "food" in slot_names and "pizza" in slot_names and "price" in slot_names:
return templates["inform/order"][5]
elif "quantity" in slot_names: elif "quantity" in slot_names:
return templates["inform/order"][3] return templates["inform/order"][3]
else: else:
return templates["inform/order"][4] return templates["inform/order"][4]
elif act == "request/menu":
return random.choice(templates["request/menu"])
elif act == "inform/address":
return random.choice(templates["inform/address"])
elif act == "request/price":
return random.choice(templates["request/price"])
elif act == "inform/menu":
return random.choice(templates["inform/menu"])
elif act == "request/ingredients":
return random.choice(templates["request/ingredients"])
elif act == "request/sauce":
return random.choice(templates["request/sauce"])
elif act == "inform/phone":
return random.choice(templates["inform/phone"])
elif act == "inform/order-complete":
return random.choice(templates["inform/order-complete"])
elif act == "request/time":
return random.choice(templates["request/time"])
elif act == "request/size":
return random.choice(templates["request/size"])
elif act == "inform/delivery":
return random.choice(templates["inform/delivery"])
elif act == "inform/payment":
return random.choice(templates["inform/payment"])
elif act == "request/delivery-price":
return random.choice(templates["request/delivery-price"])
elif act == "inform/time":
return random.choice(templates["inform/time"])
elif act == "request/drinks":
return random.choice(templates["request/drinks"])
elif act == "request/food":
return random.choice(templates["request/food"])
elif act == "inform/name":
return random.choice(templates["inform/name"])
elif act == "bye":
return random.choice(templates["bye"])
return "default/template" return None
# def select_template(act, slots):
# slot_names = {slot['name'] for slot in slots}
# if act == "welcomemsg":
# return random.choice(templates["welcomemsg"])
# if act == "request/menu":
# return random.choice(templates["request/menu"])
# if act == "inform/address":
# return random.choice(templates["inform/address"])
# if act == "inform/delivery":
# return random.choice(templates["inform/delivery"])
# if act == "inform/payment":
# return random.choice(templates["inform/payment"])
# if act == "affirm":
# return random.choice(templates["affirm"])
# if act == "request/drinks":
# return random.choice(templates["request/drinks"])
# if act == "bye":
# return random.choice(templates["bye"])
# if act == "inform/order":
# if "quantity" in slot_names and "food" in slot_names and "pizza" in slot_names:
# return templates["inform/order"][1]
# elif "quantity" in slot_names and "pizza" in slot_names:
# return templates["inform/order"][4]
# elif "food" in slot_names and "pizza" in slot_names:
# return templates["inform/order"][2]
# elif "quantity" in slot_names:
# return templates["inform/order"][3]
# else:
# return templates["inform/order"][4]
# return "default/template"

View File

@ -6,12 +6,25 @@ templates = {
"Dziękujemy za zamówienie {quantity} x {food}.", "Dziękujemy za zamówienie {quantity} x {food}.",
"Na jaką pizzę masz ochotę?" "Na jaką pizzę masz ochotę?"
], ],
"request/menu": [ "inform/menu": [
"Oto nasze menu: {menu}.", "Oferujemy następujące pizze: {menu}.",
"Nasze menu obejmuje: {menu}.", "Nasze pizze to: {menu}.",
"Proszę, oto lista dostępnych dań: {menu}.", "W naszym menu znajdziesz pizze: {menu}.",
"Dostępne dania to: {menu}.", "Dostępne pizze to: {menu}.",
"W naszym menu znajdziesz: {menu}." "Proszę, oto lista dostępnych pizz: {menu}."
],
"inform/name": [
"Twoje imię to {name}.",
"Podane imię: {name}.",
"Twoje imię: {name}.",
"Masz na imię {name}.",
"Imię: {name}."
],
"inform/price": [
"Cena wybranej pizzy to {price} zł.",
"Koszt pizzy to {price} zł.",
"Wybrana pizza kosztuje {price} zł.",
"Cena pizzy wynosi {price} zł."
], ],
"inform/address": [ "inform/address": [
"Twój adres to: {address}.", "Twój adres to: {address}.",
@ -20,6 +33,92 @@ templates = {
"Dostarczymy na adres: {address}.", "Dostarczymy na adres: {address}.",
"Twój podany adres to: {address}." "Twój podany adres to: {address}."
], ],
"inform/sauce": [
"Dostępne sosy to: {sauce}.",
"Możesz wybrać spośród następujących sosów: {sauce}.",
"Oferujemy następujące sosy: {sauce}."
],
"inform/phone": [
"Twój numer telefonu to: {phone}.",
"Podany numer telefonu: {phone}.",
"Numer telefonu, który podałeś, to: {phone}.",
"Twoje dane kontaktowe: {phone}.",
"Telefon kontaktowy: {phone}."
],
"inform/order-complete": [
"Twoje zamówienie zostało zrealizowane. Dziękujemy!",
"Zamówienie zakończone. Dziękujemy za zakupy!",
"Zamówienie zrealizowane. Czekaj na dostawę!",
"Twoje zamówienie jest gotowe. Dziękujemy!",
"Realizacja zamówienia zakończona. Dziękujemy!"
],
"inform/delivery": [
"Twoje zamówienie zostanie dostarczone na {address}.",
"Dostarczymy zamówienie na adres: {address}.",
"Dostawa na adres: {address}.",
"Twoje zamówienie jedzie na {address}.",
"Adres dostawy: {address}."
],
"inform/address": [
"Twoje zamówienie zostanie dostarczone na adres: {address}.",
"Dostawa będzie na adres: {address}.",
"Adres dostawy: {address}."
],
"inform/payment": [
"Metoda płatności to: {payment-method}.",
"Płatność realizujesz przez: {payment-method}.",
"Wybrałeś metodę płatności: {payment-method}.",
"Płatność: {payment-method}.",
"Możesz zapłacić kartą, gotówką lub blikiem"
],
"affirm": [
"Świetnie! Napisz co Ci chodzi po głowie.",
"Dobrze! Co dalej?",
"OK! Co chciałbyś zamówić?",
"Super! Co dalej?",
"Dobrze! Jakie dalsze zamówienia?"
],
"request/delivery-price": [
"Koszt dostawy wynosi {delivery-price} zł.",
"Cena dostawy to {delivery-price} zł.",
"Za dostawę zapłacisz {delivery-price} zł.",
"Dostawa kosztuje {delivery-price} zł.",
"Koszt dostawy: {delivery-price} zł."
],
"request/menu": [
"Oto nasze menu: {menu}.",
"Nasze menu obejmuje: {menu}.",
"Proszę, oto lista dostępnych dań: {menu}.",
"Dostępne dania to: {menu}.",
"W naszym menu znajdziesz: {menu}."
],
"inform/time": [
"Aktualny czas to {time}.",
"Jest teraz {time}.",
"Czas: {time}.",
"Godzina: {time}.",
"Obecny czas: {time}."
],
"request/drinks": [
"Jakie napoje chciałbyś zamówić?",
"Proszę wybrać napoje do zamówienia.",
"Jakie napoje dołączamy do zamówienia?",
"Co chciałbyś pić?",
"Proszę podać napoje do zamówienia."
],
"welcomemsg": [
"Witaj w naszej wspaniałej pizzerii. W czym mogę pomóc?",
"Halo, halo, tu najlepsza pizza w mieście. Masz głoda?",
"Dzieńdoberek, gdyby wszyscy jedli nasze pizze, na świecie nie byłoby wojen. Jaką pizzę sobie dziś gruchniesz?",
],
"request/menu": [
"W naszym menu znajdują się pizze, spaghetti, gnocci oraz aranchini. Polecam potrawkę śląską po grecku.",
"Smażymy, gotujemy, prażymy, ale najlepiej nam wychodzi pizza. Na co masz ochotę?",
],
"request/drink": [
"Oferujemy napoje zimne, ciepłe i letnie. Cola, fanta, woda mineralna, kawa, herbata lub frappe.",
"Może z alkoholem? Mamy świeżo warzone piwo",
],
"request/price": [ "request/price": [
"Cena za {food} wynosi {price} zł.", "Cena za {food} wynosi {price} zł.",
"Koszt {food} to {price} zł.", "Koszt {food} to {price} zł.",
@ -41,19 +140,10 @@ templates = {
"Które sosy mają być do {food}?", "Które sosy mają być do {food}?",
"Wybierz sosy do {food}." "Wybierz sosy do {food}."
], ],
"inform/phone": [ "request/food": [
"Twój numer telefonu to: {phone}.", "Co chciałbyś zamówić?",
"Podany numer telefonu: {phone}.", "Proszę podać na jaką pizzę masz ochotę",
"Numer telefonu, który podałeś, to: {phone}.", "Którą pizzę wybrałeś?"
"Twoje dane kontaktowe: {phone}.",
"Telefon kontaktowy: {phone}."
],
"inform/order-complete": [
"Twoje zamówienie zostało zrealizowane. Dziękujemy!",
"Zamówienie zakończone. Dziękujemy za zakupy!",
"Zamówienie zrealizowane. Czekaj na dostawę!",
"Twoje zamówienie jest gotowe. Dziękujemy!",
"Realizacja zamówienia zakończona. Dziękujemy!"
], ],
"request/time": [ "request/time": [
"Oczekiwany czas dostawy to {time} minut.", "Oczekiwany czas dostawy to {time} minut.",
@ -69,73 +159,6 @@ templates = {
"Proszę wybrać rozmiar {pizza}: {sizes}.", "Proszę wybrać rozmiar {pizza}: {sizes}.",
"Mamy następujące rozmiary {pizza}: {sizes}." "Mamy następujące rozmiary {pizza}: {sizes}."
], ],
"affirm": [
"Świetnie! Napisz co Ci chodzi po głowie.",
"Dobrze! Co dalej?",
"OK! Co chciałbyś zamówić?",
"Super! Co dalej?",
"Dobrze! Jakie dalsze zamówienia?"
],
"inform/delivery": [
"Twoje zamówienie zostanie dostarczone na {address}.",
"Dostarczymy zamówienie na adres: {address}.",
"Dostawa na adres: {address}.",
"Twoje zamówienie jedzie na {address}.",
"Adres dostawy: {address}."
],
"inform/address": [
"Twoje zamówienie zostanie dostarczone na adres: {address}.",
"Dostawa będzie na adres: {address}.",
"Adres dostawy: {address}."
],
"inform/payment": [
"Metoda płatności to: {payment-method}.",
"Płatność realizujesz przez: {payment-method}.",
"Wybrałeś metodę płatności: {payment-method}.",
"Płatność: {payment-method}.",
"Możesz zapłacić kartą, gotówką lub blikiem"
],
"request/delivery-price": [
"Koszt dostawy wynosi {delivery-price} zł.",
"Cena dostawy to {delivery-price} zł.",
"Za dostawę zapłacisz {delivery-price} zł.",
"Dostawa kosztuje {delivery-price} zł.",
"Koszt dostawy: {delivery-price} zł."
],
"inform/time": [
"Aktualny czas to {time}.",
"Jest teraz {time}.",
"Czas: {time}.",
"Godzina: {time}.",
"Obecny czas: {time}."
],
"request/drinks": [
"Jakie napoje chciałbyś zamówić?",
"Proszę wybrać napoje do zamówienia.",
"Jakie napoje dołączamy do zamówienia?",
"Co chciałbyś pić?",
"Proszę podać napoje do zamówienia."
],
"inform/name": [
"Twoje imię to {name}.",
"Podane imię: {name}.",
"Twoje imię: {name}.",
"Masz na imię {name}.",
"Imię: {name}."
],
"welcomemsg": [
"Witaj w naszej wspaniałej pizzerii. W czym mogę pomóc?",
"Halo, halo, tu najlepsza pizza w mieście. Masz głoda?",
"Dzieńdoberek, gdyby wszyscy jedli nasze pizze, na świecie nie byłoby wojen. Jaką pizzę sobie dziś gruchniesz?",
],
"request/menu": [
"W naszym menu znajdują się pizze, spaghetti, gnocci oraz aranchini. Polecam potrawkę śląską po grecku.",
"Smażymy, gotujemy, prażymy, ale najlepiej nam wychodzi pizza. Na co masz ochotę?",
],
"request/drink": [
"Oferujemy napoje zimne, ciepłe i letnie. Cola, fanta, woda mineralna, kawa, herbata lub frappe.",
"Może z alkoholem? Mamy świeżo warzone piwo",
],
"bye": [ "bye": [
"Dziękujemy i do zobaczenia wkrótce.", "Dziękujemy i do zobaczenia wkrótce.",
"Polecamy się na przyszłość. Do zobaczenia!", "Polecamy się na przyszłość. Do zobaczenia!",