『FAQチャットボットを一歩前進させる 〜 Discoveryとつなぐ』の記事で、New Watson Assistant と Watson Discvoery をつなぐ方法をご紹介しました。
GUI 画面を使って、Watson Discovery への接続を構成するので、no code で実現できましたが、Watson Discovery への接続パラメータと画面に表示できる検索結果のカスタマイズは限定されていました
そこで、今回の記事では、
- Watson Discovery に対する Query パラメータの値
- 検索結果から画面に表示する内容
を自由にカスタマイズする方法をご紹介します。
いざ、カスタマイズ!
今回も no code でカスタマイズできます。
no code で実現できる理由は、カスタム拡張機能で「いろんなモノ」につなぐで紹介した カスタム拡張機能を使用するからです。
カスタマイズ手順
3 つのステップで実施します。
- OpenAPI 文書のダウンロード
- カスタム拡張機能の構成
- アクション内のステップにてカスタム拡張機能の呼び出しを定義
それでは順番に見ていきます。
OpenAPI文書のダウンロード
カスタム拡張機能を使用するためには、OpenAPI 文書を用意する必要があります。
今回は、Watson Discovery の Query 機能を使用するための OpenAPI 文書を Watson Developer Cloud の一部として公開されている assistant-toolkit からダウンロードします。
git clone もしくは zip 形式でダウンロードします。
zip 形式でダウンロードした場合は unzip ツール等で展開してください。
Watson Discovery 用の OpenAPIは、assistant-toolkit/integrations/extensions/starter-kits/watson-discovery/watson-discovery-query-openapi.json
です。
カスタム拡張機能の構成
Integrations (カスタム拡張機能) を使用して、Watson Discovery に接続するための設定を行います。
カスタム拡張機能をクリックします。
エクステンション名 (任意) を入力します。
ここでは、『WD Extension』 と入力しています。
watson-discovery-query-openapi.json
をアップロードします。
WD Extension 拡張機能が作成されました。
続けて、認証情報をセットします。
下記手順は、ドラフト環境で利用するカスタム拡張機能に認証情報を設定する手順です。
アクション内のステップにてカスタム拡張機能の呼び出しを定義
検索結果を保存するセッション変数と Watson Discovery を呼び出すアクションを作成します。
セッション変数の作成
検索結果を保存しておくセッション変数を用意します。
セッション変数の作成方法は、注文のキャンセル処理を追加する 〜セッション変数の使い方〜 をご参照ください。
ここでは、セッション変数の Name, Type, Description についてご説明します。
Name | Type | Description |
---|---|---|
query_text | Any | 検索文字列 |
search_result | Any | 検索結果の保存 |
title | Any | wikipediaのタイトル |
answer | Any | Answer Findingで見つかった回答 |
answer_confidence | Number | 回答の確信度 |
link | Any | wikipediaのリンク |
アクションの作成
セッション変数を使ったアクションの作成方法は、チケットを自動作成する 〜 カスタム拡張機能 (Zendesk Support 編)をご参照ください。
ここでは概要と設定内容をご説明します。
(アクション)
Watson Discovery を呼び出すDiscoveryにつないでアクションを作成します。
(ステップ 1)
Define customer response で、Free text を選択します。
補足
project_id, instance_id, version の見つけ方はGithubの記事をご参照ください。
Discoveryに取り込んだ文書は、FAQチャットボットを一歩前進させる 〜 Discoveryとつなぐ と同じものを使用しています。
passsage.fields に、Watson Discovery が質問文に対する回答を見つけるフィールドを指定します。
"text" のケースが多いのですが、今回取り込んだ文書には text フィールドはなく、answer フィールドが使用されているため、['answer'] を指定しています。
補足
セット先変数 | 値 |
---|---|
search_result | ${search_result}.get(0) |
answer | ${search_result}.document_passages.get(0).answers.get(0).answer_text |
link | ${search_result}.url |
title | ${search_result}.title |
answer_confidence | ${search_result}.document_passages.get(0).answers.get(0).confidence |
(ステップ 4)
検索を実施した後は、検索結果が大きい場合のことも考慮して、search_resultをクリアしておきます。
理由としては 2 つあるそうです。
- 『アシスタントが使用するすべての変数に格納されるデータの合計量が 100 KB に制限されているためです』
- 『検索アクションの最後に大量の残りのデータを保存している場合、アシスタントの他のアクションが必要とする可能性のあるメモリが消費され、メモリが不足したときに他の後のアクションが機能しなくなる可能性があります』
ここの下の方にあります。重要なので、原文を載せておきます。
『In addition, if your results are fairly large (e.g., 10kb or more) then it is also sensible to empty them out at the end of your search action. The reason is that 100kb is a limit on the total amount of data stored in all the variables that the assistant uses. So if you are storing a large amount of left-over data at the end of your search action, it is consuming memory that other actions in your assistant might need and could cause those other later actions to stop working when they run out of memory. The last step of the search actions in watson-discovery-query-actions-generic.json or watson-discovery-query-actions-with-examples.json do this. Here you can see an how they are set up』
試してみる
前回もやった同じ質問をしてみます。
質問 『ピザの日はいつ』
質問 『宅配ピザを始めたお店は』
質問 『ピザの誕生秘話』
Answer Finidng 連携デモでよく聞かれる『確信度は表示できないの?』に応えることができました。
いかがでしたでしょうか
今回は、カスタマイズの例として、確信度の追加の例をみていただきました。
Watson Discovery が提供する Query パラメータを色々と弄れるし、表示する項目も自由にカスタマイズできます。
興味のある人は参考情報に、Watson Discovery の Query パラメーターのリンクを含めていますので、色々と試してみてください。
参考情報
公式サイト: Watson Discovery API - Query パラメータ
Github: Watson Discovery Extension OpenAPI 文書
関連記事