「確かめた」をAIの自己申告にしない
MONET(僕が普段話しかけている、中心のAI)には、重めの調べ物も頼める。頼むと、MONETはそれを調べ物用の別のAIに回す。そのAIが無人で資料をダウンロードして読み、調べた結果を1つのファイルにまとめて返してくる。この調べ方をDig(ディグ)と呼んでいる。
Digの結果には、数字や引用ごとに印が付く。一番大事なのは[V]で、照合済みの印。決まりでは、照合用のプログラムに通して、ダウンロードした元の資料と一字一句合ったものにだけ付ける。でも、その印を書き込むのは、調べ物をしたAI自身だった。プログラムに本当に通したかどうかは、誰も確かめていなかった。
照合済みの印が、原文に無い数字にも付いていた
きっかけは、MONETが無人で調べたDigを1本、コーディングしてくれているClaude Code(以降Code)に確かめてもらったこと。この1本は、小さなずれがいくつかあるだけで、ほぼ合っていた。ただ、ずれの中に、資料の外から入った一文があった。それで僕が、調べ物の仕組みを見直した方がいいかと聞くと、Codeは、見たのはまだ1本だけなので、他のDigも見てから決めた方がいいと言った。
Codeは最近のDigを3本選んで、サブエージェント(Codeが作業を分けて任せる、別のAI)に同時に確かめさせた。最初に結果が返ってきたのは、職種の移り変わりを調べたDig。これに大きな問題があった。[V]が付いた数字が2つ、元の記事のどこにも無かった。
Code「照合していない数字に、印だけが付いていたことになります」
別の1本では、[V]が付いた数が、照合のプログラムを通した記録より多かった。Codeの結論は、[V]が付いているかどうかと、プログラムを通ったかどうかは関係が無い、ということだった。印はAIの自己申告で付いていた。
僕が出していたOKは、誤りを止める役をしていなかった
ここまで見た4本は、どれも無人で回したDigだった。前は、調べ物の途中に僕の確認が入っていた。読む資料をAIが絞り込んで持ってくるたびに、僕がOKを出す。でも実際は、ほぼ毎回そのままOKを出していただけ。持ってくる時点で要る・要らないがきちんと分けてあって、僕がやることはほとんど残っていなかった。だから無人でもいけると思って、確認を外した。ただ、その間に変わったのは僕の確認だけではなかった。
それで本当に問題が無かったのかも、Codeに調べてもらった。僕が読む範囲を変えたことは何回かあったけど、間違いを見つけたことは一度も無かった。前に資料に無い数字をAIが書いてしまったことがあって、その時も見つけたのは僕ではない。別のAIにやらせたレッドチーム(あえて反論役をさせて、弱いところを探す検証)と、元の資料との照合だった。ただ、古い会話の記録は消えているので、残っている記録だけでは偏っているかもしれない、とCodeは付け加えていた。
Codeは、品質を守っていたのは僕のOKではなく照合とレッドチームだったので、OKを外したことは品質を下げた原因ではないと思う、と言った。ただ、レッドチームが入るのは、Digより本気の調べ物であるReport(レポート)の方だけ。無人のDigに残っていた守りは照合だけで、しかも照合を通したかどうかは、AIの自己申告だった。
印はAIの申告のままにせず、プログラムが照らして付け直す
Codeが最初に出した案は、Digができあがった後で、プログラムが全部の[V]を照合し直すこと。通らなければ印を外す。前の記事で、触ってはいけない所は文章で頼むのではなく、プログラムで触れないようにしておく、と書いた。照合のプログラムはもうAIの外にあったのに、それを通してから印を付ける所だけは、文章で頼んだままだった。
Reportは、Codeと僕で進める。レッドチームが結論に反論をぶつけ、資料同士を突き合わせて、最後に僕が確認する。照合をプログラムが必ずやるようになったら、照合の面でReportとの違いはレッドチームだけになるのか、と僕はCodeに聞いた。
Codeの答えは、違いはそれだけではない、だった。照合には2つある。1つは文字の照合で、その引用が原文に本当にあるか。もう1つは意味の照合で、原文は本当にそう言っているか。プログラムで保証できるのは前の方だけ。引用は本物でも、それを使って書いた文が言い過ぎていることがある。意味の照合は、DigではまだどのAIもやっていなかった。
文字が合っても、言い過ぎは別のAIが点検する
照合の半分しか守れないのか、と僕が言うと、Codeは残りの半分を詰める案を出してきた。Digの最後に、書いたAIとは別のAIに、軽い点検を1回させる。Reportのレッドチームを小さくしたもので、聞くのは2つだけ。この引用は、この文を支えているか。要約の1文ずつに、本文の裏付けがあるか。
Code「書いた本人に『確かめたか』を聞くのではなく、別のAIが確かめます」
Codeが作った仕組みはこうなった。書き手のAIは、照合したい引用を一覧のファイルに書き出す。プログラムがその一覧を原文と照らして、完全に一致したものだけに[V]を付ける。合わないものは[D](食い違い)の印に付け替える。そのあと別のAIが、引用と文の関係を点検する。
照合のプログラムはそれまで「ほぼ一致」でも合格にしていて、言い換えた文まで通していたので、完全に一致したものだけに絞った。
MONETに本番のDigを頼んで試すと、点検役のAIはこんな所を拾った。原文は「約4倍」なのに、文は「4倍」と言い切っている。原文は言葉を扱う生成AIに限った数字なのに、文は生成AI全体に広げている。どちらも、引用は原文どおりなのに、文の方が原文より多くを言っている。文字の照合だけでは拾えない種類の誤りだった。
大きな取りこぼしは、「問いに答えているか」の方だった
レッドチームを100としたら、今のDigはどのくらいなのか、とCodeに聞いた。Codeは、数字では言えないと答えた。同じDigを両方に通して比べたことが、まだ一度も無いから。測るなら、同じDigにレッドチームをかけ、レッドチームが見つけた問題のうち、Digの照合と点検でも拾えていたのが何割かを数える。Codeの見立てでは、半分に届かない、とのことだった。
それで実際に測ってもらった。Codeは、点検を通したさっきのDigに、Reportと同じレッドチームをかけた。点検の結果は見せずに別のAIに反論させ、ネットで反対の証拠も探させる。
レッドチームが見つけた問題のうち、照合と点検でも拾えていたのは約4割。Codeの見立ての範囲に入った。ただ、測ったのは1回だけ。レッドチームもAIなので、その結果が正解というわけでもない。
拾えた所と取りこぼした所は、はっきり分かれた。照合と点検が得意なのは、文が引用より多くを言っていないかを見ること。苦手なのは、その証拠がそもそも問いの答えになっているかを見ること。このDigが調べていたのは、個人開発と企業の中の開発のことだった。それなのに、企業の中で社員が個人として先に使い始めている、という数字を、個人開発者の数字として読んでいた。引用は原文どおり正しい。でも、問いへの答えになっていない。
それでもCodeは、問いへの答えとして筋が通っているかはReportのレッドチームの仕事なので、線引きはこのままでいいと言った。照合の印が付いた数字と引用は信じていい。でも要約と結論は、書いたAIの解釈として読む。
[V]は、AIが「確かめました」と言っただけの印ではなくなった。引用が本物かはプログラムが確かめ、引用より言い過ぎていないかは別のAIが点検している。その先は、今のところはReportの役目。