始める無料で始める

すべてを組み合わせる II

chitchat_response(message) 関数を定義したら、次は send_message() 関数を定義しましょう。この関数はまず chitchat_response(message) を呼び出し、一致するメッセージがない場合にのみコーヒーボットのポリシーを使用します。

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

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

コースを見る

演習の手順

  • statependingmessage の3つの引数を受け取る send_message() 関数を定義します。
  • chitchat_response(message) を呼び出し、結果を response に格納します。レスポンスがある場合はそれを出力し、stateNone を返します。
  • stateinterpret(message) からなるタプルをキーとして渡し、policy_rules 辞書の内容を new_stateresponsepending_state の各変数にアンパックします。
  • pendingNone でない場合は、pendingpolicy_rules のキーとして使い、新しい状態とレスポンスを取り出します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Define send_message()
def ____:
    print("USER : {}".format(message))
    response = ____
    if response is not None:
        print("BOT : {}".format(response))
        return state, None
    
    # Calculate the new_state, response, and pending_state
    ____, ____, ____ = ____[(____, ____)]
    print("BOT : {}".format(response))
    if pending is not None:
        new_state, response, pending_state = ____
        print("BOT : {}".format(response))        
    if pending_state is not None:
        pending = (pending_state, interpret(message))
    return new_state, pending

# Define send_messages()
def send_messages(messages):
    state = INIT
    pending = None
    for msg in messages:
        state, pending = send_message(state, pending, msg)

# Send the messages
send_messages([
    "I'd like to order some coffee",
    "555-12345",
    "do you remember when I ordered 1000 kilos by accident?",
    "kenyan"
])  
コードを編集して実行