ルーティング動作の調整
デジタル・アシスタントを本番環境に移行する前に、デジタル・アシスタントがインテントをルーティングおよび解決する方法をテストして微調整する必要があります。
デジタル・アシスタントのトレーニング 🔗
デジタル・アシスタントを調整する前に、必ずトレーニングしてください。デジタル・アシスタントをトレーニングすることで、そこに含まれるすべてのスキルのトレーニング・データを統合し、デジタル・アシスタントの組込みインテント(Help、ExitおよびUnresolvedIntent)のトレーニング・データを入力します。
デジタル・アシスタントをトレーニングするには:
- デジタル・アシスタントを開きます。
- 「トレイン」ボタン(
)をクリックし、トレーニング・モデルを選択します。
大多数のスキルをトレーニングする際に使用したものと同じトレーニング・モデルを使用する必要があります。
トレーニング・モデルの詳細は、使用するトレーニング・モデルを参照してください
テスト対象 🔗
次に、テストおよび微調整が必要なルーティング動作を示します:
-
明示的な起動(起動名を含むユーザー入力)。
例(
Financial Wizard
が起動名):send money using financial wizard
-
暗黙的な起動(実際に起動名を含めることなく、スキルの使用を暗黙的に意味するユーザー入力)。
例:
send money
-
あいまいな発話(デジタル・アシスタントがそのあいまい性をどの程度解消できるかを確認するため)。
例(複数のスキルでオーダーできる場合):
place order
-
話題の変更による会話フローの中断(無関係な発言とも呼ばれます)。
ルーティング・モデルの動作方法の詳細およびデジタル・アシスタントの動作を調整するために変更できるルーティング・パラメータの詳細は、続きを参照してください。
デジタル・アシスタントでのルーティングの動作に関する最も重要な要素は、スキル自体の設計です。デジタル・アシスタントの構成と、それに含まれるスキルの設計の両方に対する入力があるプロジェクトの作業をしている場合、デジタル・アシスタントのルーティング・パラメータを調整する前に、個々のスキルのインテント解決に重点を置いて最適化することをお薦めします。会話の設計ですべきこととしなくてよいことを参照してください。
ルーティング・モデル 🔗
ユーザーがデジタル・アシスタントにフレーズを入力すると、デジタル・アシスタントは、会話のルーティング方法(特定のスキルへ、現在のフローの別の状態へ、またはデジタル・アシスタントの組込みインテントへ)を決定します。
ルーティング・モデルの核となるのは、ユーザーの入力とどの程度一致しているかを測定するために個別のスキルおよびインテントについて計算される信頼度スコアです。信頼度スコアは、基礎となる自然言語処理(NLP)アルゴリズムをスキルおよびデジタル・アシスタントのトレーニング・データに適用することで導出されます。
ルーティングの決定は、「候補スキルの信頼度しきい値」や「信頼度ウィン・マージン」など、様々なルーティング・パラメータの値に対して信頼度スコアを測定することで行われます。
ルーティング・モデルには、次の主要なレイヤーがあります:
-
候補システム・インテントの決定: ユーザー入力が評価され、信頼度スコアがデジタル・アシスタントのインテント(exit、helpおよびunresolvedIntent)に適用されます。信頼度スコアがデジタル・アシスタントの「組込みシステム・インテントの信頼度しきい値」ルーティング・パラメータの値を超えているインテントは、その後の評価の候補として扱われます。
-
候補スキルの決定: ユーザー入力が評価され、信頼度スコアが各スキルに適用されます。信頼度スコアがデジタル・アシスタントの「候補スキルの信頼度しきい値」ルーティング・パラメータの値を超えているスキルは、その後の評価の候補スキルとして扱われます。
-
候補フローの決定: 候補スキルが識別されると、(各スキルのインテント・モデルに従って)これらのスキルの各インテントが評価され、信頼度スコアが各インテントに適用されます。一般的に、信頼度スコアが(デジタル・アシスタントの「候補スキルの信頼度しきい値」パラメータではなく)スキルの「信頼度しきい値」ルーティング・パラメータの値を超えるインテントは、候補フローとして扱われます。
このルーティングの動作を調整するには、デジタル・アシスタントのルーティング・パラメータを調整します。
また、ルーティング式に影響する特定のケースのルールがあります。これらのケースは:
-
明示的な起動: ユーザーが入力にスキルの起動名を含めると、デジタル・アシスタントはそのスキルに直接ルーティングします(入力が他のスキルと一致している場合でも同様です)。
-
コンテキスト認識ルーティング: ユーザーがすでにスキルにエンゲージしている場合、そのスキルは、インテント解決時に他のスキルからのインテントよりも大きい重みが付与されます。
-
コンテキスト固定: ユーザー入力にスキルの明示的な起動が含まれているがインテント関連の発話がない場合、ルーターによって会話はそのスキルに固定されます。これは、次の発話がそのスキルに関連すると想定されることを意味します。
開始、ようこそおよびヘルプの状態 🔗
ユーザーが様々なスキル間をよりスムーズにナビゲーションできるように、デジタル・アシスタントは、デジタル・アシスタントに追加される各スキルの開始、ようこそおよびヘルプ状態へのルーティングと表示を管理します。
各スキルを構成して、デジタル・アシスタントがようこそ、開始およびヘルプの各状態として使用するダイアログ・フローの状態を指定できます。これらの状態がスキルに指定されていない場合、デジタル・アシスタントはデフォルトの動作を提供します。
これらの状態がどのように機能するかについて、概要を次に示します。
-
開始状態: ユーザーが特定のスキルの使用の開始を希望しているとインテント・エンジンが判断した場合に適用されます。これは通常、ユーザーがスキルに関連するインテントを示したときに発生します。
スキルの開始状態が指定されていない場合、デジタル・アシスタントでは、スキルの最初の状態が開始状態として使用されます。
-
ようこそ状態: 付随するインテントなしでユーザーが起動名を入力した場合に適用されます。
例(cash bankは呼出し名):
cash bank
ようこそ状態がスキルで指定されていない場合のみ、デジタル・アシスタントによって、プロンプトと、スキルの表示名、1文の説明およびそのいくつかの発話例を示すカードで構成されるデフォルト・レスポンスが自動的に提供されます。また、会話を終了してデジタル・アシスタント全体のヘルプを取得するオプションがユーザーに提供されます。
次に、銀行取引スキルに適用されるデフォルトのようこそレスポンスの例を示します。
「スキル・ボットようこそプロンプト」構成設定を使用して、デフォルトのようこそプロンプトをカスタマイズすることもできます。
-
ヘルプ状態: ユーザーがヘルプや他の情報を要求しているとインテント・エンジンが判断した場合に適用されます。
例: ユーザーが送金のための銀行取引スキルのフローで、送金元口座の入力を求められたときに「help」と入力した場合。
ヘルプ状態がスキルで指定されていない場合のみ、デジタル・アシスタントは、プロンプトと、スキルの表示名、1文の説明およびそのいくつかの発話例を示すカードを含むレスポンスを自動的に準備します。また、会話を終了してデジタル・アシスタント全体のヘルプを取得するオプションがユーザーに提供されます。
次に、デジタル・アシスタントによって準備されるヘルプ・プロンプトとカードの例を示します:
「スキル・ボット・ヘルプ・プロンプト」構成設定を使用して、デフォルトのヘルプ・プロンプトをカスタマイズすることもできます。
開始、ようこそおよびヘルプの状態の指定 🔗
スキルのダイアログ・フローがビジュアル・モードで設計されている場合は、メイン・フローで次の状態を対応する組込みイベントとともに指定できます。
- スキルで、
をクリックします。
- 「メイン・フロー」を選択します。
- 「ビルトイン・イベント」セクションで
をクリックします。
- 「組込みイベント・ハンドラの作成」ダイアログで、マップされたフローからイベント・タイプを選択し、「作成」をクリックします。
スキルのダイアログ・フローがYAMLモードで設計されている場合は、スキルの設定で次の状態を指定できます:
- スキルで
をクリックし、デジタル・アシスタント・タブを選択します。
- 「開始状態」、「ようこそ状態」または「ヘルプ状態」の状態を選択します
明示的な起動 🔗
明示的な起動は、ユーザーが入力の一部としてスキルの起動名を入力したときに発生します。明示的な起動を使用することで、ユーザーは入力が意図したスキルに即時にルーティングされるようにして、タスクを実現するために必要なデジタル・アシスタントとのやり取りの回数を減らすことができます。
明示的な起動を使用すると、ルーティングを決定するときに、対応するスキルに追加の重みが付与されます:
-
ユーザーがまだスキル内ではなく、明示的な起動を入力した場合、その起動はデジタル・アシスタントのコンテキストで他のフローよりも優先されます。
-
ユーザーが別のスキルのフローにいる場合、デジタル・アシスタントはユーザーが本当にスキルを切り替えるつもりかどうかを常に確認しようとします。
各デジタル・アシスタントで、特定のスキルに使用する起動名を決定できます。起動名は、デジタル・アシスタントのスキルのページで設定します。そこに移動するには:
- デジタル・アシスタントの左側のナビゲーション・バーで、
をクリックします。
- 起動名をチェックまたは変更するスキルを選択します。
- 「起動」フィールドまでスクロールします。
この動作は、「明示的な起動の信頼度しきい値」ルーティング・パラメータによってサポートされます。明示的な起動の信頼度スコアがそのしきい値を超えた場合、他のスキルのインテントはルーティングの決定で考慮されません。このしきい値のデフォルト値は.8 (80%の信頼度)です。
スキルの英語以外の入力の場合、入力が明示的な起動として認識されるようにするには、スキルの起動名を入力してから他の単語を入力する必要があります。たとえば、スキルの呼出し名がPizza Kingの場合、発話「Pizza King、 quiero una pizza grande」は明示的な起動として認識されますが、「Hola Pizza King、 quiero una pizza grande」というフレーズは認識されません。
コンテキスト認識 🔗
デジタル・アシスタントでのルーティングはコンテキスト認識に対応しています。つまり、インテント解決の際に、他のスキルのインテントよりも、ユーザーが現在関与しているスキルの一致インテントの方の重みが増します。
たとえば、デジタル・アシスタントに銀行取引スキルおよびオンライン小売店スキルがあるとします。ユーザーが「残高はどれくらいか」という質問を入力した場合、これは、ユーザーの銀行口座残高とオンライン小売店に登録されているギフト・カードの残高の両方に当てはまる可能性があります。
-
ユーザーがいずれかのスキルのコンテキストに入る前にこの質問を入力した場合、デジタル・アシスタントは、(銀行取引スキルまたは小売店スキルの)どちらの「残高」フローに入るかの選択肢を表示供します。
-
ユーザーが銀行取引スキル内からこの質問を入力した場合、デジタル・アシスタントは銀行取引スキルに対応する「残高」フローを自動的に選択します(他のスキルのインテントは、標準の「信頼度しきい値」ルーティング・パラメータを満たしている場合でも無視されます)。
ユーザーがあるスキル内でフローを完了した場合でも、ユーザーはそのスキルのコンテキスト内にとどまります。次の場合を除きます:
- 明示的にスキルを終了したか、別のスキルに移動しました。
- 次のリクエストがスキルの
unresolvedIntent
に解決され、スキルの他のインテントのいずれにも一致しません。このケースでは、コンテキストはデジタル・アシスタントに移動し、デジタル・アシスタントが未解決のインテントの処理方法を決定します。
また、コンテキスト認識ではスキル・グループが考慮されます。つまり、あるスキルがスキル・グループの一部として定義されており、そのスキルが現在のコンテキスト内にある場合、現在のコンテキストにはそのスキル・グループの他のスキルも含まれます。スキル・グループを参照してください。
コンテキスト認識は、「現在のコンテキストのみを考慮するためのしきい値」ルーティング・パラメータによってサポートされます。現在のコンテキストのインテントの信頼度スコアがそのしきい値を超えた場合、他のコンテキストのインテントはルーティングの決定で考慮されません。このしきい値のデフォルト値は.8 (80%の信頼度)です。これは、他のインテントの表示を除外する前に、現在のコンテキストのインテントが正しいかどうかを確認できるようにするためです。
helpおよびunresolvedIntentインテント 🔗
スキルのコンテキスト内で、ユーザー入力がhelp
システム・インテントと一致した場合、ユーザーは、(デジタル・アシスタント・レベルで決定されるフローではなく)そのスキルによって決定されるヘルプ・フローにルーティングされます。
たとえば、ユーザーがスキルに関与していて、「ヘルプ」
と入力した場合、デジタル・アシスタント全体のヘルプではなく、そのスキルのヘルプが提供されます。
unresolvedIntent
システム・インテントでは、動作は異なります。ユーザー入力がunresolvedIntent
に解決される場合(および他の一致インテントがスキルにない場合)、入力はデジタル・アシスタント・レベルで未解決のインテントとして扱われます。ただし、unresolvedIntent
がスキル内の一致インテントの1つにすぎない場合は、スキルがレスポンスを処理します。
この動作は、「組込みシステム・インテントの信頼度しきい値」ルーティング・パラメータによってサポートされます。これらのインテントのいずれかの信頼度スコアがそのしきい値を超えた場合、そのインテントはその後の評価の候補として扱われます。プラットフォーム・バージョン20.12以降、このしきい値のデフォルト値は.9 (信頼度90%)です。以前のバージョンのプラットフォームでは、デフォルトは.6です。
exitインテント 🔗
ユーザー入力がexit
システム・インテントと一致した場合、ユーザーは、ユーザーのコンテキストに応じて、現在のフローまたはスキル全体の終了を求められます:
- ユーザーがフロー内に存在する場合、終了はフローに適用されます。
- ユーザーがスキル内に存在するが、スキルのフロー内に存在しない場合、終了はスキルに適用されます。
exit
インテントは、デジタル・アシスタント自体には適用されません。どのスキルにもエンゲージしていないユーザーは、単に非アクティブとして扱われます。
この動作は、「組込みシステム・インテントの信頼度しきい値」ルーティング・パラメータによってサポートされます。exit
インテントの信頼度スコアがそのしきい値を超えた場合、そのインテントはその後の評価の候補として扱われます。プラットフォーム・バージョン20.12以降、このしきい値のデフォルト値は.9 (信頼度90%)です。以前のバージョンのプラットフォームでは、デフォルトは.6です。
スキル・グループ 🔗
多数の機能を含むスキル・ドメインでは、多くの場合、そのような機能を複数の専門化したスキルに分割することが望まれます。これは、開発の観点からは特に有効です。異なるチームが異なる機能に取り組むことができ、スキルとその更新をそれぞれに最適なタイムラインでリリースできます。
ドメインに複数のスキルがあると、ユーザーがそれらのスキルの切替えを比較的頻繁に行う必要が生じます。たとえば、複数の人事関連スキルが含まれるデジタル・アシスタントの1つのセッションで、ユーザーは報酬、個人情報および休暇のスキルに関連するリクエストを行うことがあります。
関連スキル間のルーティング動作を最適化するために、スキル・グループを定義できます。デジタル・アシスタント内で、グループ内のすべてのスキルは1つの論理スキルとして扱われます。その結果、グループ内のすべてのスキルは現在のコンテキストの一部とみなされるため、インテント解決時にすべてのインテントが均等に重み付けされます。
グループ・コンテキストとスキル・コンテキスト 🔗
デジタル・アシスタントにスキル・グループがあるとき、ルーティング・エンジンはスキル・コンテキストとグループ・コンテキストの両方を把握しています。
ルーティング・エンジンは、グループ内の別のスキルがユーザー・リクエストの処理により適していると判断すると、グループ内でスキル・コンテキストを切り替えます。この判断は、候補スキル・ルーティング・モデルでのグループのスキル・ランキングに基づきます。
グループの最上位候補スキルの信頼度スコアが現在のスキルの信頼度スコアを上回っていても、5%未満であれば、グループ内のスキル・コンテキストは変更されません。
ルーティング・テスターを使用する場合は、「ルーティング」タブの「ルール」セクションを表示して、グループ内のスキル・コンテキストの変更がいつ行われたかを監視できます。
スキル・グループの詳細 🔗
各スキル・グループは、言語の類似性がある同じドメイン内のスキルのコレクションである必要があります。グループ内のスキルは、機能別に分割する必要があります。
たとえば、福利厚生、報酬、個人情報および採用のスキルはHCMスキル・グループにまとめると筋が通ります。商談および取引先のスキルは、営業スキル・グループに所属します。
スキル・グループの命名 🔗
スキル・グループを整理しやすくして、名前の競合を回避するには、スキル・グループの名前に<company name>.<domain>
パターンを使用することをお薦めします。
たとえば、架空の企業Acmeについて、以下のHCMスキルに対してacme.hcm
というグループを作成できます。
- 福利厚生
- 報酬
- 休暇欠勤
- 個人情報
- 採用
同様に、架空のAcmeの営業ドメインに以下のスキルもある場合、スキル・グループとしてacme.sales
を使用できます:
- 商談
- 取引先
共通スキルおよびスキル・グループ 🔗
ヘルプや世間話の処理などの機能に対して共通スキルを設定した場合は、それらを個別のスキル・グループとして処理しなくてもよいでしょう。これらは、ユーザーが主にどのスキル・グループとやり取りしているかに関係なく、会話のどの時点でも起動される可能性があるためです。これらの共通スキルが起動された後には、ユーザーが共通スキルで立ち往生しないようにする必要があります。
共通スキルとの交換が終了した後で、他のスキル・グループに共通スキルと同じ重みが付けられるようにするには、共通スキルを複数グループのグループに含めます。このためには、共通スキルのグループ名にアスタリスク(*
)を含めます。例:
- スキル・グループ名として
acme.*
を使用すると、acme.hcm
およびacme.sales
グループのスキルは含まれますが、hooli.hcm
というグループのスキルは含まれません。 - スキル・グループ名として
*
を使用すると、すべてのグループが含まれます(ただしグループに割り当てられていないスキルは含まれません)。
ユーザーが、単純なグループ(名前にアスタリスクが付いていないグループ)のスキルからグループ名にアスタリスクが付いたスキルに移動する場合、グループ・コンテキストは、このスキルに移動する前のグループ・コンテキストと変わりません。たとえば、会話がacme.hcm
グループのスキルからacme.*
グループのスキルに移動した場合、グループ・コンテキストはacme.hcm
のままです。
例: スキル・グループ内のコンテキスト認識 🔗
次に、このようなグループ内およびグループ間のルーティングがどのように機能するかという例を示します:
- 「どのような福利厚生を受けることができますか」とユーザーが尋ねます。スキル・コンテキストは福利厚生スキル、グループ・コンテキストは
acme.hcm
です。次に、ユーザーが「給与はいくらですか」と尋ねます。スキル・コンテキストが報酬に変わりますが、グループ・コンテキストはacme.hcm
のままです。 - ユーザーの現在のコンテキストは福利厚生スキルです。つまり、現在のグループ・コンテキストは
acme.hcm
です。ユーザーが「どのような販売機会がありますか」と尋ねます。このリクエストは、現在のスキルだけでなく、HCMグループのすべてのスキルのドメイン外です(ただし「機会」が採用スキルと一致する可能性があります)。ユーザーは最上位の一致である商談にルーティングされます。これは、acme.sales
グループ・コンテキストにあります。
例: スキル・グループ間のコンテキスト認識 🔗
スキル・グループ間のルーティングのコンテキスト認識の例を次に示します:
-
ユーザーが「受けられる福利厚生は何か」と入力すると、
acme.hcm
グループに含まれる福利厚生スキルが起動されます。ユーザーのコンテキストは、福利厚生スキルおよび
acme.hcm
グループです。 -
ユーザーが「冗談を聞かせて」と入力すると、
acme.*
グループに割り当てられている汎用のChitChatスキルが起動されます。これで、ユーザーはChitChatスキル・コンテキストに移動します。これで、グループ・コンテキストは
acme.*
と一致するすべてのグループになります。これには、acme.hcm
(前に起動された福利厚生スキルを含む)とacme.sales
(商談スキルおよび取引先スキルで構成される)の両方が含まれます。 -
ユーザーが「受けられる福利厚生は何か」と尋ね、「別の質問があります」と続けます。
ユーザーがいるのは
acme.hcm
コンテキストです。このユーザーは福利厚生に関する質問のために前にこのコンテキストにいましたが、現在は、その他スキルのmisc.another.questionインテントにルーティングされました(このスキルはacme.*
グループに含まれます)。アスタリスク(
*
)を含むグループ名に属するスキルにユーザーが移動しても、ユーザー・グループ・コンテキストは同じままです(この例ではacme.hcm
)。その後、*
グループに属するスキルにルーティングされます。 - ユーザーが現在いるのは、共通機能を提供する「その他」というスキルのコンテキストです。これは
acme.*
グループに属しています。つまり、ユーザーの現在のグループ・コンテキストはすべてacmeグループ(acme.sales
およびacme.hcm
)です。現在のスキル・コンテキストはその他です。「どのような福利厚生を受けることができますか」とユーザーが入力します。現在のスキル・コンテキストは、acme.hcm
グループに属する福利厚生に変わります。
コンテキスト固定 🔗
ユーザー入力にスキルの明示的な起動が含まれているがインテント関連の発話がない場合、ルーターによって会話は次のユーザー入力のためにそのスキルに固定されます。これは、次の発話はそのスキルに関連すると想定されるため、異なるスキルからのインテントはルーターによって考慮されないことを意味します。
ユーザーがそのスキルに関連しないことを入力した場合、ルーターによってそのスキル内の未解決インテントとして処理されます(それが異なるスキルのインテントと適切に一致する場合でも)。(exit
インテントは例外です。これは常に考慮されます。)その後、固定は解除されます。そのため、次にユーザーがその入力を繰り返すか固定されたコンテキストに関連しない別のことを入力した場合、すべてのフローが再度考慮されます。
ユーザーが予期されたとおりに行動した場合の機能について、次の例を考えてみましょう:
-
ユーザーが「ピザ・スキルに移動」と入力します。これはピザ・スキルの明示的な起動です。(発話にスキルの名前を含めると、明示的な起動になります。)
この時点で、会話はピザ・スキルに固定され、デジタル・アシスタントはピザ・スキルのみで一致を検索します。
-
次に、ユーザーは「オーダーしたい」と入力します。
デジタル・アシスタントは、ピザ・スキルのOrderPizzaインテントに対する一致を見つけ、ピザをオーダーするためのフローを開始します。
この時点で、固定は解除されます。
次に、ユーザーが予期されたとおりではない方法で進行した場合の機能の例を示します:
-
ユーザーが「ピザ・スキルに移動」と入力します。これはピザ・スキルの明示的な起動です。
この時点で、会話はピザ・スキルに固定されます。
-
次に、ユーザーが「送金する」と入力します。
この入力は、ピザ・スキル内のどれとも一致しないため、ルーターによってピザ・スキル内の未解決インテントとして処理されます(
unresolvedIntent
のフローの設計方法に応じて、ユーザーは明確化を求められます)。適切な一致がある場合でも、他のスキル(財務スキルなど)からのインテントは無視されます。ピザ・スキルからの固定は解除されます。
-
ユーザーは送金するためのリクエストを繰り返します。
財務スキルで一致が検出され、送金フローが開始されます。
ウィン・マージンおよびすべて考慮 🔗
ユーザー入力が複数の候補スキルと一致するケースを管理できるように、次のルーティング・パラメータを調整できます:
-
信頼度ウィン・マージン: 最上位の候補スキルの信頼度スコアと(同じく信頼度しきい値を超えている)下位の候補スキルの間の信頼度スコアの最大差異(それらの下位の候補スキルを考慮するため)。組込みのデジタル・アシスタントのインテント(help、exitおよびunresolvedIntent)も考慮されます。
たとえば、これが10% (.10)に設定されており、最上位の候補スキルの信頼度スコアが60%である場合、信頼度スコアが50%から60%の他のスキルも考慮されます。
-
すべてのしきい値を考慮: 一致するすべてのインテントとフローを考慮するために必要な最小信頼度スコア。また、この値はウィン・マージンよりも優先されます。(このような高い信頼度がある場合、ユーザーがどのフローを使用するかは確実には把握できません。)
たとえば、これが70% (.70)に設定されており、信頼度スコアが71%と90%の候補スキルがある場合、「信頼度ウィン・マージン」パラメータの値に関係なく、両方の候補スキルが考慮されます。
中断 🔗
デジタル・アシスタントは、非シーケンサを処理するように設計されています。これは、ユーザーがデジタル・アシスタントの最新のレスポンスに直接関連しない入力を行う場合です。たとえば、ユーザーがピザをオーダーしている最中に、ピザの支払いができるかどうか確認するために、銀行口座の残高を突然質問することがあります。デジタル・アシスタントは、異なるフローへの遷移を処理してから、ユーザーを元のフローに戻すことができます。
-
ルーティングを決定する前に、デジタル・アシスタントは常に次のことをリスニングします:
-
フローを終了するユーザー試行
-
他のスキルの明示的な起動
システムの終了インテントの信頼度スコアまたは別のスキルの明示的な起動が適切なしきい値を満たしている場合、デジタル・アシスタントはただちに対応するインテントに再ルーティングします。
-
-
ユーザーが終了しようとしたり、別のスキルを起動しようとしなくても、現在の状態がユーザーのインテントを解決できない場合、デジタル・アシスタントはすべてのスキルに照らしてユーザーの入力を再評価し、適切なスキルおよびインテントに再ルーティングします。
これは次の理由で発生する可能性があります:
-
コンポーネントへの無効な入力。
組込みコンポーネントの入力の検証方法の詳細は、ユーザー・メッセージの検証を参照してください。
カスタム・コンポーネントの入力の検証方法の詳細は、コンポーネントがデジタル・アシスタントで機能することを確認するを参照してください。
-
(YAMLモードでフローが設計されているスキルの場合)
System.Intent
コンポーネントへの明示的な遷移。
-
スキルのSystem.Intent
コンポーネントへのコールの強制
🔗
フローの中断は、ユーザーが急に同じスキルの別のフローに移動する必要が生じたり、まったく別のスキルに移動する必要が生じた場合に発生する可能性があります。YAMLベースのスキルでは、ユーザーが別のスキルに移動する必要がある中断をサポートするために、デフォルトでは、デジタル・アシスタントは、現在のフローが終了する前に(return
遷移がフロー内でコールされる前に)、スキルのSystem.Intent
コンポーネントに行われるコールをインターセプトします。
たとえば、スキルのダイアログ・フローのこのコードには、ピザのオーダーとパスタのオーダーのボタンに対応するアクションがあります。ただし、ユーザーがいずれかのボタンをクリックするかわりにメッセージを入力した場合の処理を行うtextReceived: Intent
アクションもあります。
ShowMenu:
component: System.CommonResponse
properties:
metadata: ...
processUserMessage: true
transitions:
actions:
pizza: "OrderPizza"
pasta: "OrderPasta"
textReceived: Intent
このようなスキルが(デジタル・アシスタントではなく)単独で実行され、ユーザーがテキストを入力した場合、スキルによってSystem.Intent
がコールされ、ユーザーの入力が評価されて適切なレスポンスが提供されます。ただし、デジタル・アシスタント内では、デジタル・アシスタントのすべてのスキルのインテントが評価で考慮されます(デフォルト)。
デジタル・アシスタントでSystem.Intent
へのコールをインターセプトしないケースの場合は、System.Intent
コンポーネントのdaIntercept
プロパティを"never"
に設定します。例:
daIntercept: "never"
このは、YAMLモードで設計されたダイアログ・フローにのみ適用されます(ビジュアル・フロー・デザイナにはSystem.Intent
コンポーネントと同等のものがないため)。
daIntercept
プロパティの値が会話の状態に依存するようにするには、ダイアログ・フローで変数を設定します。たとえば、プロパティの値を${daInterceptSetting.value}
に設定できます。ここで、daInterceptSetting
は、ダイアログ・フローで定義した変数であり、会話でのユーザーのフローの過程に応じて値("always"
または"never"
)が割り当てられます。
あるスキルから別のスキルへの直接ルーティング 🔗
デジタル・アシスタントで別のスキルを直接コールできるように、スキルのダイアログ・フローを設計することが可能です。たとえば、ピザのオーダー・スキルには、ユーザーがオーダーを完了する前に銀行残高を確認できるボタンを含めることができます。
ユーザーがスキルで別のスキルに進むオプションを選択すると、デジタル・アシスタントは2番目のスキルへのルーティングと元のスキルに戻るルーティング(2番目のスキルのフローが完了した後)の両方を提供します。
YAMLダイアログ・フローからの別のスキルからのスキルのコールを参照してください。
終了プロンプトの抑制 🔗
exit
インテントが検出されると、ユーザーは、通常、終了の希望を確認するよう求められます。
exitインテントの信頼度スコアが特定のしきい値に達したときにユーザーが確認プロンプトなしで終了できるようにするには、「終了プロンプトの信頼度しきい値」パラメータの値を変更します。(デフォルトでは、このパラメータは1.01 (101%の信頼度)に設定されており、終了プロンプトは常に表示されます。)
ルーティング・パラメータ 🔗
デジタル・アシスタントのスキル(およびそのインテント)の構成によっては、デジタル・アシスタントのルーティング・パラメータの値を調整して、デジタル・アシスタントがユーザー入力に応答する方法の管理を向上させる必要がある場合があります。
ルーティング・パラメータの値は、すべて0 (0%の信頼度)から1 (100%の信頼度)までです。
次に、デジタル・アシスタントのルーティング・パラメータのサマリーを示します:
- 組込みシステム・インテントの信頼度しきい値: 組込みシステム・インテント(helpやexitなど)の照合に必要な最小信頼度スコア。プラットフォーム・バージョン20.12以降のデフォルト値: 0.9。プラットフォーム・バージョン20.09以前のデフォルト値: 0.6。
ノート
プラットフォーム・バージョン20.09以前に基づいたデジタル・アシスタントがあり、そのデジタル・アシスタントの新しいバージョンまたはクローンをプラットフォーム・バージョン20.12以降で作成した場合、このパラメータの値は新しいデジタル・アシスタントでは0.9に更新されます。元のデジタル・アシスタントで値を変更していた場合でも同様です。 - 候補スキルの信頼度しきい値: 候補スキルの照合に必要な最小信頼度スコア。デフォルト値: 0.4
-
信頼度ウィン・マージン: 最上位の候補スキルの信頼度スコアと(同じく信頼度しきい値を超えている)下位の候補スキルの信頼度スコアとの間の最大差異(それらの下位の候補スキルを考慮するため)。組込みのデジタル・アシスタントのインテント(help、exitおよびunresolvedIntent)も考慮されます。デフォルト値: 0.1
同じように動作するスキルに対して個別の「信頼度ウィン・マージン」パラメータがありますが、スキル内のインテントの信頼度スコアに適用される場合は除かれます。
-
すべてのしきい値を考慮: 一致するすべてのインテントとフローを考慮するために必要な最小信頼度スコア。また、この値はウィン・マージンよりも優先されます。(このような高い信頼度がある場合、ユーザーがどのフローを使用するかは確実には把握できません。)デフォルト値: 0.8
-
現在のコンテキストのみを考慮するためのしきい値: 現在のスキルとデジタル・アシスタントのexitインテントのみを考慮するときに必要な最小信頼度スコア。ユーザー入力がこのしきい値を超えるインテントに一致した場合、他のインテントは信頼度しきい値に達した場合でも考慮されません。
この設定は、複数のスキルのインテントと一致するユーザー入力のあいまい性解消のプロンプトを回避するために役立ちます。たとえば、ユーザー入力の「オーダーの取消し」は、複数の食料品配達スキルのインテントと一致する可能性があります。デフォルト値: 0.8
-
明示的な起動の信頼度しきい値: スキルの明示的な起動を含む入力の照合に必要な最小信頼度スコア。デフォルト値: 0.8
-
終了プロンプトの信頼度しきい値: ユーザーの確認を求めずに終了するために必要な最小信頼度スコア。デフォルト値の1.01は、名目上は信頼度しきい値の0から1までの範囲外に設定されていますが、これによって確認プロンプトが常に表示されるようになります。終了の信頼度スコアが高いときに確認プロンプトなしでユーザーが終了できるようにする場合は、これを適切なしきい値まで低くしてください。デフォルト値: 1.01
デジタル・アシスタントのルーティング・パラメータに加え、スキル用の次のルーティング・パラメータもあります。
- 信頼度しきい値: スキルのインテントをユーザー入力と照合するために必要な最小信頼度スコア。一致がない場合、遷移アクションは
unresolvedIntent
に設定されます。デフォルト値: 0.7 - 信頼度ウィン・マージン: 信頼度しきい値を超えている最上位のインテントのみが選択されます(それが信頼度しきい値を超えている最高ランクのインテントである場合)。信頼度しきい値を超えている他のインテントのスコアが、ウィン・マージンを超えずに最上位のインテントの範囲内にある場合、それらのインテントもユーザーに表示されます。デフォルト値: 0.1
ルーティング・パラメータの調整 🔗
デジタル・アシスタントのルーティング・パラメータにアクセスするには:
-
をクリックしてサイド・メニューを開き、「開発」→「デジタル・アシスタント」を選択してデジタル・アシスタントを開きます。
-
デジタル・アシスタントの左側のナビゲーションで
をクリックし、「構成」タブを選択します。
スキルのルーティング・パラメータにアクセスするには:
-
をクリックしてサイド・メニューを開き、「開発」→「スキル」を選択して、スキルを開きます。
-
スキルの左側のナビゲーションで
をクリックし、「構成」タブを選択します。
テスターを使用してルーティングの動作を診断する例は、ルーティングの動作の実例を参照してください。また、デジタル・アシスタントでのルーティングの概要チュートリアルでは、これらのパラメータの動作の例も紹介しています。
リリース21.04以降では、テキスト値を持つプロパティに対してリソース・バンドル・キーが自動的に生成されます。これらのキーの値は、デジタル・アシスタントの「リソース・バンドル」ページで編集できます。デジタル・アシスタント左側のナビゲーションで

ルーティング・テスター 🔗
デジタル・アシスタントをテストする場合、テスターの「ルーティング」タブを開いて次を表示できます:
-
テスターで入力した発話と一致するインテント。
-
実行されたルーティング・ステップの概要。
-
ルーティングに適用されたルールのリスト。
-
一致したインテントとその信頼度スコアのリスト。
また、インテントの信頼度スコアと比較できるように、様々な信頼度しきい値設定の値が表示されます。
デジタル・アシスタントのルーティング・テスターを使用するには:
-
テストするデジタル・アシスタントを開きます。
-
ページ上部の「検証」および「トレイン」ボタンの近くにある
をクリックします。
-
「チャネル」ドロップダウンで、デジタル・アシスタントをデプロイするチャネルを選択します。
チャネルを選択することにより、このチャネルに適用される可能性がある制限を確認することもできます。
-
テスターの下部にあるテキスト・フィールドに、テスト・テキストを入力します。
-
テスターで、「ルーティング」タブをクリックします。
次に示すのは、テスターに「口座の残高」と入力した後の、ODA_Pizza_Financial_Retailサンプル・デジタル・アシスタントの「ルーティング」タブです。

ルーティングの動作の実例 🔗
次に、テスターを使用して、デジタル・アシスタントでルーティングがどのように動作するかを実証した例を示します。
例: フローへのルーティング 🔗
次に、デジタル・アシスタントがユーザーの入力を評価して会話を特定のフローにルーティングする標準的な例を示します。
最初に、ユーザーの入力とデジタル・アシスタントの初期レスポンスがあります:

この場合、デジタル・アシスタントからのレスポンス「How old are you?」は、ピザ・スキルのOrderPizzaフロー(ピザをオーダーするには、ユーザーが18歳以上である必要があります)の開始を示しています。
このレスポンスにつながるインテント評価は次のとおりです:

表示されているように、デジタル・アシスタントはピザ・スキルの強い一致(100%)および小売スキルの弱い一致(21.56%)があることを検出しました。
-
システム・インテントでの一致はありませんでした。
-
ピザ・スキルの強い一致(100%)と小売スキルの弱い一致(21.56%)がありました。
-
ピザ・スキルの一致が候補スキルの信頼度しきい値(40%)を超えたため、デジタル・アシスタントはピザ・スキルでフローを評価しました。
候補スキルの信頼度しきい値の値は、デジタル・アシスタントの構成設定で調整できます。そこへ移動するには、
をクリックして「構成」タブを選択します。
-
ピザ・スキルで、1つの一致(OrderPizza)が見つかりました。
-
その一致がピザ・スキルのフローの信頼度しきい値を超えたため(また、他に考慮する必要がある適格な一致がなかったため)、OrderPizzaフローが開始されました。
スキルの信頼度しきい値は、スキルのデジタル・アシスタント設定で設定できます。そこへ移動するには、スキルを開いて
をクリックし、「デジタル・アシスタント」タブを選択します。
例: スキル・インテントのあいまい性の解消 🔗
次に、ユーザーにインテントの明確化を求める必要がある場合を示す簡単な例を示します。
まず、次の会話があるとします:

表示されているように、デジタル・アシスタントはユーザーが行いたいことが明確でないため、ユーザーにいくつかのオプションから選択する(あいまい性を解消すること)を求めるプロンプトを表示します。
テスターの「インテント・コール」セクションで、デジタル・アシスタントがこのプロンプトを表示することにつながったデータを確認できます。財務スキルと小売スキルの両方の候補スキルが高スコア(100%)を獲得しました。次に、これらの各スキルについて、やはり高スコア(同じく100%)の候補フローがルーターによって識別されました。

GiftCardBalanceおよびBalances候補フローは信頼度しきい値を超えており、そのスコアの差異が信頼度ウィン・マージンの値(10%)よりも小さいため、デジタル・アシスタントはこれらのインテントから選択するようユーザーに求めます。
例: 明示的な起動 🔗
次の例では、明示的な起動の使用が、現在のコンテキストなどの他の考慮事項に取ってかわることで、ルーティング動作にどこで影響するかを示します。
次の会話があるとします:

この場合、ユーザーはデジタル・アシスタントを使用して小売スキルでの残高の確認を開始しましたが、次に、小売スキルでのギフト・カードの残高を質問することに決めます。明示的な起動(起動名での起動。起動名も小売スキル
であり、これはデジタル・アシスタント内のスキルのページで設定されています)を使用するため、ユーザーが財務スキルのコンテキスト内であっても、ルーターによりインテントの解決時に小売スキルが優先されます。
テスターによってルーティング・ルールがコールされる場所を次に示します:

インテント・コールの処理方法を次に示します:

このイメージが示すように、現在のコンテキストで一致がありますが、無視されます。小売スキルのGiftCardBalanceの明示的な起動での一致(100%)が優先されます。
例: コンテキスト認識 🔗
テスターがコンテキスト認識ルーティング動作を表す方法の例を次に示します。

表示されているように、ユーザーは「what's my balance」という質問から始め、財務スキルと小売スキルの間であいまい性を解消するためのプロンプトを経由して、最終的に自分の当座勘定残高にたどりつきます。次に、ユーザーは再度「what's my balance」と入力しますが、今度はあいまい性解消のプロンプトを経由する必要はありません。「ルーティング」タブの情報が、その理由の説明に役立ちます。
このタブの「ルール」セクションに、次のように表示されています:

したがって、小売スキルから一致したインテントがあっても、それらは無視されます。「インテント・コール」セクションには一致したインテントがすべて表示されますが、「現在のコンテキスト」のエントリ(財務スキルのBalancesインテントのみが含まれています)が最終的なものです。

「現在のコンテキストのみを考慮するためのしきい値」の値は、デジタル・アシスタントの構成設定で調整できます。そこへ移動するには、をクリックして「構成」タブを選択します。
デジタル・アシスタントのテスト・ケース 🔗
会話テスターのテスト・スイート機能を使用して、テスト・スイートを作成し、テスト・ケースをそれらにコンパイルできます。テスト・ケースを作成するには、テスターで会話を記録するか、JSONで記述します。
これらのテスト・ケースは、デジタル・アシスタントのメタデータの一部のままであるため、バージョン間で保持されます。つまり、スキル・ストアから十分にプルしたデジタル・アシスタントには、一連のテストが含まれている場合があり、それらを実行すると、行った変更によってデジタル・アシスタントの基本機能が破損していないことを確認できます。
テスト・スイート機能は、スキルの場合と同様にデジタル・アシスタントでも機能します。詳細は、テスト・スイートとテスト・ケースを参照してください。
発話テスターによるルーティングのテスト 🔗
発話テスター(「スキル」ページで「発話のテスト」をクリックしてアクセス)を使用すると、テスト発話を入力して、デジタル・アシスタントのコンテキスト認識とそのルーティングをテストできます。スキル・レベルでの発話テストと同様に、発話テスターを個別のテストで使用することも、発話テスターを使用して各バージョンのデジタル・アシスタントにまたがるテスト・ケースを作成することもできます。
デジタル・アシスタントの発話テストの観点では、目的は会話フロー全体のテストではありません。(そのためには会話テスターを使用します。)かわりに会話のフラグメントをテストします。具体的には、デジタル・アシスタントが正しいスキルおよびインテントにルーティングするかどうか、および初期コンテキストから適切に遷移できるかどうかをテストします。
クイック・テスト 🔗
- 初期コンテキストのスキルを選択します。または、特定のスキル・コンテキストなしのテストでは「任意のスキル」を選択します(デジタル・アシスタントへの初回訪問をエミュレートするテストなど)。
- デジタル・アシスタントに登録されたスキルが複数のネイティブ言語をサポートしている場合は、テスト言語を選択します。
- テスト発話を入力します。
- 「テスト」をクリックし、ルーティング結果を確認します。このテストを破棄せずに、テスト・ケースとして追加できます。「テスト・ケースとして保存」をクリックしてから、テスト・スイートを選択します。その後、「テスト・ケース」ページ(「テスト・ケースに移動」をクリックしてアクセス)で、テスト・ケースにアクセスして編集できます。
テスト・ケース 🔗
スキル・レベルのテスト・ケースを作成する場合と同じ方法で、デジタル・アシスタントの発話テスト・ケースを作成できます。つまり、「新規テスト・ケース」ダイアログを使用して、クイック・テストをテスト・ケースとして発話テスターに保存します。このダイアログは、「+テスト・ケース」をクリックするかCSVをインポートすると開きます。ただし、デジタル・アシスタントのテスト・ケースは、スキルのルーティングとコンテキストの遷移、および予想されるインテントに焦点を当てているため、予想されるスキルと初期コンテキスト(デジタル・アシスタント内のスキル)の値を含みます。
テスト・ケースのテスト実行の作成は、スキル・レベルのテスト・ケースの作成と同様です。つまり、実行に含めるテスト・ケースをフィルタ処理でき、実行の完了後に結果および分布分析をレビューします。
ルーティング・テスト・ケースの作成 🔗
- 「+テスト・ケース」をクリックします。
- 「新規テスト・ケース」ダイアログに入力します:
- 必要に応じて、テスト・ケースを無効にします。
- テスト発話を入力します。
- テスト・スイートを選択します。
- 予想されるスキルを入力します。
- 予期されるインテントを選択します。
- デジタル・アシスタントに登録されているスキルが複数言語の場合は、言語タグと予想される言語を選択できます。
- 初期コンテキストを選択します。スキルを選択するか、コンテキストなしの場合は「任意のスキル」を選択します)。
- 「スイートに追加」をクリックします。その後、「テスト・ケース」ページでテスト・ケースを編集または削除できます。初期コンテキストと予想されるスキルを組み合せることで、コンテキスト認識をテストできます。これらの組合せを使用して、別のスキルへのリクエストの後でもユーザーのコンテキストが変わらないために、ユーザーがスキルで立ち往生する可能性があるかどうかを確認できます。コンテキストが設定されていない場合にデジタル・アシスタントがリクエストをルーティングする方法を確認するには、「任意のスキル」を選択します。
- 「スイートに追加」をクリックします。
システム・インテントのテスト・ケースの追加 🔗
追加の発話でシステム・インテントをトレーニングした場合は、システム・インテント固有のテスト・ケースを作成してインテント照合をテストできます。テスト・ケースが合格すると、システム・インテントに基づくコンテキスト・ルーティングが、更新されたトレーニングを考慮して保持されることを意味します。
- 「予想スキル」のデジタル・アシスタントを選択します。
- 「予想されるインテント」のシステム・インテント(終了、ヘルプ、unresolvedIntent)のいずれかを選択します。
ノート
ようこそシステム・インテントはテストできません。 - 特定のスキル・コンテキスト内のシステム・インテント・ルーティングを確認するには、「初期ルーティング」メニューのスキルから選択します。
デジタル・アシスタント・テスト・スイートのテスト・ケースのインポート 🔗
initialContent
およびexpectedSkill
列も含まれます:
testSuite
– テスト・スイートを指定しないと、テスト・ケースはデフォルト・テスト・スイートに追加されます。utterance
– 発話の例(必須)。expectedIntent
– 一致するインテント(必須)。enabled
–TRUE
の場合、テスト実行にテスト・ケースが含まれます。FALSE
の場合は除外されます。languageTag
– オプションexpectedLanguageTag
– オプションinitialContext
– スキルの名前、またはルーティング・コンテキストなしで発話をテストするにはAny Skills。expectedSkill
– このフィールドを空にするのは、unresolvedSkillの選択と等価です。