始める無料で始める

フォーム入力

ボットがユーザーを一連のステップに沿って案内したい場面は多くあります。注文処理などがその典型的な例です。

この演習では、コーヒーを注文できるボットを構築していきましょう。ユーザーはコロンビアとケニアの2種類から選ぶことができます。ユーザーが予期しない入力をした場合、ボットはフロー内の位置に応じて異なる対応をします。

ここでのあなたの役割は、提供された意図と応答メッセージをもとに、適切な状態と次の状態を特定することです。たとえば、意図が "order" であれば、状態は INIT から CHOOSE_COFFEE に変わります。

send_message(policy, state, message) 関数はすでに定義されています。この関数は、ポリシー、現在の状態、メッセージを引数として受け取り、新しい状態を返します。また、動画でAlanが説明したものと同様の interpret(message) 関数も事前に定義されています。

この演習はコースの一部です

Python でチャットボットを作る

コースを見る

演習の手順

  • 3つの状態を定義します。INIT(値 0)、CHOOSE_COFFEE(値 1)、ORDERED(値 2)です。
  • タプルをキーと値に持つ policy という辞書を作成します。各キーは状態と意図のタプル、各値は次の状態と応答メッセージのタプルです。メッセージはすでに入力されています。状態の部分を入力してください。
  • 変数 stateINIT で初期化します。
  • 各メッセージに対して、policystatemessage を引数として 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 = ____
コードを編集して実行