こんにちは、サイオステクノロジー技術部 武井です。私は、マイクロソフトが実施しているテクニカルカンファレンス「Ignite」に参加するためにフロリダのオーランドということろに来ております。Igniteが実施している期間中に、「ほぼ」リアルタイムレポートをお届けしたいと思います。今回は「Let’s build a knowledgeable chatbot with Microsoft Bot Framework, Azure Bot Services, and QnA Maker」について記載します。
このセッションは以下のような方向けです。
Azure Bot Service、QnA Maker、LUISを使ってチャットボットを作りたい!!
まず、セッションの内容の説明に入る前に、各サービスの説明から行います。
目次
Azure Bot Service
ノンコーディングでチャットボットが作成できるサーバーレスなサービスです。
通常、チャットボットを作る際には、RestAPIの基盤となるWebサーバー及びアプリケーションサーバー、会話のステートを格納するためのストレージ、認証基盤、チャットボットのプログラムそのものなどなど、たくさんのものが必要になります。Azure Bot Serviceは、これらのものを1つに詰め込んだ、いわゆるオールインワンパッケージなのです。
下図は、Azure Bot Serviceの構成図になります。
Azure Bot Serviceはいくつかの層で構成されております。
ユーザークライアント層
FacebookやLINEなどの、ユーザーがチャットボットを利用するためのツールがある層です。Webアプリケーションであればブラウザ、スマホアプリであればダウンロードしたアプリそのものになります。
Web層
ユーザーが発話したとき、その内容がユーザークライアント層にあるLINEやFacebookからHTTPリクエストとして送信されてきます。Web層は、そのリクエストを受け取る層であり、チャネルとWeb Appから構成されます。
チャネルは、LINEやFacebookからのHTTPリクエストを受け取り、後述するBot Frameworkが理解出来る形式に変換します。LINE用のチャネル、Facebook用のチャネルといった形で、様々なチャネルが用意されてます。こうすることで、Bot Frameworkをベースとした、たった1つのチャットボットアプリケーションを作るだけで、LINEやTeams、Facebookなど色々なチャットボットクライアントに対応出来るのです。実際の構成は、各チャネルごとに固有のコネクタサーバーというものがあり、LINE用のコネクタサーバーが、LINEからのリクエストを受け付けます。
そしてWeb Appの中には、Bot Frameworkという、Azure Bot Serviceを稼働させるためのコアとなるアプリケーションフレームワークがあります。通常であれば、ユーザーからの発話に対する返答、会話フローの実装、ユーザーのセッション処理などを自前で作成しなければなりませんが、この辺りの開発を楽にするライブライやクラス群を提供するのが、Bot Frameworkです。Bot Frameworkの利用言語は、C#もしくはnode.jsになります。
Cognitiveサービス層
ユーザーとの対話をより人間らしいものにするためのAIサービスが配置される層です。後述するQnA MakerやLUISなどがこの層に含まれます。
外部サービス層
多種多様な認証方式を持つIDプロバイダーであるAzure AD、Office365を始めとした様々なマイクロソフトクラウドサービスへのAPIを提供しているGraph APIなど、チャットボットが応答を返すために参照する外部サービスがこの層に含まれます。もちろんマイクロソフト以外のサービスも例外ではありません。Salesforce、サイボウズなどのサードパーティー製のサービスや、自社独自開発のWebサービスが含まれることもあります。
QnA Maker
QnA Makerとは、あらかじめ「問い合わせ」と「回答」のペアを作成しておき、「問い合わせ」に近い内容の質問があった場合、それに対する「回答」を返すものです。
例えば、QnA Makerに以下のような「問い合わせ」と「回答」のペア(以降、QAデータと呼びます)を作成しておいたとします。
問い合わせ:Azureとはなんですか?
回答:イケてるパブリッククラウドです。
この場合、QnA Makerに「Azureとはなんですか?」という質問を投げると、もちろん「イケてるパブリッククラウドです。」という答えが返ってきます。QnA Makerに質問を投げる場合のインターフェースは、RestfulなAPIです。
また、日本語の微妙な揺らぎも対応してくれます。例えば、「Azureとはなんでしょうか?」という質問にもきちっと回答をしてくれます。ただし、どんな揺らぎでも完璧に回答してくれるわけではないので、ある程度調整は必要になります。
LUIS
「私は大阪までの航空券が欲しい」というと、その文章をAIが解析して、「大阪」(エンティティ)の「航空券の予約」(インテント)をしてくれるようなサービスです。AIなので、微妙な誤差も吸収することが出来ます(設定次第ですが)。例えば「私は大阪までの航空券が取りたい」でもOKです。イメージにすると以下の通りになります。
セッションの内容
では、サービスの概要の説明が終わりましたところで、セッションの内容に入りたいと思います。
チャットボットの効果
まずチャットボットの効果に関する説明がありました。アクセンチュアの人事部はチャットボットを導入して人事部への問い合わせが20%減少したようです。
チャットボットのライフサイクル
チャットボットのライフサイクルについての説明です。平たくいえば、チャットボットを開発して(Design)、QnA MakerやLUIS等によるCoginitveサービスを組み込み(Buld)、テストを行い(Test)、チャットボットをデプロイして、MessengerやTeamsから利用できるようにして(Connect)、Application Insightsによってチャットボットがユーザーのニーズを満たしているかどうか評価を行います(Evalute)。
非常に重要なのはEvaluteです。チャットボットに代表されるCoginitveサービスは最初は赤ちゃんです。やはりEvaluteは大事です。
デモ
デモが始まりました。QnA Makerで一問一答のチャットボットを作成します。
※詳細な手順はセッションの動画を御覧ください。
発話を登録して、、、
テストを行って、、、
Publishを行います。
Azure Bot Serviceのリソースを作成して、、、
Connectorの設定を行いTeams と接続して、Teams向けのチャットボットの完成です。
まとめ
Satya Nadella氏も「人間の言語は新しいUIだ」と言っています。つまり、チャットボットによる会話はWebやスマホアプリに変わる新しいUIになっていくと思います。
会話は、老若男女誰にでも馴染みやすいインターフェースです。文字によるものから音声に至るまで、我々の生活は会話によって成り立っており、チャットボットは、この会話というインターフェースをベースにしているのが、最大の強みです。
数年前のスマホアプリラッシュの際には数多くのスマホアプリが連日のようにリリースされました。そのインターフェースは、アプリごとに固有のもので、中には相当に複雑なものもあり、その習熟には、かなりの時間を要します。新しいものに敏感な若者であれば、楽に使いこなすかもしれませんが、比較的年配の層は、この手のものが苦手な方が多いのが事実です。Webインターフェースはスマホアプリよりも歴史が長いですが、同様のことが当てはまると思います。
その点、会話というインターフェースにおいては、先程もご説明したように、老若男女誰にでも馴染みのあるものです。チャットボットは、この会話というインターフェースを採用しているので、スマホアプリやWebアプリのような複雑なインターフェースとは違い、あらゆる年齢層をターゲットに出来るのが最大の強みです。
そんな「会話」というインターフェースを採用しているチャットボットに、楽しい未来を感じるようなセッションでした。
現場からは以上でした。
ちなみに私の作成した以下のブログも宜しくお願いします。Azure Bot ServiceやQnA Maker、LUISについて詳しく書いてあります。
次世代コミュニケーションツール「チャットボット」の活用 〜Azure Bot ServiceでAzureのことに何でも答えてくれるLINEボットを作る 〜【概要編】