概要
本記事では、Azure Cognitive Services QnA MakerおよびAzure Bot Serviceを用いて、チャットボットを作成する手順を説明します。
目次
-
QnA MakerおよびBot Serviceの概要
-
QnA Makerを作成してナレッジベースを準備する
-
Bot Serviceを作成する
-
WebサイトからBot Serviceを利用する
-
ナレッジベースを更新する
-
まとめ
1. QnA MakerおよびBot Serviceの概要
1.1 QnA Makerとは?
QnA Makerは、Azure Cognitive Servicesが提供する自然言語処理サービスで、任意の質問に対してナレッジベースとよばれる質問と回答がペアになったデータセットから最も適切な回答を探し出す機能を持つサービスです。
QnA Makerの概要
https://docs.microsoft.com/ja-jp/azure/cognitive-services/qnamaker/overview/overview
価格
https://azure.microsoft.com/ja-jp/pricing/details/cognitive-services/qna-maker/
1.2 Bot Serviceとは?
ボットをホストして管理するサービスです。Bot Serviceでボットをホストすることで、Webサイトの他、TeamsやLINE、Slackなどいろいろなチャンネルでボットを利用することができるようになります。
Bot Serviceの概要
https://azure.microsoft.com/ja-jp/services/bot-services/
価格
https://azure.microsoft.com/ja-jp/pricing/details/bot-services/
1.3 チャットボットの作成手順
最初にQnA Makerリソースを作成し、ナレッジベースを構築します。構築したナレッジベースをもとにBot Serviceを作成し、作成したBot ServiceをWebサイトから利用します。
2. QnA Makerを作成してナレッジベースを準備する
QnA Makerリソースを作成して、ナレッジベースを構築します。
2.1 QnA Makerリソースを作成する
(1) Azure Portal(https://portal.azure.com)にアクセスし、[リソースの作成]を選択します。
(2) 検索窓に QnA Maker と入力してEnterキーを押し、[作成]をクリックします。
(3) QnA Makerと併せて必要となるAzure Search、App service、Application Insightsの設定値を入力して[確認と作成]をクリックします。本記事を再現するためにはQnA Makerの価格レベルをStandard S0にする必要があります。
確認および作成の画面で[作成]をクリックします。
(4) 指定したリソースグループに5つのリソースが作成されていることを確認します。
2.2 ナレッジベースを作成する
(1) QnA Maker Portal(https://portal.azure.com)にアクセスして、[Sign In]をクリックします。
[Create a knowledge base]をクリックします。
(2) 作成するナレッジベースの設定をおこない、最後に[Create your KB]をクリックします。
(3) ナレッジベースの作成が完了したら、[EDIT]をクリックして質問と回答のリストを確認します。
(4) [Test]をクリックして作成したナレッジベースのテストをおこないます。テストが終わったら再度[Test]をクリックして閉じます。
(5) ナレッジベースを公開します。
以下の画面が表示されたら公開完了です。
2.3 解説
(1) QnA Makerを作成すると、データとランタイム(コンピューティング)をホストすることになります。これらを利用するためにAzure Cognitive SearchとAzure App Serviceをそれぞれ作成する必要があります。オプションとしてチャットログの保存のためにApplication Insightsを作成することができます。
(2) ナレッジベースの作成では、フレンドリーなChitChat(おしゃべり)データセットを追加しています。これによって雑多な質問に対するフレンドリーな回答を準備することができます。
(3) 公開したナレッジベースに対してHTTPリクエストをおこなうことで質問に対する回答を受け取ることができるようになりますが、本記事ではアプリケーションから直接ナレッジベースにリクエストするのではなく、Bot Serviceを作成してBot Service経由でナレッジベースに問い合わせます。次の手順ではBot Serviceを作成します。
3. Bot Serviceを作成する
2で構築したナレッジベースをもとにBot Serviceを作成します。
3.1 Bot Serviceを作成する
(1) ナレッジベースの公開完了画面で[Create Bot]をクリックします。
(2) Bot Serviceの設定をおこない、[作成]をクリックします。
(3) 指定したリソースグループに3つのリソースが作成されていることを確認します。
(4) Webアプリボットにアクセスしてチャンネルを選択し、[Edit]をクリックします。
(5) 表示されるSecret keyとEmbed codeをメモしておきます。
3.2 解説
(1) Bot Serviceを作成する際には、サービスを稼働させるためのAzure App Serviceを指定する必要があります。オプションとしてログの保存のためにApplication Insightsを作成することができます。
(2) Embed codeをHTMLに埋め込むことでボットを利用することができます。Bot Serviceを作成することによって、Webサイトだけでなく、TeamsやLINE、Slackなどいろいろなチャンネルでボットを利用することが可能になります。
(3) Bot ServiceでホストされているボットはBot Framework SDKを用いて開発されています。実際に稼働しているコードをWebアプリボットの[概要]ページからダウンロードすることができます。
Bot Framework SDK
https://docs.microsoft.com/ja-jp/azure/bot-service/index-bf-sdk?view=azure-bot-service-4.0
4. WebサイトからBot Serviceを利用する
4.1 Embed codeをHTMLに埋め込む
(1) Index.htmlファイルを作成します。3.1 (5)でメモしたSecret keyおよびEmbed codeを記載します。
<html> <body> <h2>Sample Bot with QnA Maker</h2> <iframe src='https://webchat.botframework.com/embed/YOUR_BOTSERVICE_NAME?s=YOUR_SECRET_HERE' style='min-width: 400px; width: 100%; min-height: 500px;'></iframe> </body> </html> |
(2) Index.htmlをブラウザで開き、適当な質問を入力します。
4.2 解説
(1) Embed codeをHTMLに埋め込むだけでBot Serviceを利用することができます。ただし、運用環境においてはシークレットを直接記載するのではなく、トークンを利用するほうが望ましいようです。
運用環境への埋め込みオプション
5. ナレッジベースを更新する
FAQサイトを学習させてナレッジベースを更新します。本記事では以下のFAQサイトを利用します。
https://esg.teldevice.co.jp/iot/azure/csp/faq.html
5.1 ナレッジベースを更新する
(1) QnA Maker Portal(https://portal.azure.com)にアクセスして、対象のナレッジベースを選択します。
(2) [SETTINGS]ページにおいて学習させるFAQサイトのURLを入力します。
(3) 学習が完了したら、質問と回答のリストを確認します。
(4) ナレッジベースを公開します。
5.2 Webサイトから問い合わせてみる
(1) Index.htmlをブラウザで開き、適当な質問を入力します。
5.3 解説
QnA Makerでは、FAQサイトやPDFファイルなどをソースとして質問と回答のリストを作成することができます。ナレッジベースを更新するだけで、アプリケーション側を変更することなく、新しい回答を得ることができるようになります。
データソースについて
https://docs.microsoft.com/ja-jp/azure/cognitive-services/qnamaker/concepts/data-sources-and-content
6. まとめ
本記事では、Azure Cognitive Services QnA MakerおよびAzure Bot Serviceを用いて、チャットボットを作成する手順を説明しました。QnA Makerのナレッジベースに質問と回答のペアを蓄えて整理し、Bot Serviceを用いてユーザーにチャットボット機能を提供することができます。QnA Makerにはこの他にも複数ターンの会話をおこなう機能や、質問の履歴からナレッジベースの改善を提案するアクティブラーニング機能などもあります。またBot Serviceをカスタマイズすることで、ユーザーに一連の質問をおこなう機能を実装することもできます。問い合わせに対する回答だけでなく、お店や旅行の予約など様々な用途で活用できるサービスになっています。
~~連載記事一覧~~