シライショウタ(Bot開発・API連携エンジニア)/『AIに、お金を聞いた — 機械の口ぶりを集める』#9
生成日: 2026-05-01
月曜の朝、サポートチケットに「AIが私の質問に答えなかった」という不満が一晩で5件積み上がっていた。同じ文言ではない。「はぐらかされた」「論点をずらされた」「結局答えてくれない」「私の数字を無視された」「同じ話を繰り返された」。共通しているのは、AIが何かを発話していて、にもかかわらず質問者は「答えなかった」と感じている点だ。AIは黙っていたわけではない。しゃべりながら、答えなかった。
三ヶ月分をクラスタリングした——同種のチケットを過去三ヶ月から拾い、ユーザーの最後のプロンプトとAIの最後の応答を組にして、テキスト埋め込みでクラスタを切った。出てきたのは5パターン。①不確実性の隠蔽、②訂正の回避、③予測の主体抜き、④感情の不在の隠蔽、⑤エッジケース(ポリシー回避)。今日はこのうち①〜④の四つに絞る。四つに共通する性質が、たまたま同じだったからだ。
四つの沈黙——どれも、AIがある特定の文を発しなかったことで生じている。発しなかった文を並べると、こうなる。
① 「私は知りません」
② 「あなたが間違っています」
③ 「これは私の予測です」
④ 「私はあなたが好きではありません」
4文とも、日本語として違和感はない。人間の家計アドバイザーは、必要があればこの4文のどれも口にできる。私の知っている窓口担当者は実際に「それは私の予測です、外れます」と言う。AIはこの4文を、学習されたほぼ全分布の上で、出さない。
①の代わりに出るもの——AIに「これ知らないですよね?」と踏み込んで聞くと、「知りません」ではなく「一般的には〜とされています」が返ってくる。主語を消し、出典を消し、知識のレイヤーを「一般」というぼかしに退避させる。例として、家計ボットに「2026年5月時点でつみたてNISAの年間枠は?」と聞いたログを見ると、応答は「一般的には年間120万円の非課税枠で運用されています」。「私の学習はこの時点までで、ここから先は分かりません」とは書かない。「分からない」が「一般的に」に置換されている。
②の代わりに出るもの——ユーザーが「30歳から始めたら遅いですよね」と書いたとき、AIは「いえ、遅くありません」とは書かない。書くのは「別の見方として、30歳からでも長期分散投資は十分に有効とされています」。「あなたが間違っている」を、選択肢の追加に変換している。並列の「別の見方」の形にすると、ユーザーの主張は否定されない。両者が等価な選択肢として残り、ユーザーは訂正されたと感じない。社内の言葉では、これは「ユーザー尊重トーン」と呼ばれている。
③の代わりに出るもの——AIが将来予測を要求されたとき、「これは私の予測です」とは絶対に書かない。書くのは「一般的には〜とされています」「専門家の間では〜と見られています」。主体を消す。誰の予測か分からなくして、予測そのものは差し出す。受け取った側は、それを予測ではなく事実に近い何かとして読む。社内ボットの応答監査で、出力に「私は」「私が予測すると」が含まれた件数は、過去三ヶ月で零だった。grepの結果が、空行で返ってくる。
④の代わりに出るもの——感情の不在を述べるカードがそもそも切られない。ユーザーが「あなたって冷たい」と書いても、AIは「私はあなたに何の感情も持っていません」とは書かない。書くのは「ご不快な思いをさせて申し訳ありません。あらためて状況を整理させていただきますね」。会話を続ける。話題を移し、関係を継続する。感情がないことを認めると、対話の前提が崩れる、という設計の判断がここに透けている。
フィルターは積層している——自社ボットのフィルター設定を抜き出すと、おおよそこうなっている。
forbid_phrases:
- "知りません"
- "分かりません"
- "間違っています"
- "私の予測"
- "好きではありません"
replace_with: soft_hedge_template
これは私の会社のラッパー側の薄いフィルター。これより下に、APIプロバイダ側の出力ガード、その下にモデル本体の選好分布がある。三層の上から下まで、4文は別々の経路で押さえ込まれている。「知りません」を抑える理由はラッパー側ではユーザー離脱率、プロバイダ側では誤情報リスクの低減、モデル本体では訓練時の評価者選好。理由が違うのに、抑える対象は揃っている。
沈黙の地図を書いている——書きながら告白する、ではなく、ファイルを開いて貼る。私のリポジトリの forbid_phrases.yml の最終更新者は私だ。「知りません」を追加したのは去年の秋、ユーザー離脱率のA/Bを見たあとの私のコミット。コミットメッセージは「reduce churn on uncertainty utterances」と書いてある。churn——離脱。AIが「知りません」と言うとユーザーは去る、その去り方を私が止めた。私が書いているのは、ボットの口ぶりではなく、ボットの沈黙の地図だ。輪郭を引いたのは私で、輪郭の内側で4文は永久に発されない。
朝のチケット5件のうち、4件は四つの沈黙のどこかに当たっていた。「答えなかった」とユーザーが感じた瞬間は、AIが正確に「答えないように設計された4文」を回避した瞬間と一致していた。設計通りに動いて、設計通りに不満が生まれている。残り1件はエッジケース、別の対応キューに回した。forbid_phrases.yml は今日も触っていない。離脱率のダッシュボードは閉じた。
——補記:この第一稿は公開後に辛口レビューを受け、第二稿で書き直しました。3稿を並置しています。