LoginSignup
3
3

More than 5 years have passed since last update.

Microsoft Azureでチャットボットを作るときに調べたこと7つ

Last updated at Posted at 2019-03-24

概要

やりたいこと

私が就職活動をしていたころ、人事担当の方に電話で質問をしたり、面接試験のときに本当に聞きたいことを聞いたりするのはとても勇気のいることでした。結局、本当に聞きたいことは聞かずじまいで内定をもらい入社式を迎えた記憶があります。
業務内容が考えていたものと違うとか、給与が安いとか、プログラミングが嫌いとか、ネガティブな意見で会社を辞めていってしまう人もいて、それは会社にとっても社員にとってもお互いに良くないことだと思いました。せめてこれから就職活動を行う学生さんには、質問や不明な点を気軽に質問を行えるようにして、就職の不安を少しでも解消してもらえればいいなと思いチャットボットを作成することにしました。
image.png

サービス構成

Microsoft AzureにQnA Makerというものがあります。本来はホームページなどのQ&Aのサイトを読み込ませておき、任意の質問に対してその回答をできるというものです。それとチャットツールであるLINEとを組み合わせることにより、就職活動を行う学生が気軽に利用できるようにしました。
利用するサービス、および最低構成で設定した場合では100request/日で69円/月ほどであることがわかりました。
image.png

①作り方

https://qiita.com/howmori/items/138b085d4166960262f3
https://qiita.com/howmori/items/f0bfb9fba093ae83eda0
この2つのQiita記事を参考にしました。
とても丁寧に書かれており、すぐに期待するサービス構成のチャットボットを作成することができました。

②サービスの金額設定

  • Configure Services
  • Search services
  • App Service
  • Application Insights

4つのサービスの金額とできることをまとめています。
これらはMicrosoft Azureのポータルから確認できます。
Application Insightsだけは確認できませんでしたので、サイトの情報を確認しています。

Configure Services

image.png

Search services

image.png

App Service

image.png

Application Insights

image.png

③App serviceは作成するときはFreeを選べず、作成後にFreeに変更が必要

「The App service plan currently defaults to standard(S1) tier. It can be modified by visiting the app service plan resource page once the resource has been created.」

QnA Makerを作成するときにきちんと書いているにもかかわらず、英語なので読み飛ばしてしまいがちです。
その結果、このように請求されるまで気づかずに10,000円/月以上になることも・・・。
image.png

④ヒットしないメッセージを日本語に変える

検索にヒットしないような質問をしたときには定型文No good match found in KBが返却されます。
これでは日本で利用するシステムとしては不適当(英語圏でも不適当なメッセージ)ですので、適切なメッセージに変更します。
image.png

ドキュメントのページを確認して、DefaultAnswerを設定しました。
image.png

そうすると、指定したメッセージを返答するようになります。
image.png

⑤信頼度スコアに一定の閾値を設ける

ドキュメントのページにあるように検索結果には信頼度スコアが設定されています。
初期状態のQnA Makerではどれだけ信頼度スコアが低くても最大のスコアを取るものを返しており、上記ページに見られるような50以上を閾値として設定するような項目は見られませんでした。もし設定項目がありましたら教えてください。:bow_tone3:

そこで、Logic Apps側で返却された信頼度スコアが50より大きい場合は検索結果のメッセージを返し、以下の場合は定型文を返すようにします。
image.png
この「条件」の比較では数値の比較ができずに文字列の比較となってしまうため、scoreの値と50のminを取ってそれが50と等しいかどうかで判定するようにしました。
True(scoreの方が小さい)の場合は変数Messageはそのまま変えません。False(scoreの方が大きい)の場合は変数Messageにanswerの値を設定するようにします。
条件で使っているのはmin(body('HTTP')['answers'][0]['score'],50)で、
変数設定で使っているのはbody('HTTP')['answers'][0]['answer']です。

変数Messageは最初の方で初期化してあります。
image.png

また、LINEに返却するときに変数Messageの値を返すように修正してあります。
image.png

これで、信頼度スコアの閾値を50に設定することができました。

⑥ログ確認

Application Insightsのログ確認方法はドキュメントのページに説明があります。これで、どの質問に対してどの回答をしたのかがわかりますので、Q&Aを精査することができます。

⑦サービスごとの金額設定の確認方法

  • Configure Services
  • Search services
  • App Service
  • Application Insights

最後にサービスごとの金額設定の確認方法をまとめます。作成した後は、一通り確認しなおすことをおススメします。

Configure Services

Configure ServicesはPricing tierから確認・変更ができます。
image.png

Search services

Search servicesはOverviewから確認のみできます。
image.png

App Service

App Serviceはスケールアップから確認・変更ができます。作成時はS1になっているので気をつけてください。
image.png

Application Insights

Application Insightsは使用とコストの見積もりから確認のみできます。
image.png

おわりに

できるだけお金をかけないように設定・確認を行いながら作業をしました。
実際に運用するときにはサービスごとにどの設定にするのか、それによりいくらかかるのかに悩むことになりそうです。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3