BEACHSIDE BLOG

MicrosoftとかC#を好むレンジャーの個人的メモ

QnA Maker と Azure Bot Service を連携(して QnA Makerの閾値を変更)その1

QnA Maker の作成と Bot Service との連携、Bot回答時の閾値の変更についての手順メモです。
登壇資料を作ってる際、話す時間が全然足りないことに気づき、話しきれないのでブログに...。

Overview

1. QnA Maker の作成(今回)
2. QnA Maker に REST でアクセス(今回)
3. Bot Service の作成(次回)
4. QnA の回答の閾値の変更(次回)

1. QnA Maker の作成

QnA Maker(https://qnamaker.ai/) にアクセスします。Sign in してない場合は、Microsoft Account で Sign in します。

f:id:beachside:20180122230133p:plain


Sign in したら、Create new service をクリックして新しいサービスを作成します。

f:id:beachside:20180122230146p:plain


Creating a QnA service という画面に遷移します。必要な項目を入力しましょう。

項目 内容
SERVICE NAME QnAのサイトで表示される名称です。わかりやすい名称を入れておけばよいです。
URL(S) QnAを作りたい内容のFAQサイトがある場合は、URLを入力します。複数登録可能です。
FILES サイトではなく、ファイルをアップロードしたい場合は、ここでファイルを登録しましょう。原文にファイルの容量制限や拡張子制限が書かれていますね。

URLSやFILESで入力後、どのような質問と回答のペアになったかは、後述の手順で確認・修正・追加できます。

今回は、当たり障りないサンプルということで、URL(S)Azure の FAQ サイト(https://azure.microsoft.com/ja-jp/support/faq/) と、適当に作ったtsvのファイルを入力しました。

情報を入力したら、画面下部にある Create をクリックしましょう。解析が始まります。今回くらいのものであれば、1分かからず作成できます。

f:id:beachside:20180122230159p:plain


解析が終わると、画面中央の KNOWLEDGE BASE で解析された質問と回答のペアが確認・編集できます。画面右上( Publish ボタンの下)にある Add new QnA pair をクリックすると、新規に手入力で質問と回答を入力できます。

f:id:beachside:20180122230209p:plain


右側の Settings をクリックしてみましょう。遷移した画面で、このサービスの設定を編集できます。FAQのURLやファイルの追加もできます。

f:id:beachside:20180122230228p:plain


FAQの情報を追加・編集した場合は、画面上部の Save and retrain をクリックして、変更した情報を反映させる必要があります。

f:id:beachside:20180122230313p:plain


テストと学習

画面左側の Test をクリックすると、Web Chat のUIが表示されます。メッセージを入力して回答が正しく認識されるかを確認することができます。

f:id:beachside:20180122230323p:plain


  • メッセージを入力して正しい回答ができた場合、同じ回答となる類似の質問を画面の右側 Add alternateive here に入力させて学習させることができます。
  • メッセージを入力して間違った回答の補正を画面の左側で正しい回答に紐づけることができます。

修正をしたら、(たぶん毎回)画面上の方にある Save and retrain をクリックして学習させる必要があります♪。

それでもうまくいかない場合は、FAQペアを手入力したりして精度向上を試みましょう。

パブリッシュ!

画面右上の Publish をクリックすると、下図の Publish 画面に遷移します。

f:id:beachside:20180122230335p:plain


Publish をクリックし、成功すると、RESTでアクセスする際の情報が表示されます。この情報は、サービスの一覧( My Services をクリックすして表示される画面)で対象サービスの View Code をクリックして確認もできます。

f:id:beachside:20180122230345p:plain


上図で、赤線をひいた部分の..

  • 上の方が、後ほど Bot Service 側で設定する QnAKnowledgebaseId の値となります。
  • 下の方が、後ほど Bot Service 側で設定する認証情報 QnASubscriptionKey の値となります(ぼかしてるところ)。


2. QnA Maker に REST でアクセス

POSTMAN で接続確認

REST API を便利に叩ける POSTMAN でアクセスしてみましょう。

www.getpostman.com

POSTMANを起動し、メソッドを POST 、URLは、先ほどの情報の Host + 一番上の相対パス を入力します。今回だと

https://westus.api.cognitive.microsoft.com/qnamaker/v2.0/knowledgebases/c1564b69-198d-4838-8a08-5f8635abaa03/generateAnswer

となります。

Headers に認証情報と Content-Typeを入力しましょう。

f:id:beachside:20180122230459p:plain


Bodyは、Row で Json を指定する感じで...以下のように入力します。Jsonのキーが "question" で値が質問したい文章です。今回は「YO」と入力しました。 そうすると、正常にレスポンスが返ってくることが確認できました。レスポンスの中でスコアも確認できますね。

f:id:beachside:20180122230509p:plain


よし、次はQnAメーカーとの連携...なんか長くなったので次回に!

beachside.hatenablog.com