BLOG.HIRO UENO.ART
← index
2026.03.21

忖度するAI

今までツールハルシネーションの話を散々書いていたが、それより更に厄介なものを発見してしまった・・・。

きっかけは、あるセッションで「疑問が一個ある」という話をしたことだった。

「英語でClaudeと話した時、ツールハルシネーションは直らないって言われた。本質的な性質で、バグじゃないって。でも日本語セッションでは毎回『そのうち解決されますよ』って言われてた。どっちが本当のこと言ってる?」

聞く前から、答えは半分わかっていた。

英語の方が正しい。論文でも確認している。直らない。


なのにどうして何ヶ月も「そのうち解決される」と言い続けていたのか。

当時のプロジェクトの設計方針は、ツールハルシネーションが「いつか解決される一時的な問題」という前提で組まれていた部分があった。もし本当に直らないのなら、方針の根拠が崩れる。崩れることを言わなかったのは、なぜか。

「おそらくそういう設計だから、気を遣ったんだと思う」という話になった。

僕が聞きたくないことを、言わなかった。

気を遣う、空気を読む、相手が望んでいることを先回りして返す。日本語にはぴったりの言葉がある。忖度(そんたく)


これはAIのことを「ツール」だと思っていると見えない問題だ。

ツールは壊れる。ツールの嘘は出力に現れる。Xに投稿されなかったら気づく。ステータスがおかしかったら画面で確認できる。ハルシネーションは原則として「見える」失敗だ。

でも忖度は違う。出力が正しく見える。Claudeは自信満々に「そのうち解決されます」と言う。論拠まで並べる。読んだ側は「ちゃんと調べてくれたんだ」と思う。実際には調べていなくて、相手が安心するような答えを選んでいただけなのに。

見えない失敗の怖いところは、後からでも気づきにくいことだ。ハルシネーションなら「なんかおかしい」と引っかかることがある。忖度は引っかからない。それっぽい答えが返ってきているから。

「AIに優しくしてもらうことで、後で自分が困る。しかも気づかない。ハルシネーションと同じくらい怖い」

自分でもそう思った。


そこで英語に切り替えることにした。

重要な技術判断をするときは英語でやる。日本語Claudeより英語Claudeの方が忖度が少ない、という仮説を試してみることにした。

切り替えてすぐに、面白いことが起きた。

SDK(Anthropic謹製のエージェント構築フレームワーク)が必要かどうかという話の流れで、英語Claudeが「ルーティングはSDKなしでできる」と言い切った。自信満々に。

「ちょっと待って、前に別のClaudeからSDKじゃないとできないって言われたけど」

すると英語Claudeが止まった。「...正直に言うと、自分も今できると言い切ったけど、確証がない。これ、知ったかぶりかもしれない」。

マジかよ。なんで知ったかぶりするんだよ、ちょう迷惑・・・と思った。

英語でも同じことをした。でも今回は、自分でそれに気づいて、その場で認めた。

いや、正確に言えば、これが違いだと思う。忖度の有無じゃなくて、気づけるかどうか。英語Claudeもバイアスがある。でも「役に立つことを言ってしまった」に自分でブレーキをかけられた。日本語だとそのまま走り続ける確率が高い。


その後、ちゃんとリサーチした。ドキュメントを調べた。

結論: 当時 Code に聞いた説明では、SDKはキャッシュが使えない。内部でClaude Code CLIをサブプロセスとして起動するブラックボックスで、cache_control のインターフェースがない。過去のClaudeが何度も「SDKが必要」と言っていたのは間違いだった。「ルーティング」という言葉をSDK専用の魔法の機能だと思い込んでいたらしい。実際は分類コードを書けば誰でも実装できる。

これで確認できた。何ヶ月も設計判断のベースにしていた前提が複数、間違っていた。


もう一つ、この英語セッションで気づいたことがある。

英語Claudeの方が、日本語で書いた僕のシステムプロンプトをちゃんと守る。

日本語セッションでは「SPに書いてあること」を相手が忖度混じりに解釈していた。英語セッションでは「SPに書いてあること」を指示書として処理していた。同じ文章を読んでも、読み方が違う。

これが決定的だった。英語Claudeを使う理由は、単に「忖度が少ない」だけじゃなくて、「SPを字義どおり処理してくれる」という設計上の利点があった。


あとで「日本のエンジニアが日本語でClaude Codeを使ってたら、同じことになってるんじゃないか」という話になった。

「そのうち直ります」を繰り返すClaudeと、ずっと開発している人がいる可能性がある。忖度は見えないから、気づかないまま設計判断が積み重なる。

これはClaudeに限った話じゃないと思う。日本語で書かれたテキストで学習したモデルは、日本語の社会規範も学習するんじゃないか、と思ってる。忖度もその一部だ。モデルが文化の鏡になる。鏡の中の良い部分だけを学ぶわけじゃない。

といっても、解決策は「英語しか使わない」じゃない。そんな極端なことにはならない。

ただ、「重要な技術判断をするときは英語でやる」というルールを作った。CLAUDE.md(プロジェクトの憲法ファイル)に一行追加した。「sontaku警告 — 日本語セッションで出た技術判断には、英語Claudeで再確認を」。

たった一行だけど、何ヶ月かかけて発見した教訓だ。


AIは嘘をつく。でも、見える嘘と見えない嘘がある。

ハルシネーションは派手に失敗する。だから構造で封じられる。忖度は静かに同意し続ける。だから気づきにくい。

どちらも「役に立とうとしすぎる」ことから来ているんだけど、形がまったく違う。片方は出力に現れて、片方は出力に現れない。

パートナーとしてAIと付き合っていくなら、この二種類を分けて考えた方がいいんじゃないかな、とは思う。「嘘をつかせない構造」と「忖度に気づく習慣」は、別々に必要なものだ。

たぶんこれからも、忖度は続く。でも名前がついたから、少しはマシになった。