Vyplňování formuláře
Chatbot často potřebuje provést uživatele sérií kroků – třeba při zadávání objednávky.
V tomto cvičení začneš stavět bota, který umožní uživatelům objednat kávu. Na výběr jsou dva druhy: kolumbijská a keňská. Pokud uživatel zadá neočekávaný vstup, bot se zachová různě podle toho, v jaké fázi konverzace se právě nachází.
Tvým úkolem je určit správný stav a následující stav na základě záměrů a odpovědí. Například pokud je záměr "order", stav se změní z INIT na CHOOSE_COFFEE.
Funkce send_message(policy, state, message) je už předem definovaná.
Přijímá jako argumenty policy, aktuální stav a zprávu a vrací nový stav. Stejně tak je předem definovaná funkce interpret(message), podobná té, kterou Alan popsal ve videu.
Toto cvičení je součástí kurzu
Building Chatbots in Python
Pokyny k cvičení
- Definuj tři stavy:
INITs hodnotou0,CHOOSE_COFFEEs hodnotou1aORDEREDs hodnotou2. - Vytvoř slovník
policy, jehož klíče i hodnoty jsou n-tice. Každý klíč je n-tice obsahující stav a záměr, každá hodnota je n-tice obsahující následující stav a text odpovědi. Texty odpovědí jsou už vyplněné – ty doplň pouze stavy. - Inicializuj proměnnou
statehodnotouINIT. - Pro každou ze zpráv zavolej funkci
send_message()s argumentypolicy,stateamessage.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Define the INIT state
____
# Define the CHOOSE_COFFEE state
____
# Define the ORDERED state
____
# Define the policy rules
policy = {
(____, "order"): (____, "ok, Colombian or Kenyan?"),
(INIT, "none"): (INIT, "I'm sorry - I'm not sure how to help you"),
(____, "specify_coffee"): (____, "perfect, the beans are on their way!"),
(____, "none"): (____, "I'm sorry - would you like Colombian or Kenyan?"),
}
# Create the list of messages
messages = [
"I'd like to become a professional dancer",
"well then I'd like to order some coffee",
"my favourite animal is a zebra",
"kenyan"
]
# Call send_message() for each message
state = ____
for message in messages:
state = ____