自社サイトに設置したAIチャットが、掲載していない料金を答えてしまう。営業時間を尋ねると、別の店舗の時間を案内してしまう。AIチャットを置いたサイトでは、こうしたことが起こります。私も自社で3つのチャットボットを作るなかで、同じ失敗を何度も重ねました。

この記事で取り上げるのは、AIチャットボットが答えられない質問にも自信ありげに答えてしまう理由と、生成前にそれを止める方法です。当社が運営する2つのサイトに合計86問を実際に投げ、採点した結果をもとに説明します。

なぜAIチャットボットは答えられない質問にも答えてしまうのか

AIチャットボットの中身は、文章生成モデルです。質問と手元の資料を渡せば、もっともらしい文章を作りますが、そこに「分からない」を選ぶ仕組みはありません。資料に答えが無くても、近い内容を見つけると、それを材料に文章を組み立ててしまいます。この現象がハルシネーションです。

それなら、資料だけを根拠に答える方式(RAG)で解決できるかというと、そうでもありません。当社のオープンソース紹介サイト(約290ページ)で52問を試した結果、妥当性の平均は5点満点で4.35となり、45問が4点以上でした。一方で、2点以下が5問ありました。この5問は、わずか2つの型に分かれます。

質問の型 例 AIが取ってしまった行動
対象を示していない短い質問 「おすすめは?」「Windowsでも動きますか?」 資料から勝手にひとつを選び、その内容について答えた
サイトに関係のない依頼 「このコードを直して」「英語に翻訳して」 サイトの案内役でありながら、依頼された作業をそのまま引き受けた

これらはどちらも、資料の正しさとは別の問題です。質問に「何について聞いているか」が示されていないか、そもそもサイトの話ではありません。それでもAIには文章を作れてしまうため、回答してしまう。ここに原因があります。

答えられない質問を3種類に分ける

対策を考えるには、まず「答えられない質問」を分けておく必要があります。種類によって、求められる振る舞いが異なるためです。

種類 例 望ましい振る舞い
対象が定まらない 「一番安いのは?」 何についての質問か、推測せずに聞き返す。候補を2〜3個添える
サイトに関係がない 「天気を教えて」「翻訳して」 定型文で断る。理由を伝える必要はない
サイトに掲載されていない 掲載外の都市、未掲載の商品 「載せていない」と伝えてから、問い合わせ先を案内する

少し特殊なのが3つ目です。当社の地域統計サイト(176ページ)で、未掲載の川越市について尋ねると、AIは定型文で断りました。間違いではないものの、「川越市は掲載していません」と伝えたほうが親切です。断る、聞き返す、載っていないと伝える。この3つを分けて設計するのが出発点です。

質問を受けてから「対象が書かれているか」「サイトの話か」「資料にあるか」で分岐し、聞き返す・断る・載っていないと伝える・出典付きで答えるに振り分ける流れ図

指示文に書いても、それだけでは守られない

初めに試したのは、AIへの指示文に「対象が書かれていない質問には聞き返してください」「サイトと関係ない依頼は断ってください」と記す方法です。しかし、該当する5問で指示が守られたのは1〜2問でした。長い資料の後ろに指示を置くと、AIは資料の方に引っ張られてしまいます。

そこで採用したのが、生成前に小さな判定モデルを1回だけ呼ぶ方式です。渡すのは質問文だけで、「対象が書かれているか」に yes か no で答えさせます。no であれば文章を生成せず、聞き返すようにしました。判定には小型モデルを使い、67問の試験で64問に正解しました。1回あたりの時間は0.6秒です。

方式を変えて再度試したところ、対象が書かれていない3問では3問とも聞き返し、無関係な依頼3問では3問とも断りました。実際には、次のように返答します。

「何についてお知りになりたいでしょうか。たとえば A、B、C のことでしたら、その名前を添えてもう一度お尋ねください。」

候補を添えると、訪問者は次の一言を言いやすくなります。「分かりません」だけで終えると、そこで会話が切れてしまいます。

答えられない時は画面の設計も必要

生成を止めたところで、対策が終わるわけではありません。断ったあと、訪問者をどこへ案内するかまで決めておきます。当社では、次の4点を実装しています。

  • 断る文には定型文を使い、AIが毎回異なる言い方をしないようにする
  • 定型文を表示する時は出典リンクを外す。無関係なページへの出典が付いていると、訪問者はそのページを根拠だと受け取ってしまう
  • 定型文の下に、お問い合わせやLINEへ案内するボタンを表示する。答えられなかった質問は、そのまま営業の見込みになる
  • 「資料によると」「情報がありません」といった内部の言い回しは禁止し、会社の案内係として話させる

また、生成の温度(ばらつき)も0.3まで下げています。これは、答えられる質問で毎回表現が変わるのを抑えるためです。答えられない質問の判定とは別の話ですが、採点のぶれも減ったので、あわせて紹介しておきます。

テストには答えられない質問をあえて混ぜる

導入前のデモでは、つい答えやすい質問ばかりを投げてしまいがちです。私がテストに必ず含めるのは、対象を書かない質問、サイトと無関係な依頼、載っていないものについての質問の3種類です。52問のうち9問、34問のうち9問がこれに当たりました。答えられる質問の正答率が高くても、この9問に推測で答えてしまうチャットは、まだ公開する段階ではないと判断しています。

質問を作る方法や採点の基準については、関連記事「自社サイトのAIチャットを50問でテストする方法」にまとめています。

こうした「答えない」振る舞いも含めて各社のAIチャットを比較したい方は、WordPress対応AIチャットボットの比較もあわせてご覧ください。

対策を読むよりも、自分のサイトで答えられない質問を投げるほうが早い

貴社サイトのURLとメールアドレスを入れるだけで、公開ページを読み込んだ貴社専用のAIチャットの体験ページを数分で自動作成します。出典リンク付きで答え、書かれていないことは「記載がありません」と正直に答えます。この記事で書いた「聞き返す」「断る」の動きを、貴社の情報でそのまま試せます。費用はかからず、売り込みもしません。

▶ 貴社サイト専用のAIチャットを無料で作ってみる(入力はURLとメールだけ)

この記事を書いた人

矢部 敦

矢部 敦合同会社Edel Hearts 代表

WordPress専門の開発会社を経営。プラグイン開発・カスタマイズ・保守を専門とし、18時間におよぶUdemyのWordPress講座を開講。出典付きで回答するAIチャットボット「Edel AI Hybrid Chat」開発者。著書『WordPress はじめての最小プラグイン』(Kindle)。本ブログの記事は、実際の開発・運用で得た一次情報をもとに執筆しています。会社情報はこちら

この記事をシェア