Chapter 12

シナリオ対話を作成する

maKunugi
maKunugi
2023.02.19に更新

はじめに

このChapterでは、従来のチャットボット構築で利用されてきた、「シナリオ対話」の手法とAIの応答生成を併用した方法を紹介します。シナリオ対話は、会話のフローをチャットボット作成者があらかじめ定義しておき、それに沿ってチャットボットがユーザーと会話を行います。後述する通り、筆者はGenerative AI時代においても、「シナリオ対話」は非常に重要な手法になると考えています。

「シナリオ」とは

「トピック」や「雑談表現」は一問一答のやりとりを扱う会話コンテンツですが、エージェントに一問一答でない決められたフローに従った会話を行わせたい場合もあります。その場合に利用するのが、「シナリオ」という会話コンテンツです。シナリオは会話のフローを描き、発動するトリガーを設定することで、決められた流れに従った会話を作ることができます。

利用シーン

このシナリオ機能は例えば下記のような用途に利用が可能です。

  • ユーザの情報収集
    • アンケート
    • インタビュー
  • 商品レコメンド
  • 条件分岐が必要な会話

シナリオ作成機能の利用方法

meboのシナリオ作成機能の詳細は、下記の公式ガイドをご参照ください。
https://zenn.dev/makunugi/books/f3d9eb62b6d133/viewer/5e8549

シナリオ対話はこれからも重要である理由

ChatGPTが非常に流暢に前の文脈を捉えて会話をするので、「シナリオ対話」はもう不要になると感じる方も多いかもしれません。しかし、筆者は今までと変わらず重要な手法であると考えています。その背景にあるのは、会話AIが人間の管理外の発言を無限にできるようになったことがあります。本書でも紹介したとおり、会話AIはアンコントローラーブルな存在になってきています。それは、チャットボット作成者にとっては非常に悩ましいことです。「何を言うかわからない」AIは非常に扱いづらいのです。センシティブな会話になればなるほど、そのデメリットは大きくなるでしょう。

シナリオ対話が重要なのは、人間が管理・定義するスコープが、「シナリオ」になると考えるからです。もしくは「コンテキスト(文脈)」と捉えると良いかもしれません。今までのようにガチガチに会話のフローを定義する必要はなくなっていきますが、「このシナリオ(文脈)の範囲内で自由に会話をしてね」というAIに対する管理は必要だと考えています。それがシナリオ対話機能に求められていることであり、これからも重要である理由です。

「シナリオ対話」は昔からある手法ですが、こういった手法とGenerative AIの技術は、融合して利用していくべきです。それをmeboでは機能として提供しています。

meboで行うシナリオ対話 + GPT-3.5の融合

meboでは、上述したとおりシナリオ対話機能とGPT-3.5等を利用したAIによる応答を組み合わせる事が可能です。具体的には、シナリオの各発話に散りばめて設置ができる、「フリートーク」という機能を利用します。

基本的にシナリオで定義された順に会話をチャットボットは進めていきますが、フリートークが設定されている会話に差し掛かると、一定の条件を満たすまでAIが話を膨らませたり、深堀りを行います。

例えば、チャットボットでインタビューを行いたいようなケースに有効です。インタビューの大枠の流れはシナリオ対話で定義をしておき、それぞれの質問に対する深堀りをAIが行うようなイメージです。

実際にその設定を行った様子は、下記の記事にまとめました。詳細な設定方法等が気になる方は、ぜひこちらを御覧ください。
https://note.com/makunugi/n/nf1009d97ff32

まとめ

AIが深堀りを行えるのは、シナリオ対話の「文脈」をAIの応答生成時にプロンプトとして渡しているからです。シナリオの会話の流れでAIの応答生成にバイアスをかけることで、それ以外の話題に話がブレることが少なくなります。また、フリートークのノードごとに「会話例」を設定することも可能で、シナリオの文脈に合わせてAIの応答を調整することが可能です。完全にAIの応答を制御できるわけではないですが、完全にフリーな状態では会話をさせるよりも、遥かにコントローラブルな状態で扱うことができます。まだしばらくの間は、こういった併用が安全なチャットボット構築のための鍵になっていくのではないかと考えています。