フォーム入力
ボットがユーザーを一連のステップに沿って案内したい場面は多くあります。注文処理などがその典型的な例です。
この演習では、コーヒーを注文できるボットを構築していきましょう。ユーザーはコロンビアとケニアの2種類から選ぶことができます。ユーザーが予期しない入力をした場合、ボットはフロー内の位置に応じて異なる対応をします。
ここでのあなたの役割は、提供された意図と応答メッセージをもとに、適切な状態と次の状態を特定することです。たとえば、意図が "order" であれば、状態は INIT から CHOOSE_COFFEE に変わります。
send_message(policy, state, message) 関数はすでに定義されています。この関数は、ポリシー、現在の状態、メッセージを引数として受け取り、新しい状態を返します。また、動画でAlanが説明したものと同様の interpret(message) 関数も事前に定義されています。
この演習はコースの一部です
Python でチャットボットを作る
演習の手順
- 3つの状態を定義します。
INIT(値0)、CHOOSE_COFFEE(値1)、ORDERED(値2)です。 - タプルをキーと値に持つ
policyという辞書を作成します。各キーは状態と意図のタプル、各値は次の状態と応答メッセージのタプルです。メッセージはすでに入力されています。状態の部分を入力してください。 - 変数
stateをINITで初期化します。 - 各メッセージに対して、
policy、state、messageを引数としてsend_message()関数を呼び出します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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 = ____