Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Definuj tři stavy: INIT s hodnotou 0, CHOOSE_COFFEE s hodnotou 1 a ORDERED s hodnotou 2.
  • 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 state hodnotou INIT.
  • Pro každou ze zpráv zavolej funkci send_message() s argumenty policy, state a message.

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 = ____
Upravit a spustit kód