Amazon Web Services ブログ

Amazon Lex と Amazon Alexa を使用した質疑応答ボットの作成

ユーザーの質問に対する回答を持っていますが、ユーザーが質問をして適切な回答を得る良い方法が必要です。多くの場合、ユーザーはヘルプデスクに電話するか、サポートフォーラムに投稿しますが、ストレスが高まり、組織にとってコストがかかります。チャットボットがあれば、顧客にとって便利でしょう。興味深いことに、最近の調査は、ユーザーの 44% が人間と話すよりもチャットボットと話すことを望んでいます。

この投稿では、QnABot (「キューアンドエーボット」と発音) と呼ばれるサンプルソリューションについて説明します。 QnABot は、Amazon LexAmazon Alexa を使用して、「質疑応答」のための便利なインターフェイスを提供します。これにより、ユーザーは質問をして関連する回答をすばやく得ることができるようになります。

Amazon Lex を使用すると、音声とテキストチャットアクセスの両方を既存のアプリケーションに統合できます。Amazon Alexa を使用すると、Amazon Echo または Alexa Voice Service 対応デバイスを自宅や職場で使用しているユーザーに、ハンズフリー音声インターフェイスを提供できます。QnABot は両方の長所を最大限に活用しています。

QnABot は、Amazon Elasticsearch Service (Amazon ES) を使用して質問と回答を検索可能にします。ユーザーが質問をすると、Amazon ES の強力な全文検索エンジンが背後で使用され、その質問に最も合った回答が検索されます。

以下のセクションでは、次のことを行う方法について説明します。

  • QnABot を AWS アカウントにデプロイする。このブログでは、お客様が既に AWS を利用していることを前提としています。アカウントをまだ作成していない場合は、AWS ホームページの [Create an AWS Account] を選択してください。
  • コンテンツデザイナー UI を使用して、質問と回答を QnABot に挿入する。
  • ウェブクライアント UI で音声またはチャットを使用して質問をする。
  • 最新の Amazon Echo デバイスを使用してハンズフリーで質問をする。
  • QnABot のコンテンツのトラブルシューティングと調整を行って、間違った回答が表示される可能性を最小限に抑える。
  • 画像やウェブリンクによって回答を強化する。

さらに、QnABot のしくみについても詳しく調べ、ニーズに合わせて強化するためのアイデアも示します。

QnABot のデプロイ

この AWS CloudFormation ボタンを使用して、AWS リージョン us-east-1 で QnABot を起動します。

注意: このドキュメントの執筆時点では、us-east-1 リージョンのみサポートされています。

ソースコードは GitHub リポジトリで入手できます。

AWS マネジメントコンソールの CloudFormation パラメーターページで、QnABot Content Designer Admin ユーザーに割り当てるパスワードを入力します。パスワードは最低 8 文字が必要です。また、大文字と小文字に加えて数字と特殊文字を含んでいる必要があります。

[Next] を 2 回選択して [Review] ページを表示します。

確認のチェックボックスを選択し、[Create] を選択して QnABot をデプロイします。

マスター CloudFormation スタックは、ネストされたスタックを使用して AWS アカウントに次のリソースを作成します。

  • コンテキストを保存および検索するための Amazon Elasticsearch Service ドメイン (1 x t2.small.elasticsearch)。料金: 約 0.036 ドル/時間 – 無料利用枠の対象。
    注意: 本番稼働用に使用する場合は、Amazon ES ドメインの耐障害性を確保するためにノード数を増やしてください。詳細については、「Configuring Amazon ES Domains」を参照してください。
  • QnABot ウェブ UI をホストするための Amazon S3 バケット。
  • 自然言語処理を行うための Amazon Lex ボット。
  • QnABot コンテンツの管理と質問および回答の検索に使用される AWS Lambda 関数。
  • ウェブ UI により使用される Amazon API Gateway REST API。
  • クライアントを認証し、一時的な AWS 認証情報を提供するように設定された Amazon Cognito
  • ウェブサイトと API エンドポイント に使用される Amazon CloudFront ディストリビューション。

デプロイが完了すると (約 60 分後)。マスタースタックの [Output] タブに以下の内容が表示されます。

  • ContentDesignerURL: コンテンツデザイナー UI を起動するための URL。
  • ClientURL: ユーザークライアントウェブページを起動するための URL。
  • DashboardUrl: 監視用の CloudWatch ダッシュボードを起動するための URL。

QnABot の初期コンテンツの作成

QnABot をユーザーに渡す前に、コンテンツデザイナーを使用して質問と回答のデータをロードする必要があります。データは、バックグラウンドで Amazon ES に保存されます。このようにして、ユーザーが Lex クライアント UI または Alexa ハンズフリーデバイスを使用して質問をしたときに、後でデータを検索できるようになります。以下のステップでは、QnABot の機能を示すために使用するサンプルの質問をロードする方法について説明します。後で簡単にご自身のコンテンツに置き換えることができます。

  1. CloudFormation コンソールで、マスター CloudFormation スタックの [Outputs] タブから ContentDesignerURL を使用してコンテンツデザイナーウェブページを起動します。
  2. ユーザー名 Admin とスタックの起動時に設定したパスワードでログインします。
  3. [Add] を選択します。
  4. ID を入力: QnaBot.001
    注意:
    カテゴリ内のアイテムを識別できる命名規則を使用してください。
  5. 質問を入力: QnABot とは何ですか
  6. 回答を入力: QnABot は Amazon Lex と Alexa を使用してよくある質問のナレッジベースの自然言語インターフェイスを提供するため、ユーザーはそのまま質問をして、関連する簡単な回答を得ることができます。
  7. 保存ツール (右上) を選択します。
  8. ステップ 3 ~ 7 を繰り返します。以下の表からアイテムを入力します。
    または、コピー/貼り付けプロセスを避けるため、ファイルから直接アイテムをインポートできます。[Import/Export] を選択して [Import URL] を選択し、URL https://raw.githubusercontent.com/awslabs/aws-ai-qna-bot/master/docs/blog-samples.json を入力します。
ID 質問 答え
QnABot.002 QnABot を使用する方法 QnABot コンテンツデザイナー UI を使用して、質問と回答を作成および管理します。エンドユーザーは、音声またはチャットをサポートする Lex ウェブ UI を使用するか、ハンズフリー音声操作用の Alexa デバイスを使用して質問をします。
Admin.001 QnABot のコンテンツを変更する方法 コンテンツデザイナーの質問およびテストツールを使用し、既存のドキュメントを検索して、コンソールで直接編集できます。既存のドキュメントを JSON ファイルとしてエクスポートし、ファイルに変更を加えて再インポートすることもできます。
Admin.002 QnABot のコンテンツをバックアップできますか はい。コンテンツを JSON ファイルとしてエクスポートするには、コンテンツデザイナーを使用します。このファイルは、バージョン管理システムまたは S3 バケットで管理します。コンテンツを JSON ファイルから復元するには、デザイナー UI のインポート機能を使用します。
Admin.003 QnABot のコンテンツをファイルからインポートできますか はい、コンテンツデザイナーには、フォーマット JSON ファイルからアイテムをロードできるインポート機能があります。エクスポート機能を使用して JSON ファイルを作成したり、ご自身のツールを記述してウェブサイトのよくある質問などの既存のコンテンツから JSON ファイルを作成したりすることができます。
Admin.004 QnABot で問題をトラブルシューティングして解決する方法。 コンテンツデザイナーのテストツールを使用して質問をテストし、返されるアイテムをスコアのランク順にチェックします。目的のアイテムが最高スコアにならない場合、質問をアイテムに追加してテストをもう一度実行します。目的にアイテムが最高のスコアになったことを確認します。予測不可能な応答を避けるため、質問が重複するアイテムを作成しないように注意してください。
Admin.005 デザイナー UI で特定の質疑応答アイテムを検索する方法を教えてください [Questions] タブの [Filter] 機能を使用し、[ID] フィールドに基づいてアイテムリストをフィルタリングします。または、[Test] タブを使用して、質問に一致するすべてのアイテムをリストします。
Media.001 QnABot の回答に画像を追加する方法を教えてください アイテムに画像添付ファイルを追加するには、コンテンツデザイナーを使用します。

Lex ウェブクライアント UI を使用して回答を得る

QnABot は、PC、Mac、Chromebook、Android タブレットの Chrome、Firefox、または Microsoft Edge ブラウザから起動できます。

  1. CloudFormation コンソールで、メイン QnABot スタックを選択して [Output] を選択し、ClientURL へのリンクを選択します。
  2. ブラウザからウェブアプリケーションの代わりにマイクへのアクセスを要求された場合は許可します。QnABot チャットウィンドウが表示されます。

    テキストチャットまたは音声を使用して QnABot を操作できます。
  3. 試してみましょう。マイクアイコン (右下) を選択し、「QnABot とは何ですか」と言います。
    この質問に対して事前入力した回答が応答としてボットにより返されます。

Alexa を使用して回答を得る

QnABot は Alexa でも機能するため、ユーザーは Amazon FireTV、Amazon Dash Wand、いずれかの Amazon Echo デバイスファミリーなどの Alexa 対応デバイスを通じてコンテンツから回答を得ることができます。

Alexa を有効にするには、まず Amazon 開発者コンソールを使用して QnABot 用の Alexa スキルを作成します。現時点では、QnABot が Alexa スキルを自動作成することはできないため、手順を用意しました。QnABot コンテンツデザイナーにログインし (前述のとおり)、[Lex/Alexa] を選択して [Alexa Instructions:] を選択します。

表示された手順に 1 つずつ従って、Amazon アカウントに Alexa スキルを作成します。数分で完了します。

QnA スキルを Alexa スキルストアに公開して他のユーザーがアクセスできるようにする場合、「Submitting an Alexa Skill for Certification」を参照してください。非公開のスキルは Amazon アカウントに登録された Alexa デバイスだけがアクセスできますが、公開されたスキルはだれでもアクセスできます。

トラブルシューティングと調整

コンテンツデザイナーを使用した回答の調整

QnABot は、ユーザーの質問と、コンテンツデザイナーにより Amazon ES に保存された質問と回答のリストをマッチングしようとします。QnABot は、Amazon ES の全文検索エンジンを使用して、質問に最も合ったアイテムを検索します。頻繁に使用される単語よりも使用頻度の低い単語の方がスコアが高くなるため、前置詞などの文構造の重み付けは一意のキーワードよりも低くなります。アイテムに関連付けられた質問とユーザーがした質問の合致率が高くなればなるほど、QnABot がそのアイテムを最も関連性の高い回答として選択する可能性が高くなります。

QnABot は、ユーザーの質問と、保存されたアイテムの質問フィールドおよび回答フィールドの両方をマッチングし、質問フィールドで見つかった一致の重み付けを高くすることにより、質問に対する最良の回答を検索しようとします。

ユーザーが予想していなかった方法で質問し、予期しない回答が QnABot により返されることがあります。この場合は、コンテンツデザイナーを使用して問題をトラブルシューティングおよび解決します。

トラブルシューティング/調整シナリオの例を示すため、前のセクション Admin.001「QnABot のコンテンツを変更する方法」で入力したアイテムを使用してみましょう。

  1. Lex ウェブ UI (音声またはテキストチャット) を使用して、別の方法で質問します (どうすればアイテムを編集できますか?)。
  2. アイテム Admin.001 の回答が表示されるのが理想的ですが、この場合、質問の言い回しがこのアイテムに関連付けられている質問とかなり異なるため、目的の回答が表示されません。
  3. コンテンツデザイナーにログインし、[Test:] を選択します。
  4. 同じ質問「どうすればアイテムを編集できますか」を質問フィールドに入力し、[test] を選択します。スコアが最大の回答が Admin.001 でないことを確認します。
  5. ランクが低くなっている Admin.001 を見つけて選択します。これが推奨される回答です。
  6. このアイテムを調整して、次回同じ質問をしたときにこのアイテムが最高スコアになるようにしましょう。アイテムを選択して展開して [edit] ツール (右上) を選択し、左側の最初の質問の下にある [add question] (+) ツールを選択します。
  7. 新しい質問「どうすればアイテムを編集できますか」を入力し、[save] ツール (右上) を選択します。
  8. [test] (ページの上部) を選択して、同じ質問をもう一度試します。
  9. 成功! 今回は Admin.001 が最高スコアにあります。
    Lex ウェブ UI で質問をもう一度を試します。今回は、目的の回答が表示されます。

ボットの自然言語処理の調整

QnABot に質問をすると、自然言語処理 (NLP) エンジンを使用して Lex または Alexa により処理され、書き起こされます。QnABot は、最初にさまざまな質問と文章がマッチングされるように NLP をトレーニングし、ユーザーがする可能性のある質問を Lex ボットと Alexa スキルがどれでも受け入れるようにします (デフォルトのトレーニングの質問は、ファイル default-utterances.js にリストされています)。

ただし、ときには QnABot が理解および処理できない内容を言うこともあり得ます。ウェブクライアントまたは Alexa アプリに表示される書き起こしが正確でないことや、QnABot により内容をもう一度繰り返すように求められることがあります。

この場合は NLP を再トレーニングしてください。QnABot は、追加したすべてのアイテムの質問を使用して、追加のトレーニングデータを自動的に生成できます。

Lex の再トレーニング

例を示すため、前のセクションのアイテム Admin.001「QnABot のコンテンツを変更する方法」で入力したアイテムを使用してみましょう。

  1. Lex ウェブクライアント UI (音声またはテキストチャット) を使用して、「回答を変更する必要があります」と述べます。
  2. 前回の演習では、QnABot が間違った回答を返しましたが、今回は「申し訳ありませんが、繰り返してください」とだけ返答します。同じ文章を繰り返した場合、「聞き取れませんでした。申し訳ありません」のようなエラーメッセージが表示されます。
    これは、この形式の文章を理解するようにデフォルトボットがトレーニングされていない場合の事例です。
  3. コンテンツデザイナーにログインしてアイテム「Admin.001」を開き、[Edit] ツールを選択して [add question (+)] ツールを選択した後、文章を新しい質問「回答を変更する必要があります
    」として追加します。[Save] ツールを使用して更新内容を保存します。
  4. [Lex/Alexa] を選択してから [Rebuild Lex Bot] を選択します。再ビルドが完了するまで待ちます。
  5. ここで、もう一度 Lex ウェブクライアント UI を使用して「回答を変更する必要があります」と述べます。新しい文章が QnABot トレーニングセットに追加されると、拒否されなくなり、QnABot が適切な回答で応答することがわかります。

Alexa の再トレーニング

Amazon 開発者コンソールを使用して Alexa のトレーニングデータセットを更新し、スキルのカスタムスロットタイプ値を編集します。

  1. コンテンツデザイナー UI ウェブページにログインし、[Lex/Alexa] を選択して [Alexa Instructions] を選択します。
  2. [Custom Slot Type: EXAMPLE_QUESTIONS] を見つけ、[Copy to Clip Board] を選択します。
  3. Amazon 開発者コンソールにサインインして QnABot Alexa スキルを開いて InteractionModel に移動し、クリップボードから新しい値を貼り付けることにより EXAMPLE_QUESTIONS カスタムスロットタイプの値を置き換えます。[Save] を選択して更新内容を保存します。

CloudWatch を使用した監視とトラブルシューティング

QnABot のメトリクスとログは、Amazon CloudWatch ダッシュボードを使用して参照できます。

  1. マスター CloudFormation スタックの [Outputs] タブで、DashboardUrl を使用してダッシュボードを起動します。
  2. 質問に対する QnABot の回答をトラブルシューティングするときは、フルフィルメント Lambda 関数により作成されたログを使用してリクエストとレスポンスをトレースします。
    1. Fulfilment Lambda ウィジェットの右上にある [menu] ツールを選択し、[View logs] を選択して [AWSLambda function] を選択します。
    2. ログメッセージを調べます。QnABot による各操作は、START メッセージと END メッセージで区切られています。これらのメッセージの間に、QnABot が質問を処理する方法に関する情報があります。

回答のエクスポートとインポート

QnABot コンテンツデザイナーでは、JSON ファイルを使用してコンテンツをエクスポートおよびインポートできます。

エクスポート機能を使用してコンテンツのバックアップバージョンを作成します。アイテムを間違って削除した場合や、前のバージョンに戻す必要がある場合は、このバックアップバージョンを使用して復元できます。エクスポートされた JSON ファイルを使用してボットの別のインスタンスにコンテンツをロードし、テストや Blue/Green デプロイに使用することもできます。

または、よくある質問ウェブページやドキュメントなどの既存のソースを使用してコンテンツを収集および再フォーマットするスクリプトを使用し、JSON コンテンツファイルを自動的に作成することもできます。

試してみましょう。QnABot カテゴリに含まれるすべてのアイテムをエクスポートしましょう (ID の先頭が「QnABot」のアイテム)。

  1. コンテンツデザイナーにログインして [Questions] を選択し、[Filter] に「QnABot」と入力して、ID の先頭が文字「QnABot」のアイテムだけを表示します。
  1. ここで、[Import /Export] を選択して [Export Filtered] を選択し、フィルタリングされたアイテムを含む JSON ファイルを生成して保存します。
  2. エクスポートされたファイルをテキストエディターで開き、JSON 構造を調べます。
  1. 次の例に示すように新しいアイテムを qna リストに追加し、ファイルを保存します。
    {
    "qid": "QnABot.003",
    "q": [
    			"QnABot は何ができますか"
    ],
    "a": "ウェブサイトに統合し、よくある質問にすばやく簡単にアクセスできるようにします。Alexa で使用すると、キッチン、工場、車の中からハンズフリーで回答を得ることができます。画像も表示できるため、回答を補足する図や写真を提示できます。",
    "r": {
    "title": "",
    "imageUrl": ""
    }
    },
  1. コンテンツデザイナーで、[Import/Export]、[Import Local] の順に選択します。変更した JSON ファイルをローカルコンピュータからインポートします。注意: 既存のアイテムと同じ ID のアイテムをインポートすると、既存のアイテムが、JSON ファイルに含まれている定義で上書きされます。
  2. コンテンツデザイナーのフィルタフィールドに「QnABot」と入力し、新たにインポートされたアイテム QnABot.003 を調べます。

回答への画像の追加

ユーザーの Lex ウェブクライアント UI、Amazon Alexa スマートフォンアプリ、新しい Amazon Echo Show デバイスのタッチスクリーンに表示できる画像添付ファイルによって、回答を簡単に補強できます。画像を使用して地図、図、写真を表示し、質問に関連する場所や製品を示すことができます。

  1. コンテンツデザイナーにログインし、[Add] を選択します。
  2. ID を入力: Alexa.001
  3. 質問を入力: Amazon Echo Show とは何ですか
  4. 回答を入力: Echo Show には Alexa の機能がすべて含まれており、物事を説明できるようになりました。QnABot の良い仲間です。
  5. 添付ファイルを入力:
    1. タイトル: Echo Show
    2. ImageUrl: https://images-na.ssl-images-amazon.com/images/I/61OddH8ddDL._SL1000_.jpg
  6. 新しいアイテムを保存します。
  7. ウェブ UI を使用して「Echo Show とは何ですか?」と質問します。
    ウェブ UI チャットに写真が表示されます。
  8. または、Amazon Echo や Echo Dot を使用して「QnABot に質問します。Echo Show とは何ですか?」と言います。Alexa スマートフォンアプリに表示されたカードに、写真の添付ファイルが表示されます。
  9. または、Amazon Echo Show を使用して「QnABot に質問します。Echo Show とは何ですか?」と言ってもかまいません。
    Echo Show のタッチスクリーンに写真の添付ファイルが表示されます。

Amazon S3 または写真共有サービスを使用して画像をホストします (「hosting images」を参照)。

QnABot へのスタイルの追加

コンテンツを定義するときは、必ず回答を簡潔で魅力的なものにしてください。回答のスタイルに一貫性を持たせるようにしてください。画像を使用して口頭の回答を補強します。フレンドリーでスタイリッシュなボットにするため、身振りを追加しましょう。

たとえば、「こんにちは」、「さようなら」、「ありがとう」などの雑談に応答する方法を教えます。

これは簡単に試すことができます。

  1. コンテンツデザイナーにログインし、[Add] を選択します。
  2. ID を入力: BotStyle.001
  3. 質問を入力: こんにちは
  4. 回答を入力: ようこそ。質問してください。お答えします。
  5. 新しいアイテムを保存します。
  6. ウェブ UI を使用するか、Alexa デバイスを使用して「こんにちは」とボットに言い、応答を聞きます。

ユーザーが「助けてください」と言ったときに簡単な手順で応答するように QnABot に教えるときも、この方法を使用します。

詳細なしくみ

QnABot のしくみを簡単に見てみましょう。主なアーキテクチャコンポーネントの図とそれらの連携の概要を以下に示します。

以下のセクションでは、QnABot の各種操作モードでこれらのアーキテクチャコンポーネントすべてがどのように連携するかについて説明します。詳細については、GitHub リポジトリにあるソースコードと README を参照し、AWS コンソールを使用して各リソースの設定について調べてください。

Lex ウェブクライアント UI

Amazon Lex を使用すると、会話型インターフェイスを Lex ウェブクライアントなどのアプリケーションに統合できます。Lex ボットは、インテントを使用して操作の目的をカプセル化し、スロットを使用して操作の情報の要素をキャプチャします。QnABot の目的はユーザーの質問に回答するという 1 つしかないため、インテントを 1 つだけ定義します。このインテントには、質問のテキストをキャプチャするようにトレーニングされた単一のスロットがあります (前述の「ボットの自然言語処理の調整」を参照)。Amazon Lex ボットのしくみの詳細と、インテント、スロット、サンプル値、フルフィルメント関数については、『Amazon Lex 開発者ガイド』を参照してください。

QnABot Lex ウェブクライアントは、アカウント内の Amazon S3 バケットにデプロイされ、Amazon CloudFront ディストリビューションを通じてアクセスできます。

同じ CloudFront ディストリビューションの背後に存在する Amazon API Gateway エンドポイントが実行時設定を提供します。ウェブクライアントはこの設定を使用し、Amazon Cognito に接続して一時的な AWS 認証情報を取得した後、Amazon Lex サービスに接続します。

Lex ウェブクライアントを使用して「QnABot の回答に画像を追加する方法を教えてください」などの質問を QnABot にすると、ウェブクライアントは QnABot Lex ボットとやり取りします。その後、Lex ボットは、スロットとしてキャプチャされた書き起こしの質問と共に、AWS アカウントでボットフルフィルメント Lambda 関数を呼び出します。

ボットフルフィルメント Lambda 関数は、書き起こしの質問を含む Amazon ES クエリを生成します。以下にクエリの例を示します。クエリは、Amazon ES の関連性スコアを使用して、事前に用意したすべての質問と回答の中から最も一致するものを見つけようとします。保存された質問のテキストで見つかった一致には、保存された回答のテキストで見つかった一致よりも高い重み付けが与えられます。

{
    "size": 10,
    "from": 0,
    "query": {
        "multi_match": {
            "query": "QnABot の回答に画像を追加する方法を教えてください",
            "fields": [
                "q^2",
                "a"
            ]
        }
    }
}

ボットフルフィルメント Lambda 関数は、スコアが最も高いアイテムの回答フィールドを使用し、Lex に返す応答を作成します。アイテムに画像の添付ファイルも含まれている場合、応答カードも応答で返されます。Lex ウェブクライアントは、操作モードに応じて音声またはテキストのどちらかでユーザーに応答し、回答に添付された画像があればそれも表示します。

Alexa 対応デバイス

Alexa デバイスは、Alexa スキルを使用して QnABot とやり取りします。Lex ボットと同様、Alexa スキルもインテントを使用して操作の目的をカプセル化し、スロットを使用して操作の情報の要素をキャプチャします。QnABot Alexa スキルは、上記の Lex ボットのセットアップをミラーリングし、単一のスロットを持つ単一のインテントを定義します。

Alexa QnA スキルは、同じボットフルフィルメント Lambda 関数を Lex ボットとして使用します。「Alexa、質問があります。QnABot の回答に画像を追加する方法を教えてください」などの質問をすると、Alexa デバイスは作成したスキルとやり取りします。つまり、AWS アカウントでボットフルフィルメント Lambda 関数を呼び出し、書き起こしの質問をパラメーターとして渡します。

ボットフルフィルメント Lambda 関数は、前述のように Amazon ES アイテムのクエリを実行します。ボットフルフィルメント Lambda 関数は、スコアが最も高いアイテムの回答フィールドを使用し、Alexa に返す応答を作成します。アイテムに画像の添付ファイルも含まれている場合、カードも応答で返されるため、画像が Alexa スマートフォンアプリ (または、Echo Show が使用されている場合はタッチスクリーン) に表示されます。

コンテンツデザイナー UI

QnABot コンテンツデザイナー UI は、同じ Amazon CloudFront ディストリビューションを通じてアクセスした Amazon S3 バケットにクライアント UI としてデプロイされます。また、API Gateway エンドポイントからも設定を取得します。コンテンツデザイナーウェブサイトでは、ユーザーは Cognito ユーザープールで定義された認証情報を使用してサインインする必要があります。

コンテンツデザイナー UI は、Cognito の一時的な AWS 認証情報を使用して、コンテンツデザイナー Lambda 関数によりサポートされている安全な API Gateway エンドポイントとやり取りします。Amazon ES および Amazon Lex とのすべてのやり取りは、これらの Lambda 関数により処理されます。

QnABot のカスタマイズと強化

皆さんの改良点を組み込み、共有できるように、ぜひ QnABot GitHub リポジトリを調べてコードを強化し、プルリクエストをお送りください。

実装できる機能について、いくつかの提案があります。

  • 使用状況メトリクス: 最も頻繁にアクセスされる質問とトピックを追跡するカスタムメトリクスを実装します。
  • ユーザーフィードバックのキャプチャ: ユーザーが回答でエラーを報告したり、表示された回答が質問に対する答えになっていない場合に報告したりできるようにします。
  • 複数回答: ユーザーが「やり直す」や「次」と言って別の回答をリクエストし、ランクの低い解答で応答するよう QnABot に指示できるようにします。質問があいまいな場合や、正しい回答が複数ある場合に役立ちます。
  • トピックコンテキストメモリ: フォローアップの質問のサポートを追加します。たとえば、「Echo Show とは何ですか?」と質問した場合、フォローアップの質問「コストはどれくらいですか?」が Echo Show コンテキストに適用されると考えられます。
  • 既存の FAQ ページまたはドキュメントの取得: 既存のソースから適切なコンテンツをキャプチャするスクリプトを記述します。インポートするための QnABot JSON 形式ファイルの作成を自動化または半自動化します。
  • QnABot を拡張して公開ナレッジベースサービスにアクセス: ボットフルフィルメント Lambda 関数を拡張して追加の外部情報ソースにアクセスすることにより、Wikipedia、Evi、WolframAlpha、他の公開ナレッジベースサーバーを活用します。
  • QnABot と Amazon Connect の統合: Amazon Connect 問い合わせフロー内で QnABot を使用してよくある質問への回答を自動化することにより、サポートセンターの電話の待ち時間を短縮します (「Amazon Connect and Amazon Lex Integration」を参照)。よく利用されているメッセージングプラットフォームを使用して QnABot とやり取りすることもできます。

Amazon Lex ウェブ UI について

QnABot ウェブ UI は、aws-lex-web-ui GitHub リポジトリを使用します。このリポジトリは、ウェブページが Amazon Lex ボットとやり取りできるようにし、webRTC をサポートするウェブブラウザでの音声キャプチャおよび再生を処理します。

Lex ウェブ UI を使用すると、QnABot をコンポーネントとしてご自身のウェブサイトに統合できます。

詳細については、README ファイルを参照してください。

QnABot のアンインストール

テストが終わったら、CloudFormation コンソールでマスター QnABot スタックを選択して削除します。これにより、ボットに関連付けられている AWS リソースがすべて削除されます。必ず、後で再利用する QnA アイテムをエクスポートしておいてください。

まとめ

このブログでは、サンプル質疑応答ボット QnABot について説明しました。また、QnABot を使用することにより、ウェブブラウザで Amazon Lex を使用するか Alexa 対応デバイスを使用してテキストおよび音声の両方で機能する自然言語インターフェイスを作成する方法について説明しました。

ご自身の質問と回答で試してみましょう。QnABot での体験談を共有する場合はコメントリンクを使用してください、ご感想をお待ちしております。


その他の参考資料


今回のブログの投稿者について

Bob Strahan は、AWS プロフェッショナルサービスのシニアコンサルタントです。John Calhoun は、AWS 公共部門パートナーチームのアソシエイトソリューションアーキテクトです。彼らは、お客様やパートナー様と連携し、さまざまなプロジェクトをリードすることにより、AWS を使用して価値を生み出すまでの時間を短縮するお手伝いをしています。