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 します。
Sign in したら、Create new service
をクリックして新しいサービスを作成します。
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分かからず作成できます。
解析が終わると、画面中央の KNOWLEDGE BASE で解析された質問と回答のペアが確認・編集できます。画面右上( Publish
ボタンの下)にある Add new QnA pair
をクリックすると、新規に手入力で質問と回答を入力できます。
右側の Settings をクリックしてみましょう。遷移した画面で、このサービスの設定を編集できます。FAQのURLやファイルの追加もできます。
FAQの情報を追加・編集した場合は、画面上部の Save and retrain
をクリックして、変更した情報を反映させる必要があります。
テストと学習
画面左側の Test をクリックすると、Web Chat のUIが表示されます。メッセージを入力して回答が正しく認識されるかを確認することができます。
- メッセージを入力して正しい回答ができた場合、同じ回答となる類似の質問を画面の右側
Add alternateive here
に入力させて学習させることができます。 - メッセージを入力して間違った回答の補正を画面の左側で正しい回答に紐づけることができます。
修正をしたら、(たぶん毎回)画面上の方にある Save and retrain
をクリックして学習させる必要があります♪。
それでもうまくいかない場合は、FAQペアを手入力したりして精度向上を試みましょう。
パブリッシュ!
画面右上の Publish
をクリックすると、下図の Publish 画面に遷移します。
Publish
をクリックし、成功すると、RESTでアクセスする際の情報が表示されます。この情報は、サービスの一覧( My Services
をクリックすして表示される画面)で対象サービスの View Code
をクリックして確認もできます。
上図で、赤線をひいた部分の..
- 上の方が、後ほど Bot Service 側で設定する QnAKnowledgebaseId の値となります。
- 下の方が、後ほど Bot Service 側で設定する認証情報 QnASubscriptionKey の値となります(ぼかしてるところ)。
2. QnA Maker に REST でアクセス
POSTMAN で接続確認
REST API を便利に叩ける POSTMAN でアクセスしてみましょう。
POSTMANを起動し、メソッドを POST
、URLは、先ほどの情報の Host + 一番上の相対パス を入力します。今回だと
https://westus.api.cognitive.microsoft.com/qnamaker/v2.0/knowledgebases/c1564b69-198d-4838-8a08-5f8635abaa03/generateAnswer
となります。
Headers に認証情報と Content-Typeを入力しましょう。
Bodyは、Row で Json を指定する感じで...以下のように入力します。Jsonのキーが "question" で値が質問したい文章です。今回は「YO」と入力しました。 そうすると、正常にレスポンスが返ってくることが確認できました。レスポンスの中でスコアも確認できますね。
よし、次はQnAメーカーとの連携...なんか長くなったので次回に!