エージェントの設計

このページでは、ビジネスの目的に対応した高品質エージェントを設計するためのガイダンスを説明します。

エージェントを構築する前に

このセクションでは、エージェントの構築を開始する前に検討しておく必要がある内容について説明します。

目的

エージェントの全体的な目的を検討します。

  • ビジネスで達成しようとしている目標は何か?
  • ユーザーはエージェントに何を期待しているか?
  • ユーザーがエージェントとやり取りする頻度はどの程度か?

プラットフォーム

ユーザーがエージェントにアクセスする方法を検討します。コンテンツを作成する前に、Dialogflow でサポートされているプラットフォームを確認します。サポートするプラットフォームを選択したら、それに応じてコンテンツを準備します。Dialogflow のプラットフォーム統合の中には、画像、リンク、候補ワードなどの要素を組み込める高度なメッセージがサポートされているものもあります。

エージェントを反復方式で構築する

大規模または複雑なエージェントの場合は、最初に最上位のリクエストのみを扱うダイアログを作成します。基本構造を確立したら、会話パスを反復して、ユーザーが辿る可能性のあるすべてのルートを網羅していることを確認します。

Prebuilt Agent

Dialogflow には、使い始める際に役立つあらかじめ作成されたエージェントが用意されています。これらの既製エージェントは、ホテルの予約、ナビゲーション、オンライン ショッピングなどの一般的なユースケースに対応します。こうしたエージェントには、最も一般的なユーザークエリに対応するインテントとエンティティが組み込まれています。企業独自のレスポンスを追加すれば、機能するエージェントをすぐに構築できます。

システム エンティティ

ユーザーがリクエストを送信したら、その内容から解析すべき重要な情報があります。Dialogflow では、こうした情報はエンティティと呼ばれます。特にシステム エンティティは、Dialogflow が提供する既製エンティティであり、最も使用頻度が高い種類の情報が処理されます。

Small Talk

ダイアログを開発する際に、トピックから外れたリクエストの処理が検討されることもあります。Dialogflow には、Small Talk と呼ばれるオプション機能があります。この機能を有効にすると、エージェントは一般的な会話、感情的な反応、エージェント自体に関する質問に対応できるようになります。ブランドに適したエクスペリエンスが提供できるように、Small Talk のレスポンスはすべてカジュアルにも、ビジネスライクにも、あるいはその中間にもカスタマイズできます。

エージェント設計のベスト プラクティス

このセクションでは、堅牢で正確、高パフォーマンスで実用的なエージェントを設計するためのベスト プラクティスの一覧を示します。

挨拶と結びの言葉

ベスト プラクティス 詳細
Welcome Intent に、ブランディングを反映した上でエージェントの機能をユーザーに知らせる。 エージェントの Welcome Intent で、エージェントがサポートできる 2~3 のタスクをユーザーに知らせ、それらの機能の使い方を(必要に応じて)簡単に説明する必要があります。
やり取りが正常に終わった時点で、エージェントが適切なメッセージで終了するようにする。 ユーザーがエージェントでのタスクを完了したら、エージェントがトランザクション / タスクの概要をまとめ、「またお会いしましょう」などの言葉をかけるようにします。

機械学習とトレーニング

ベスト プラクティス 詳細
インテントには(インテントの複雑さに応じて)少なくとも 10~20 のトレーニング フレーズが必要です。 各インテントに必要な実際のトレーニング フレーズの数は、エージェントの複雑さに応じて決まりますが、(インテントの複雑さに応じて)10~20 は最小値として適切です。インテントに含まれるパラメータの数が多いほど、機械学習モデルのトレーニングに提供するフレーズの数を増やす必要があります。
多種多様なトレーニング フレーズを含める。 行われる可能性がある多種多様なリクエストに対応できるよう、フレーズには、質問、命令、動詞、よく使われる名詞の類義語のバリエーションを含めてください。
アノテーションに一貫性を持たせる。
  • トレーニング フレーズを調べ、強調表示されているアノテーションが適切なエンティティを指していることを確認します。
  • トレーニング フレーズには、アノテーションが付いている場合とそうでない場合があるテキストが含まれないようにする必要があります。
  • アノテーションに選択されたテキストの範囲には、エンティティと一致する必要があるテキストをすべて、そしてそれだけを含んでいる必要があります。
  • 複数のトレーニング フレーズのアノテーション付きテキストに、トレーニング フレーズの類似部分が含まれていることを確認してください。たとえば、「午前 6 時にアラームを設定」というトレーニング フレーズがあるとします。その場合、「午前 6 時」は @sys.date としてアノテーションされます。この場合、別のトレーニング フレーズ「午前 7 時に起こしてください」では、「午前 7 時」にアノテーションを付けますが、「午前 7 時に起こして」にはアノテーションを付けません。
カスタム エンティティには、さまざまな例を含める必要があります。 エンティティとは、アイテムのリストのことです。文法上の形態は機械学習で対処できますが、エンティティには考えられるすべてのアイテムを含める必要があります。また、[Define synonyms] オプションをオンにして、いくつかのバリエーションを含めてください。
ML を無効にするインテントの数を可能な限り少なくする。 ML が無効なインテントのトレーニング フレーズは、エージェントのトレーニング時には使用されません。ML が無効なインテントのトレーニング フレーズと非常によく似たユーザークエリは、ML が有効な他のインテントがそのユーザークエリとわずかに似ている場合、誤ったインテントに一致することがあります。誤検知の問題がある場合は、ML を無効にする代わりに ML 分類しきい値を増やしてください。
トレーニング データが非常に少ないエージェントに、高い ML 分類しきい値を設定しないようにする。 しきい値が高く、トレーニング データがそれほど多くない場合は、トレーニング フレーズとほぼ完全に一致するユーザークエリのみがインテント マッチングになります。高いしきい値が必要な場合は、大量のトレーニング データを提供する必要があります。
エージェントにフォールバック インテントを含める。 フォールバック インテントがないと、一致しないユーザークエリは空のレスポンスになります。
エージェントがネガティブ サンプルを提供するようにする。 ネガティブ サンプルは、トレーニング フレーズにわずかに似ているユーザークエリが、誤ってインテントに一致することを防止します。
実質的に何にでも一致するエンティティを定義しない。 このようなエンティティでは、ML のパフォーマンスと品質が低下します。トレーニング フレーズのほぼすべてが、一致候補として評価されます。代わりに @sys.any の使用を検討してください。同様に、複合エンティティには類義語として単一の @sys.any を含めないでください。
つなぎ言葉や意味のないテキストで構成されているエンティティを定義しない。 つなぎ言葉や意味のないテキストの例には、「うーん」、「どうでしょう」、「どうか」、「してくれませんか」などがあります。このようなエンティティを使用して変化形に対応しようとしても、ML のパフォーマンスが低下するだけです。Dialogflow は、このような変化形を処理できるようにデータを拡充しています。このようなフレーズは、エンティティではなくトレーニング フレーズに追加してください。
エンティティは、1 つの種類の情報の個別値を把握するためスコープを限定する必要があります。 エンティティは短く、簡潔性を保持します。エンティティ値が複雑な場合は、インテントのトレーニング フレーズが状況に適しているからである可能性があります。たとえば、「プラン A で国際電話をかけるにはどうすればよいですか」「プラン B での国際データ ローミングを使用」といったエンドユーザーの表現を考えてみましょう。エンティティは、アクション(「国際電話のかけ方」、「国際データ ローミングを使用」)とプラン(「プラン A」、「プラン B」)の両方に作成しないでください。その代わり、トレーニング フレーズやインテント マッチングを使用して、プランを取得するアクションやエンティティを取得します。
トレーニング フレーズではさまざまなテキストにアノテーションを付ける。 たとえば、トレーニング フレーズで @sys.time システム エンティティと解析される時間値を指定している場合、すべてのトレーニング フレーズに同じ時間を指定しないでください。トレーニング フレーズには、「午前 7 時」、「午後 8 時」「9 時」など、さまざまな時間が含まれている必要があります。
多数のパラメータが指定されているインテントには、多数のトレーニング フレーズも含める。 原則として、トレーニング フレーズの数は(インテントの複雑さに応じて)10~20 個以上とし、さらにパラメータ数の 3 倍以上にする必要があります。
各パラメータを多数のトレーニング フレーズで使用する。 原則として、各パラメータを 5 つ以上のトレーニング フレーズで使用してください。
1 つのトレーニング フレーズ内での複数の @sys.any エンティティの使用を避ける。 1 つのトレーニング フレーズに、2 つの連続する @sys.any または合計 3 つの @sys.any エンティティを含めないでください。Dialogflow ではこのようなエンティティを区別できない可能性があります。
異なるインテントで類似するトレーニング フレーズを使用しない。 異なるインテントに類似のトレーニング フレーズを含めないでください。このようにすると、Dialogflow がそのようなフレーズの認識方法を学習できなくなります。
自動スペル修正を有効にする。 テキスト入力を使用している場合は、自動スペル修正を有効にしてください。
複合エンティティをネストしない。 複合エンティティでは複数レベルのネストを使用しないでください。各ネストレベルの品質が大幅に低下します。
トレーニング フレーズに特殊文字を使用しない。 トレーニング フレーズに特殊文字({_#[ など)が含まれている場合、これらの文字は無視されます。絵文字は例外であり、予期されているとおりに機能します。

有用なインテントの特徴

ベスト プラクティス 詳細
エージェントが、コンテキストを補う必要がある質問にも対応できるようにする。 たとえば、天気予報のリクエストを処理するエージェントに対して「サンフランシスコの天気」と尋ねた場合、「明日はどうですか」など、それに続くリクエストをサポートするコンテキストを確実に追加してください。
エージェントで、「はい」、「いいえ」、「キャンセル」、「次へ」、「戻る」などのフォローアップを使用する。 一般的なレスポンスに対応するには、フォローアップ インテントを使用します。フォローアップ インテントを追加するには、インテントにカーソルを合わせて、[Add follow-up] をクリックします。
すべてのインテントに 1 つ以上のテキスト レスポンスを設定する。 レスポンス セクションはインテントのページの下部にあります。バリエーションを追加すると、選択されるレスポンスがシャッフルされ、同じレスポンスが繰り返される頻度が少なくなります。
ユーザーのリクエストに応えるために必要なすべての情報をエージェントで収集する。 必要なパラメータを必須パラメータにすることを検討してください。その場合、エージェントは必要な情報を取得するまで、ユーザーに情報の入力を求め続けます。この動作は、スロット充填と呼ばれます。
注文を確認する場合など、必要に応じてレスポンスで情報を繰り返す。 ユーザーが注文や情報変更などのリクエストを行った場合、エージェントは確認のために、リクエストされた内容を繰り返す必要があります。こうした確認のためのレスポンスを作成する際は、繰り返す可能性があるエンティティとパラメータの組み合わせをすべて含めるようにしてください。

会話の修正

ベスト プラクティス 詳細
エージェント用に、会話の各段階で認識できなかった場合に役立つメッセージを用意する。 たとえば、最初のプロンプトが「何色にしますか」の場合に、ユーザーが「ジャングルのオウム」と返答すると、フォールバック / フォローアップ インテントによって「申し訳ありませんが、どのような色ですか?」などの質問に言い換える必要があります。
エージェントのデフォルトのフォールバック インテントに、カスタマイズされたブランド固有のレスポンスを含める。 ユーザーがインテントと一致しないことを言った場合、デフォルトのフォールバック インテントで対応します。ブランドを反映するようにこのフォールバック インテントをカスタマイズするとともに、有効なリクエストを行うようユーザーを導く情報を提供してください。
カスタマイズされているフルフィルメントの場合、エージェント用に、ユーザーが情報を繰り返せるようにするためのインテントを用意する。 1 つのインテントで、「もう一度言って」、「繰り返して」、「もう一度再生して」などのリクエストに対処できます。これは、フォローアップ インテントにできます。

ペルソナ

ベスト プラクティス 詳細
エージェントの返答を、ブランドに合ったスタイルと語調で、エージェント全体で一貫しているようにする。 ユーザーがエージェントと会話する際、1 人の人物と話しているように感じなければなりません。すべての返答に、エージェントとしての資質と個性が表れるようにしてください。
エージェントでは、文化、性別、信仰、能力、年齢などを慎重に考慮する。 固定概念を持ったまま作成すると、冗談であってもユーザーの反感を買って、ユーザーが二度とエージェントを利用しなくなる可能性があります。

テスト

ベスト プラクティス 詳細
アプリ開発に関わっていない人とアプリを徹底的にテストする。 エージェントをよく知らない人物にアプリを使ってもらうと、会話の流れがどれだけ自然であるかについての見識を得ることができます。正確さ、長い休止、欠落している会話パス、ペース、ぎこちない遷移などに注意してもらいます。
サポート予定のすべてのプラットフォームでアプリをテストする。 エージェントが 1 つ以上のプラットフォームで利用可能である場合、そのすべてのプラットフォームで高度なメッセージとレスポンスが正常に表示されることを確認してください。

その他の会話デザインガイド

Actions on Google チームが提供する会話デザインガイドをご覧ください。