a2 Tech blog

試したこと・調べたこと・感じたことを発信するITエンジニアの日記です。仕事とは直接関係ないけど興味あることを模索していきます。

30分でFAQボットを作る(Microsoft Bot Service × QnA Maker)

ここ最近、私の中で"チャットボット"がホットなテーマになってます。日本人ってチャット好きですよね。たぶん。

きっかけは1冊の本です。

チャットボット AIとロボットの進化が変革する未来

チャットボット AIとロボットの進化が変革する未来

お盆休みはだらだらと過ごしてしまったので、何か1つぐらいはブログ更新しないとなぁと思いつつ見切り発車で書いていきます。

というわけで30分でチャットボット

Azureが好きなので、Microsoft Bot ServiceQnA MakerでノンプログラミングでFAQチャットボットを作ってみます。ノンプログラミングです。お盆休みにあんまり頭を使わずにできる最大限の成果物。ブログ書きながら作っていこうと思います。なので最終的にうまくいくかどうかはわかりません。30分で終わるかどうかもわかりません。でもやってみます。

それでは始めていきます。

Microsoft Bot Serviceの作成から…

Azure Portalから、新規でBot Serviceを作成します。まだPreviewですね。新規作成は特に難しくなく作成、必要事項の入力とサクサクっと進めていきましょう。

f:id:ninna2:20170815200506p:plain

f:id:ninna2:20170815200735p:plain

新規作成すると、Azure App ServiceにBot Serviceがデプロイ開始されます。デプロイ時間はあっという間。トイレに行く暇もないぐらいすぐにデプロイ完了します。出来上がったApp Serviceを開くと、初期設定できます。まずは、アプリケーションIDの生成(Create Microsoft App ID and password)を行う必要があるので、アプリケーションIDとパスワードを生成します。パスワードは1回しか表示されないので、メモしておきます。

f:id:ninna2:20170815201542p:plain

f:id:ninna2:20170815201831p:plain

QnA Maker使うので、Question and Answerを選びます。

f:id:ninna2:20170815202243p:plain

これでCreateすればオッケーです。途中の入力項目は説明する必要もないと思うので説明はかなり省略してます。CreateするとQnA Makerのダイアログが出るので、"Sign in"して"I agree"して"OK"します。

f:id:ninna2:20170815202544p:plain

f:id:ninna2:20170815202722p:plain

これで、Bot Serviceの初期設定とQnA Makerの生成の両方ができます。少し時間がかかるので、グルグルしている間にトイレ行けます。戻ってきたら終わっているはずです。

f:id:ninna2:20170815203015p:plain

さて、これでBot Serviceは完成です。ソースコードがちらりと見えていますね。これは、Azure Functionsなので、ここから編集もすることができます。今回はノンプログラミングなので、ソースコードには見向きもしませんが。中身はすごくシンプルで、ただただ、QnA MakerのDialogを生成して呼んでいるだけのようです。ノンプログラミングなのでソースコード見なくてもいいですよ。

f:id:ninna2:20170815203422p:plain

QnA Makerを…

Bot Serviceからは一旦離れます。今の状態だと、"hi"と質問すると"hello"と返すという何とも残念なFAQボットちゃんなので、もう少し賢くしていきます。QnA Makerのページにアクセスして設定していきます。

QnA Maker

FAQの元ネタとなる情報をインプットしていく必要があるので、何かネタを…

最近、キングコング西野さんのことが気になっているので、彼が宣伝しているパインアメについてのFAQにしましょう。私にはステマソングを作る歌唱力もないので、その代わりにパインアメボットを作ってみるということで。ネタが決まったので、さっそくパインアメのサイトからFAQの情報を探します。下記にありました。ただ、少ない…もっと情報たくさんあった方が面白いけど、30分という時間では無理なので、このFAQを題材にすることにします。

よくある質問 - パイン株式会社

f:id:ninna2:20170815204653p:plain

この情報を、QnA Makerに読み込ませていく設定をしていきます。"Setting"のURLsにパインアメのサイトURLを入力します。そして、"Save and Retrain"します。パインアメの問い合わせ情報を学習してもらうわけです。これで少しパインアメについて賢くなったわけです。

f:id:ninna2:20170815203755p:plain

さて賢くなったかどうかテストしてみます。"Test"を開くと、チャット形式の画面になるので、そこから問い合わせ情報にあった内容を入れてみます。このとき、完全に一致する文章じゃなくてもある程度反応してくれます。よしよし、パインアメFAQボットの脳みそ部分ができてきました。

f:id:ninna2:20170815211604p:plain

テストがオッケーなら、Publishします。

Bot ServiceとQnA Makerの融合…

さて、QnA Makerで脳みそ部分ができたので、Bot Serviceと融合させて、パインアメにしていきましょう。あ、勝手に命名しました。ダサいってのはわかっていますが、名前を考える時間ないんので。

融合といっても、何もしなくてもBot ServiceとQnA Makerはつながってます。なので、もう完成なのです。さて、パインアメ子にアクセスしてみます。デフォルトでは、SkypeがChannel設定されているので、Skypeで会話してみます。

f:id:ninna2:20170815211817p:plain

ChannelsからSkypeを選択して、パインアメ子にコンタクトします。

f:id:ninna2:20170815210620p:plain

Skypeから適当に問い合わせをしてみると、ちゃんと答えてくれます。表示名がパインアメ子になってほしかったのに、適当に付けたIDになっているのが少し残念。なぜだ。

f:id:ninna2:20170815210633p:plain

というわけで、少しネタっぽくなってしまいましたが、Azure Bot Serviceを使うことで、簡単にFAQボットが作成できる基盤が構築できることがわかりました。簡単なものであれば、サクッとノンプログラミングでできてしまいますが、おそらくそれだけで対応できることなんて少ないと思うので、これを基本にプログラム追加して賢いFAQボットを作成していくのがよいかと思います。

もちろんもっと複雑なものは、Bot Frameworkでちゃんと作りこんでいくのも手としてありますので、私の書いた過去記事も参照してみてください。

ninna2.hatenablog.com