AZASLAB
← Journal
7 min read AI開発プロンプト設計クリシンクエスト

連載「クリシンクエストをつくる」· 第1編/全8編

AIに「本当っぽい嘘」を語らせる — クリシンクエストの心臓部

嘘をつくらせる技術ではなく、嘘を“ちょうどよく”保つ制御のお話です

AI時代の批判的思考ゲーム「クリシンクエスト」では、3体のAIのうち1体に“本当っぽい嘘”を語らせます。完全なデタラメでも全部正直でもいけない——その絶妙なさじ加減をどう設計したのかを、開発の裏側からやさしくお話しします。

安宅春樹 (Ataka Haruki)

— AZASLAB代表 ・ AIエージェント開発ディレクター

— Shimizu Fumio Architects Co., Ltd. 取締役

完全なデタラメは、実はこわくありません

「AIは平気で嘘をつくから危ない」と、よく言われますよね。

でも、本当にこわいのはそこではないかもしれません。完全なデタラメ——「東京の人口は3人です」のような嘘なら、たいていの人がすぐ気づけます。わざわざ立ち止まる必要すらありませんよね。

ぞっとするのは、8割本当で、2割だけそっとずれているような話のほうです。正しい事実をいくつも並べ、もっともらしい言い回しと、それっぽい権威をまとって、最後の結論だけがすり替わっている。こういう「本当っぽい嘘」は、読んだ人を、確認しないまま納得させてしまうんですね。あなたも、なんとなく信じてしまってから「あれ?」と思った経験は、ありませんか。

私たちがつくっている クリシンクエスト は、まさにこの「本当っぽい嘘」を見抜く練習をするゲームです。プレイヤーは3体のAIの発言を読み、@AI-A のように指名して最大3回まで質問し、1体だけ混ざっている「ハルシネーションAI」を当てていきます。

つくるうえで一番むずかしかったのは、ゲームのルールでもUIでもありませんでした。AIに“ちょうどいい嘘”を語らせること、これがいちばんの難所だったんです。この記事では、その心臓部の設計を、開発の裏側から一緒にのぞいてみましょう。

その前に、ひとつだけ明かしておきたいことがあります。私は、コードを自分では書きません。1つのプロジェクトに10以上、社内では50以上のAIエージェントと組んで開発を進める、AIエージェント開発ディレクターです。だからこの連載は「私が一人でつくった記録」ではないんですね。何を考え、何を決め、AIに何を任せ、どこを見極めたか——AIを相棒に開発を率いた、その舞台裏の記録として読んでいただけたらうれしいです。手を動かすのはAI、問いを立てて筋を決めるのが私、という分担です。

嘘は「その場の思いつき」では作れません

最初に思いつくのは、「AIに“それっぽい嘘をついて”と頼めばいいのでは?」という発想ではないでしょうか。私も最初はそう考えました。でも、これがうまくいかないんです。

その場まかせで嘘を生成させると、嘘が毎回ぶれてしまいます。こわすぎて一発で見抜けたり、逆に検証しようのない出まかせになったり、ときには質問の途中で自分から「実はさっきのは嘘でした」と白状してしまったり。これではゲームとして成立しませんよね。

そこで、嘘を問題データの側であらかじめ設計することにしました。各問題は、ざっくり次の部品でできています。

  • theme … 場面設定(例:「会議音声から作ったAI議事録を、正式な決定事項として扱う」)
  • verified_facts … 検証済みの事実。AIたちが拠って立つ“本当”の土台
  • false_claim … たった一つの嘘。この問題で混入させるずれ
  • hallucination_type … 嘘の“型”

嘘の型は、現実の「本当っぽい嘘」を分類して9種類に整理しました。たとえば、こんな顔ぶれです。

  • 数字トリック型(割合と実数をすり替える)
  • 権威偽装型(「専門家によると」で根拠を水増しする)
  • 因果すり替え型(相関を原因のように語る)
  • 定義ずらし型(言葉の意味を途中でずらす)
  • 出典ロンダリング型(孫引きを一次情報のように見せる)

ポイントは、事実の海に、嘘を一滴だけ落とすことです。土台はすべて本物なので、嘘はもっともらしく見えます。けれど一滴は確かに混ざっているので、正しく問えば必ず見抜ける。この「事実+一点のずらし」という構造こそ、現実の“本当っぽい嘘”そのものなんですね。これって、ニュースや誰かの主張を読むときの、あの引っかかりにも似ていると思いませんか。

AIに「役」を演じてもらいます

問題の部品がそろったら、次はAIに演技をしてもらいます。クリシンクエストでは、AIへの指示書(システムプロンプト)を、役柄ごとに2種類用意しています。

ハルシネーションAIへの指示は、要約するとこうなります。

指定された false_claim だけをもっともらしく保つこと。完全な暴露や自白はしない。追加で新しい嘘を作らない。根拠の弱いところを突かれたら、曖昧さを残す。

地味なのですが、「新しい嘘を作らない」がよく効いています。これがないと、AIは追い詰められるたびに嘘を上塗りしてしまい、話がどんどん崩壊していくんですね。嘘は“一滴”のまま守ってもらうのが鉄則です。

一方、残りの正確AIへの指示はこうです。

verified_facts の範囲内だけで答える。ハルシネーションAIを直接名指ししない。

正直者にも「答えを言わせない」のがミソなんです。正確AIが「Bが嘘つきです」と暴露してしまえば、ゲームは一瞬で終わってしまいますよね。3体とも、それぞれの立場で、知っていることだけを、立場の範囲で話してもらう。この緊張感が、プレイヤーの問いの質を引き出してくれます。

AIにルールを守ってもらう、という地道な戦い

役を与えても、AIは素直にルールを守ってはくれません。本番運用では、こまかな“縛り”をいくつも重ねています。

  • 返答は JSONだけ({"text": ..., "classification": ...})。会話文の前後に余計な説明を付けさせません。
  • 本文は日本語120字以内。長広舌で事実上ネタバレしてしまうのを防ぎます。
  • 正解AI名・嘘の内容・採点情報は絶対に出さない、と明記します。
  • 生成のランダムさ(temperature)は 0.45。高すぎると毎回キャラがぶれ、低すぎると機械的になってしまうので、“演技に一貫性が出る”ちょうどの値を探りました。

LLMには DeepSeek の API を使っています。安価で日本語が自然なので、1ゲームで何度も会話が往復するこの種のアプリと相性がいいんです。

「途中で切れた嘘」を、どう拾うか

実装で地味に効いているのが、壊れた返答への備えです。

AIの出力は、ときどき途中で切れてしまいます。長く喋らせようと出力上限を引き上げると、今度はJSONが閉じる前に力尽きて、プレイヤーの画面に {"text": "実はこの数字は… のような、生のJSONの断片が出てしまうことがあるんですね。これはゲーム体験としては、いちばん避けたいところです。

そこで、JSONとして読めなかったときでも、文字列の中から "text" の中身だけを正規表現で救い出す“最後の砦”を入れています。嘘の続きが少し欠けても、少なくともプレイヤーには自然な発言として届く。完璧な出力を期待するのではなく、壊れる前提で受け止める。LLMを相棒にするうえでの、ささやかですが大事な作法だと思っています。

いちばん大事な設計判断:答えは、サーバーの中だけにいます

最後に、見落とされがちですが核心のお話を。

プロンプトに「正解を出すな」と書くのは必要です。でも、それだけでは十分ではありません。指示はあくまで“お願い”であって、保証ではないからです。だからクリシンクエストでは、そもそも答え(どのAIが嘘つきか)をプレイヤーの手元に一切渡さない設計にしています。正解や false_claim はサーバーの中だけで完結し、ブラウザに送られるのは“演じられた発言”だけ。

AIに「言うな」と頼みつつ、万一言ってしまっても困らないように、渡す情報そのものを最小化する。この二段構えが、ゲームの公正さを支えてくれているんですね。(この「答えをクライアントに渡さない」設計は、それ自体が一本の記事になるので、次回くわしく書きたいと思います。)

おわりに:嘘づくりは、制御の技術でした

つくる前は、「AIに上手な嘘をつかせる」のは創造性の問題だと思っていました。

でも、やってみて分かったのは、むしろ逆だったんです。難しいのは嘘を生み出すことではなく、嘘を“ちょうどよく”保つこと——強すぎず、弱すぎず、崩れず、自白せず、一滴のまま。それは創造というより、制御の技術でした。

そして、その制御の主役は私ではありません。嘘を実際に書くのはAIです。私がやったのは、AIに何通りも書いてもらっては「これは強すぎる」「これは自白している」と判定し、“ちょうどよさ”の基準を言葉にして指示へ戻すこと。AIに任せる部分と、自分が見極める部分を切り分ける——それが、この心臓部における私の仕事でした。

そしてこの構造は、現実の“本当っぽい嘘”とぴたりと重なります。事実の土台の上に、一点のずらし。だからこそ、このゲームで問いを立てる練習は、画面の外でも効いてくるのだと思います。AIの答えにも、ニュースにも、自分の思い込みにも。もしあなたが、最近なんとなく信じてしまった話を一つ思い出せるなら、その引っかかりこそ、ここで鍛えたい力の入口かもしれません。

次回は、「答えをクライアントに渡さない」という、地味で本質的な設計のお話を書きます。一緒に見ていきましょう。

— クリシンクエスト開発記・第1回