生成フォールバック機能は、Google の最新の生成大規模言語モデル(LLM)を使用して、エンドユーザー入力がフォーム入力のインテントやパラメータと一致しない場合に仮想エージェントのレスポンスを生成します。
この機能は、LLM に応答方法を指示するテキスト プロンプトで構成できます。テキスト プロンプトは、事前定義されたものを使用することも、独自のプロンプトを追加することもできます。事前定義されたプロンプトでは、仮想エージェントが基本的な会話状況を処理できます。次に例を示します。
- ユーザーに開始の挨拶と終了の挨拶をします。
- ユーザーが理解できなかった場合は、エージェントの発言を繰り返します。
- ユーザーからリクエストされた場合は、会話を保持します。
- 会話を要約します。
生成フォールバックは、フロー、ページ、パラメータ入力時に使用される 不一致イベント ハンドラで有効にできます。不一致イベントに対して生成フォールバックが有効になっている場合、そのイベントがトリガーされるたびに、Dialogflow は生成されたレスポンスを生成しようとします。そのレスポンスはユーザーに返されます。レスポンスの生成に失敗した場合は、代わりに通常の所定のエージェント レスポンスが発行されます。
制限事項
この機能は、Vertex AI PaLM API でサポートされている言語で利用できます。
生成フォールバックを有効にする
フロー、ページまたはパラメータ入力時で使用できる 不一致イベント ハンドラでエージェントの生成フォールバックを有効にできます。
フロー全体の不一致イベントに対する生成フォールバックを有効にします。
- Dialogflow CX コンソールに移動
- プロジェクトを選択します。
- エージェントを選択してから、フローを選択します。
- フローの [スタート ページ] をクリックして展開します。
- [イベント ハンドラ] で [sys.no-match-default] をクリックします。
- [エージェント レスポンス] で [生成フォールバックの有効化] をオンにします。
- [保存] をクリックします。
特定の不一致イベントで、生成フォールバックを有効にします。
- ターゲットの不一致イベント ハンドラに移動します(不一致で始まるイベント、不一致のデフォルト、不一致 1など)。
- [エージェント レスポンス] で [生成フォールバックの有効化] をオンにします。
- [保存] をクリックします。
生成フォールバックを構成する
前述のとおり、フォールバック機能は、生成されたレスポンスを生成するために大規模な言語モデルにリクエストを渡します。リクエストは、テキスト プロンプトの形式をとり、自然言語と、エージェントの現在の状態と会話に関する情報が混在したものです。プロンプトと生成されたレスポンスは、禁止されたフレーズのリストと照合されます。禁止されたフレーズが含まれている場合や安全ではないと考えられる場合、生成は失敗し、代わりに通常の所定のレスポンス(同じ入力でエージェントが述べたレスポンス)が発行されます。
この機能は、複数の方法で構成できます。
- 定義済みのプロンプトを選択します。
- カスタム プロンプトを定義します。
- 禁止するフレーズのリストからフレーズを追加または削除します。
プロンプトを作成する際、生成する必要があるコンテキストの種類の自然言語説明に加えて、次のプレースホルダも使用できます。
用語 | 定義 |
---|---|
$conversation | エージェントとユーザー間の会話(最後のユーザーの発話を除く)。 |
${conversation USER:"<ユーザー接頭辞>" AI:"<エージェント接頭辞>" TURNS:<ターン数>} | $conversation プレースホルダのパラメータ化されたバージョン。エンドユーザー接頭辞(USER )、エージェント接頭辞(AI )、以前のターンをいくつ含めるか(TURNS )をカスタマイズできます。すべてのプレースホルダ パラメータ値を指定する必要があります。例: ${conversation USER:"Human says:" AI:"Agent says:" TURNS:4} |
$last-user-utterance | 最後のユーザーの発話。 |
$flow-description | アクティブ フローのフローの説明。 |
$route-descriptions | アクティブなインテントのインテントの説明。 |
適切なフローとインテントの説明を含めるようにします。
事前定義されたプロンプトを選択する
- エージェントの設定 で [生成 AI] タブに移動し、[生成フォールバック] サブタブに移動します。
- [テンプレート] プルダウンでいずれかのオプションを選択します。
- [保存] をクリックします。
この機能には、2 つのテンプレート プロンプトが用意されています。デフォルトのテンプレート(表示できません)とサンプル テンプレート(独自のプロンプトを作成するためのガイドとして機能します)です。
独自のプロンプトを定義する
- エージェントの設定 で [生成 AI] タブに移動し、[生成フォールバック] サブタブに移動します。
- [テンプレート] プルダウンで [+ new template] を選択します。
- [テンプレート名] を追加します。
- テキスト プロンプトを追加します。
- [保存] をクリックします。
最初にサンプル テンプレートを編集して、新しいテンプレートとして保存することもできます。
- [テンプレート] プルダウンで [サンプル] を選択します。
- [編集] をクリックします。
- [テンプレート名] を編集します。
- テキスト プロンプトを編集します。
- [保存] をクリックします。
禁止するフレーズのリストを変更する
- エージェントの設定 で [生成 AI] タブに移動し、[全般] サブタブに移動します。
- [禁止フレーズ] セクションで、リストからのフレーズの検査、追加、または削除を行います。
- [保存] をクリックします。
生成ォールバックをテストする
シミュレータで生成フォールバック機能をテストできます。不一致イベントが生成レスポンスを生成(および生成が成功する)するように構成されたフロー/ページで、ユーザーの発話が不一致になるたびに、エージェントは生成されたレスポンスを出力します。
Codelab
生成フォールバック Codelab もご覧ください。
トラブルシューティング
機能をデバッグする場合は、Dialogflow コンソールのシミュレータで、解決された大規模言語モデル(LLM)の入力プロンプトを調べることができます。
[元のレスポンス] ボタンをクリックします。
[Generative Fallback Prompt] フィールドを見つけます。これらのフィールドを書式なしテキストとして読み込み、LLM 入力が理にかなっているかを確認します。フレーズに
$
が含まれる場合、シミュレータの入力を調べて、プロンプト内の$
が意図的なものかどうかを明確にします(例:price is $10
の$
が意図的であると考えられるものの、visit $city
は意図的ではなく、誤用またはバグを示していると考えられる場合)。ご不明な点がある場合は、サポートにお問い合わせください。デフォルト以外のプロンプト テンプレートを使用しているものの、[Generative Fallback Prompt] フィールドが表示されない場合は、サポートにお問い合わせください。