はじめに
QnA Maker や LUIS などが Language Studio に統合されるということで、質問対応のチャットボットを Azure でささっと作る場合は今後 Language Studio の Custom question answering を使っていくことになりそうです。
そこで触ってみたのですが、Azure Bot Service を使うとコードを一切書くことなく(ノーコード・ローコード的にロジックやステップ・フローを組んだりすることもなく)いろんなプラットフォームにチャットボットとして公開することができ、手順含めとても簡単だったので、まとめておこうと思います。
Language Studio でのナレッジベース作成
Language Studio へのサインイン
まずは Language Studio に有効な Azure サブスクリプションで使えるアカウントでサインインします。
https://language.cognitive.azure.com/
Language リソースの作成
はじめに Language のリソースを選べと言われるので、(ない場合は)はじめにそれを作ります。
最初にサインインしたときにカルーセルで使い方が表示されますが、それの最後のところからこのダイアログを表示させることができたかと思います(閉じてしまった場合は、再度サインインするとダイアログが出てきます)。
選択できるリソースがない場合は「Create a new language resource」から新規に作っていきます。クリックすると作成ダイアログが出てくるので、以下の内容を入力します。
- リソースグループ(既存のもの。新しく作りたい場合はあらかじめ Azure ポータル等で作っておく)を選択
- リソース名を入力
- リージョンを選択
- 価格を選択
- Managed Identity を ON
「Done」をクリックすると、Language のリソースが指定したリソースグループに作成されます。
Language リソースが選択できるようになるので、選択して「Done」をクリックすると、Language Studio の画面の上部で「Create new」が使えるようになります。
Azure Cognitive Search のリソースの作成
いま作りたいのはナレッジベースなので、Language Studio の画面の上部で「Create new」から「Custom question answering」を選びます。
すると画面遷移して、今度は Azure Cognitive Search のリソースを作れと言われます。必要なリソースを次々に指示してくれるので、迷わなくていいですね。
…もちろんいっぺんにつくれればもっと早い&わかりやすいですが、Language Studio はいろんな言語系の機能をまとめて管理できるものであって、機能ごとに必要リソースが異なるのでこのようになっているのだと思います。
「Connect to Azure search」をクリックしましょう。
別タブで Azure ポータルの Language リソースの「機能」メニューが開くので、チェックボックスを 2 つ ON にしつつ、「新規作成」をクリックします。
内容を入力して「確認および作成」をクリックします。検証 OK なら、続いて「作成」をクリックして作成できます。
さきほどの画面に戻ってくるので、作成した Cognitive Search を選択し、「適用」をクリックします。選択肢が反映されていないようならリロードすれば大丈夫です。
ナレッジベースの作成
Language Studio のタブに戻ってリロードすると、以下のような画面が表示されます。
表示されるステップに従って入力していきましょう。
名前、説明、回答が見つからなかったときの返答内容を記入します。名前に日本語は使えないので注意です。
内容を確認して問題なければ、「Create project」をクリックします。
ここからいよいよナレッジベースの作成です。
最初は「Manage sources」からナレッジベースのもととなるデータを追加していきます。
ナレッジベースは URL やファイルから作ることができますが、今回は 「Azure サポート プランに関する FAQ(https://azure.microsoft.com/ja-jp/support/faq/)」のページの URL を指定してみます。
指定した URL からナレッジベースになりうる情報を読み取って、質問と回答のペアを作ってくれるというわけです。FAQ ページなんかはそのまま使えるので、便利ですね。
「Add source」から「URLs」をクリックすると URL の追加画面が出てきます。
「Add url」を押して、ページの名前と URL を入力し「Add all」をクリックします。
追加が完了するとこのようになります。
中身を見てみるとこんな感じで、ページの内容を読み取って、質問と回答のペアを作ってくれています。
また、「Add source」からさらにナレッジベースの情報を追加することもできますが、今回は「Chitchat(おしゃべり)」を追加してみようと思います。
これはナレッジベースをチャットボット化した際、雑談のような会話をすることができるものです。
おしゃべりといっても、文脈を読んで気の利いたことを言ってくれるようなものではなく、こちらからの問いかけに1回反応してくれるだけのもので、ナレッジベース的には雑談的な質問とそれに対する回答が追加されるだけです。
ナレッジベースを作ったあとに中身を見てみると、このようになっています。
質問のバリエーションをかなり頑張っている印象ですが、答えのほうはすごくシンプルにひとまとめに答えている感じです。
回答の雰囲気はいくつか選べますが、ナレッジベース全体の回答の文章と雰囲気を合わせればよいです。今回は「Friendly」なおしゃべりを追加してみます。
なお、おしゃべりを使う場合は Language の価格レベルが Free だとサイズオーバーになってしまうので、Standard にする必要があります。
URL から生成された質問と回答、おしゃべりの内容を確認して、必要に応じて修正していきます。
「Test」では実際に質問を投げてみて、どんな回答が返ってくるか確認することもできます。
ここで想定通りの回答が返ってこなければ、別の回答を選んだり(Test の質問の吹き出しをクリックすると選択できます。新規の回答を追加することも可能)、質問のフレーズを追記して軌道修正したりしてあげます。
修正したら、「Save changes」で更新します。
実際に使い始めてからも、このあたりをどんどんチューニングして育ててあげることになります。
ある程度確認してうまく回答してくれるようになったら、メニューの「Deploy knowledge base」からデプロイします。
Azure Bot Service リソースの作成
デプロイできたらこの画面になるのですが、「Create a bot」ボタンからすぐにチャットボット(Azure Bot Service)を作ることができます。
別タブで Azure ポータルの画面が開くので、必要事項を入力していきます。
言語リソースキーは変更しないようにしてください。入力できたら「確認および作成」を押します。
ここで注意しなければいけないのが、App Service プランです。デフォルトで S1 の価格レベルなので、無料で動かしたい場合は作成後に直す必要があります。
なお、この操作では Azure AD のアプリの登録が裏で行われるはずで、もしサインインしているユーザーが AAD に関する権限を持っていないとエラーで止まります。その場合は AAD の設定で「アプリケーション管理者」ロールを割り当てるなどすれば OK です。
ボットプロファイルの設定
できあがった Bot Service のリソースを開いて、ボットプロファイルの設定からアイコン画像と名前を設定します。
Web チャットとして公開
つづいてチャンネル設定です。標準でさまざまなチャンネルが用意されていますが、まず今回は Web チャットで公開してみます。
Web チャットはデフォルトで有効化されています。「Web Chat」をクリックすると、シークレットキーと埋め込みコードが得られます。
埋め込みコード内にシークレットキーを入れて、任意の Web ページに埋め込んでみましょう。
すると、このようにちゃんと動いてくれます!
つづく
まったくコードも会話の設定もせず、チャットボットが作れてしまいました。これは便利です。
さて、次はせっかくなのでいろんなチャンネルのやり方も試してみようと思います。
個人的に Teams / LINE / Alexa あたりが気になるので、順番にやっていこうと思います!
つづき↓