シナリオ会話の作成
このチャプターのゴール
- シナリオ会話の作り方について理解ができている
シナリオとは
シナリオ対話とは、会話のシナリオ(フロー)を予め設定し、それに沿った会話を行うことができる機能です。
シナリオ対話の意義
LLM強しだが、シナリオ対話はなぜ重要か
強力なLLMの登場によって、AIが人間と遜色ないレベルの会話ができるようになったのは、周知の事実かと思います。AIの会話能力は、シナリオやルールベースの応答の設定をせずとも、自然に会話ができる域に達しています。
世の中には、シナリオに沿ってだけ会話を進めるチャットボットが数多くあります。
生成AIの台頭で、すぐに今世の中に出回っているチャットボットをすぐに置き換えられるかというと、そうでもありません。いくつかの理由がありますが、1つの理由は、そういったチャットボットへの期待要件は「フリートーク」ではないことです。
チャットボットには必ず行わせたい要件がありますし、ユーザーから必要な情報を聞き出さなくてはなりません。チャットボットは管理者にとってコントローラブルなものではないといけないと言うことです。生成AIベースのチャットボットはアンコントローラブルな側面も強く、提供者側としては扱いづらいこともあるのです。
扱いづらい理由
・何でも話せるがゆえに、話題が制御しきれない (話題の制御)
・会話のラリーがどこまで増えるかわからない (コスト面の懸念)
miiboのシナリオ対話機能は、生成AIの自由度は残しつつ、最低限コントロールしたい会話の流れを制御するのに向いています。また、部分的にAIを用いない応答の設定も可能で、コスト最小化の観点でも重要な機能となります。
シナリオ対話の作成方法
1. 作成
「会話の設定」->「シナリオ対話の設定」に移動し、「新しいシナリオの作成」をクリックします。
シナリオの名前とトリガーを設定します。
シナリオのトリガー
作成するシナリオに入るためのトリガーです。この条件にマッチすると、シナリオを外に出るまで、シナリオの中で設定された会話が行われます。
1. 会話の開始と同時に呼び出す
チャット画面が読み込まれた時、発火します。
Webチャット画面はブラウザ読み込みを会話の開始とみなします。(クエリーパラメーターで発話を指定していない場合)LINEやSlackでの会話は、初回のみ会話の開始とみなされます。
※ API経由の会話の場合、utterance=""の空文字が指定された場合が、発話開始とみなされます。
2. 発話の一致による発火
- 特定の発話があった場合
- 特定の発話が含まれた場合
ユーザーの発話がある文字列にマッチしたり、部分一致した場合に発火します。
3. ステートによる発火
- 特定のステートが存在する場合
- 特定のステートが存在しない場合
- 次のステートの値が一致する
- 次のステートの値が含まれる
ユーザーのステートによって条件が設定できます。特定のステートが登録された後、シナリオに入らせたいときなどに有効です。
例:
- ユーザーのステータスが「興味あり」になったら発火させる
2. アクション(ノード)と条件の設定
アクション
シナリオエディタ上で表示される、□の単位をアクションと呼んでいます。
(※ 旧呼称は「ノード」)
条件
アクションは条件の線で接続されます。
条件はアクション間を遷移するために指定されます。
※ その後の条件が設定されていないアクションは、AIの発話後にシナリオから離脱します。
※ その場で会話を終了させることも可能 (終端アクションの設定)
アクションの種類
アクションの種類は3種類です。
- 開始アクション
シナリオ開始時に呼び出されるアクションです。シナリオ開始時は、このアクションに設定された発話をAIはまず応答します。左端に条件接続のポインタが表示されません。
- 通常アクション
通常のアクションです。条件で接続が可能です。
3.終端アクション
最後のアクションです。アクション内で
「このノード後は会話を続けられないようにする」
を選択している場合は、このアクション以後、会話ができなくなります。
※ 終端アクションに設定されたアクションが永遠と繰り返されます。
強制的に会話を終わらせたい時に利用します。
※終端アクションを設定しない場合は、シナリオから離脱し、通常の会話に戻ります。
アクションの設定項目
1. タイトル (必須)
アクションのタイトルです。管理上必要です。
2. 種別 (必須)
アクションの種別です。
- 質問
- 発話
- フリートーク
の3種類から成ります。
A. 質問
AIからユーザーに何らかの質問をしたい場合設定します。AIはユーザーからの応答を期待します。
B. 発話
AIが何らかの発話をしたい場合に設定します。必ずしもAIはユーザーからの応答を期待しません。
この種別を設定しているアクションの次にアクションが接続されていない場合、発話アクションに対するユーザーの発話が、他のシナリオのトリガーに一致する場合、別のシナリオにジャンプすることができます。
C. フリートーク
次の条件に合致するまで、設定したアクションに留まり続けます。
フリートークで設定した発話を最初の発話として採用し、その後はAIが自由に会話を行い続けます。
※フリートークは最初のノードでは利用できません。最初のノードで利用する場合は、一度のみ応答を返し、次のノードに移動します。2つ目以降のノードで有効利用できます。
3. 質問(発話) (必須)
アクションにおけるAIの発話文を入力します。
@{auto_response}
という特殊記号が利用可能です。
この特殊記号を利用すると、AIが自動で応答を行います。プロンプトと利用モデルはアクションごとに設定ができます。
4. AIの自動応答の設定
言語モデルとプロンプトを設定可能です。
@{auto_response}
を利用していたり、フリートークが設定されている場合はこちらの設定が優先されます。
プロンプトは、空欄の場合、「エージェントの設定」で設定されている内容が採用されます。プロンプトを記述する場合は、このアクションの発動下においては、このプロンプトが優先されます。
(その場合、エージェント設定画面のプロンプトは利用されません。)
※アクションごとにモデルを切り替えられるので、会話の内容に応じてコストや性能を最適化できます。
5. 画像やリンクの設定
画像やリンク先のURLを指定することで、会話の中で表示することができます。
6. クイックリプライの設定
アクション発動下で表示されるクイックリプライを設定できます。
クイックリプライからの選択を強制させることも可能です。
@{disable_quick_reply}
という特殊記号を入力すると、クイックリプライを無効にすることも可能です。
7. ステート名の設定 (必須)
アクション下でAIの発言に対してユーザーが発言した内容を、ステートとして記録します。
その際のステートの名前を設定します。
8. 抽出パターン
ステートに登録をする際、値として発話から抽出するパターンを正規表現で絞り込むことができます。
抽出パターンを設定している場合、抽出できる文字列がない場合は、再度AIが質問をし直します。
9. 拡張データ (json)
アクション下でのAPI経由での発言に付与するjsonパラメータを設定できます。特定のパラメータを付与することで、APIコール元で利用することができます。
条件の設定項目
アクションの右端にあるポインタをドラッグし、他のアクションの左端にあるポインタにマウスを移動させることで、アクション同士をつなげることができます。つなげると、条件を設定できます。
条件は下記を設定可能です。
1. 条件なし
AIは1度だけ応答し、その後のユーザーの発話時は問答無用で次のアクションに遷移します。
2. ユーザーの回答によって遷移
ユーザーの発話の部分一致や完全一致によって遷移します。
3. ステートの状況によって遷移
ユーザーのステートによって遷移します。
4. エージェントの発話によって遷移します
エージェントが最後に応答した発話によって遷移します。
※直前がフリートークアクションであることが必須の条件です。
3. 会話のプレビュー
右下の「変更の保存」を押し、「会話のプレビュー」を押すことでシナリオ対話のテストができます。
アクションごとにもプレビューボタンがあります。
特定のアクションから会話をテストしたい時に有効です。
4. 公開
変更を保存を押しただけでは、シナリオは本番反映されません。
公開設定画面で、公開ボタンを再度押すと、一般公開されているエージェントに反映されます。
事例
シナリオを利用した事例の紹介です。
https://note.com/tomohoga/n/n9d5d9b911ed5?magazine_key=ma82aceda74a8
https://note.com/makunugi/n/nf1009d97ff32?magazine_key=ma82aceda74a8
Updated 9 months ago