デジタル・アシスタントの構築
ここでは、デジタル・アシスタントを構築するための高度なベスト・プラクティスを示します。
デジタル・アシスタントは、機械学習を使用して、メッセージのコンテンツに最適な構成済スキルにユーザー・メッセージをルーティングします。このため、スキルに定義されているすべての発話は、そのスキルの分類子をトレーニングするために使用されます。そのため、デジタル・アシスタントでスキルをテストする前に、すべてのインテントに対して適切にトレーニングされたモデルがあり、スキルを徹底的にテストしていることを確認してください。
スキルにおけるunresolvedIntentのトレーニングについて
スキルのユーザー定義のunresolvedIntentインテントを作成し、ユーザー定義の発話でトレーニングできます。このオプションは、デジタル・アシスタントが導入される前に広く普及していました。デジタル・アシスタントを使用すると、この開発オプションは関連性を失い、不要になった可能性があります。しかし、理解するために、それが何であるか、どのように、そしてなぜ機能したかを説明しましょう。
スキルの未解決のインテントは、スキルが処理するように設計されているドメイン外のメッセージを処理します。このため、通常、ダイアログ・フローの状態をunresolvedIntentアクション遷移にマップして、スキルがリクエストを処理できなかったことをユーザーに通知します。
たとえば、ピザの注文や配送を処理するスキルは、財務トランザクションを処理することを意図していません。そのため、ユーザーがアカウントの残高を確認するメッセージを送信すると、未解決のインテントがリクエストを処理します。
次に、デジタル・アシスタントに2つのスキルが定義されているとします。1つはピザの注文と配送を処理するスキルで、もう1つは財務的なユース・ケースを処理するスキルです。ユーザーがアカウント残高を確認するリクエストを含むメッセージを送信した場合、デジタル・アシスタントはピザ・スキルではなく財務スキルに転送します。つまり、ピザ・スキルの未解決の意図が財務メッセージの処理に使用されなくなります。
さらに、同じデジタル・アシスタントについて、ユーザーが現在の天気に関する情報(ピザまたは財務スキルのいずれとも一致しない)を要求するとします。この場合、このリクエストを処理するスキルの未解決インテントはどれですか。「デジタル・アシスタントの未解決の意図」と叫んだとき、あなたはそれを正しく理解しました。
デジタル・アシスタントにスキルを追加し、デジタル・アシスタントをトレーニングすることで、構成された各スキルが処理するメッセージのタイプについてデジタル・アシスタントが学習します。デジタル・アシスタントは、メッセージのルーティング先のスキルを判断できない場合、未解決のインテントを処理するように構成されているレスポンスを表示します。
これは、スキルにカスタムのunresolvedIntentインテントを追加およびトレーニングするために何を意味しますか。これは、適切にトレーニングされたモデルでは、各スキルにカスタムのunresolvedIntentインテントを定義する必要がないことを意味します。そして、思い出として、すべてのスキルでよく訓練されたモデルを持つことは、「AIモデルデザイナー」の帽子を着ている人が目指すべきことです。
デジタル・アシスタントのスキルが処理すべきでないメッセージに誤って応答するまれなケースでは、カスタムのunresolvedIntentインテントを追加して、応答しなくなったスキルをトレーニングできるため、デジタル・アシスタントの未解決のインテント・メッセージが表示されるか、他のスキルのいずれかのインテントがリクエストを処理します。
カスタム未解決のインテントは、最後の手段としてのみスキルに作成することをお薦めします(つまり、テストによって、影響を受けるインテント・モデルを再トレーニングして解決できない問題が明らかになった場合)。
デジタル・アシスタントはペルソナのホームです
デジタル・アシスタントは、統一されたチャットボット・エクスペリエンスをユーザーに提供するため、定義したパーソナリティをすべての会話に一貫して存在させる必要があります。
リソース・バンドル
スキルと同様に、デジタル・アシスタントは複数の言語をサポートするように構成できます。デジタル・アシスタントは、サポートする言語をサポートするために構成されているすべてのスキルを必要とします。これには、ネイティブNLUベースまたは外部翻訳サービスの使用による言語サポートのタイプも含まれます。
ユーザー・メッセージをスキルにルーティングするときにデジタル・アシスタントによって表示されるすべてのプロンプトおよびメッセージは、リソース・バンドルから取得する必要があります。これらのメッセージを1箇所にまとめると、一貫性を確保し、編集を行い、翻訳者に渡すことが容易になります。
明確化と中断のダイアログ
デジタル・アシスタントは様々なスキルで構成されていますが、これらの技術的な詳細をユーザーに公開しないでください。Oracle Digital Assistantでは、ユーザー・メッセージが会話コンテキストを別のスキルまたはインテントに変更したとき、およびコンテキストが元の会話にリセットされたときにユーザーに表示される構成可能なダイアログを使用します。トランジション メッセージをロボット化しないように定義してください。
たとえば、非連続ルーティング中に表示されるメッセージは、デジタル・アシスタント設定でSwitching to ${system.routingToIntent} in ${system.routingToSkill} now
として定義されます。「経費」スキルで「経費の作成」インテントにナビゲートする場合、印刷されるメッセージは「Switching to create expense in expenses skill
」になりますが、これは人間が言う方法ではありません。
メッセージ・テンプレートをSure, let's ${system.routingToIntent} for you
に変更すると、ユーザー・メッセージはSure, Let's create a new expense for you
になります(メッセージの「新規経費の作成」部分は、スキル内のインテントに定義した表示名です)。
ただし、デジタル・アシスタント・レベルで印刷されるメッセージが常に意味的に正しく印刷されるように、すべてのインテントの表示名を設定する必要があります。したがって、デジタル・アシスタント設定パネルの「構成」タブで、すべてのメッセージを確認することをお薦めします。
-
ニーズに応じて既存のテンプレートを変更します。
-
カスタマイズしたテンプレートをリソース・バンドルに移動します。動的式をメッセージに追加する位置プレースホルダを追加します。例: "
Sure, let's {0} for you".
リソース・バンドル参照は、${rb('key_name', ${system.routingToIntent})}
として作成されます。 -
スキルのインテントに対して定義した表示名を確認し、デジタル・アシスタント構成で定義したメッセージ・テンプレートに適合していることを確認します。
-
スキルの「設定」ページで定義されているスキル起動名を確認し、名前もメッセージ・テンプレートでの使用に言語的に適合するようにします。
-
オプションで、「割込みプロンプト信頼度しきい値」などの設定を変更して、信頼度が低いときのみプロンプトを表示するか、完全に抑制するようにします。
-
構成設定で、信頼度しきい値を変更します。これにより、スキルが候補スキルとみなされるタイミングが決まります。このしきい値は、デフォルトより低い値に設定してから、徐々に増加することをお薦めします。あなたが探したいのは、悪いルーティングなしで自信を持ってすべてのスキルを解決する甘いスポットです。