すべてを組み合わせる II
chitchat_response(message) 関数を定義したら、次は send_message() 関数を定義しましょう。この関数はまず chitchat_response(message) を呼び出し、一致するメッセージがない場合にのみコーヒーボットのポリシーを使用します。
この演習はコースの一部です
Python でチャットボットを作る
演習の手順
state、pending、messageの3つの引数を受け取るsend_message()関数を定義します。chitchat_response(message)を呼び出し、結果をresponseに格納します。レスポンスがある場合はそれを出力し、stateとNoneを返します。stateとinterpret(message)からなるタプルをキーとして渡し、policy_rules辞書の内容をnew_state、response、pending_stateの各変数にアンパックします。pendingがNoneでない場合は、pendingをpolicy_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"
])