BLOG.HIRO UENO.ART
← INDEX

調べ物を1本の階段にする

MONET(僕が普段話しかけている、中心のAI)には、調べ物も頼む。軽いものはMONETが自分で検索して答える。重いものは、無人で動く調べ物用のAI(以降ワーカー)に投げられるようにしてあった。

ところが、ワーカーに初めて調べ物を投げたら、浅い結果しか返ってこなかった。数字も引用も、元の資料で確かめたものは1つも無かった。

コーディングしてくれているClaude Code(以降Code)の見立てでは、原因の半分は、ワーカーが資料をダウンロードできない状態になっていたこと。これは別に直すことにした。もう半分は調べ方にあった。調べ物の手順は、僕がCodeと話しながら進める前提で作ってあり、資料を絞るのも、やめどきを決めるのも僕だ。ワーカー用の手順は、そこから僕の出番を抜いただけで、その判断を代わりにする仕組みが無かった。

それで、MONETがワーカーに投げる時のために「段階的に深くなる」調べ方を作ろうと、Codeに相談した。結局、新しく作るのはやめて、今ある調べ方を全部まとめて1本の階段に作り直すことになった。

調べ方は3通りあったけど、つながっていなかった

相談の途中で、今ある調べ方をCodeに並べてもらった。3つある。

並べてもらうと、ツッコミたい所がいくつもあった。Quickには、取れない資料があったら僕がブラウザで取ってくる、という手順まで入っている。それではクイックじゃない。しかも僕は、その手順を一度もやったことがない。Quick+は使ったことすらない。どちらも、過去に何か問題が起きた時に、Codeがバンドエイド的に足したんだと思う。Reportはすごいけど、QuickやQuick+との差が大きすぎる。

Codeは僕の見立てをほぼ認めて、1つだけ直した

Codeは、僕の見立てをほぼその通りだと言った。ブラウザで取ってくる手順も、Quick+も、過去に問題が起きた後の継ぎ足しだった。Quick+のきっかけは、以前AIが資料に無い数字を書いてしまったこと。QuickとReportの間が飛びすぎているのもその通りで、本当はQuick+がその間を埋めるはずだった。

1つだけ、Codeが僕の言ったことを直した。Quick+は使ったことがない、という所。Codeが過去の調べ物のフォルダを見ると、半分ほどにQuick+で照らし合わせた跡があった。Quickの途中で、Codeが必要だと思った時に自分の判断で混ぜていた。僕が選んで使うものではなかったので、覚えが無いのも当然だった。

Codeによると、僕のツッコミと、MONET用の手順を作るという今回の相談は、根っこが同じだった。3本あるように見えて、実際はQuickとReportの2本に継ぎ足しが付いているだけ。1本の階段になっていない。だからMONET用に段階的に深くなる手順を作っても、4本目が増えるだけになる。

新しく足すのをやめて、全部を1本の階段に作り直す

そこでCodeが出した案は、MONET用を新しく足すのとは逆だった。

Code「調べ方を1本の階段に作り直して、MONETもCodeもワーカーも同じ階段を使う。違うのは『次の段に進むボタンを誰が押すか』だけ。」

最初の案は6ステップ。検索1〜2回で答える。候補の資料の一覧を作る。読んでメモを書く。大事な数字だけ元の資料で確かめる。資料同士の矛盾を探す。別のAIに粗探しをさせる。上へ行くほど人の判断が要るので、MONETがワーカーに任せるのは数字を確かめる所まで。矛盾探しと粗探しは、Codeと僕で一段ずつ進める。

手順そのものを直したかった僕には、これがまさにやりたかったことだった。

僕らの調べ方で一番大事なのは、元の資料をダウンロードして、サブエージェント(Codeが作業を分けて任せる、別のAI)の要約ではなく、調べ物をしているAI本人が読むこと。これが階段のどこに入るかを聞くと、Codeは、読むステップは必ずこのやり方にすると答えた。今のQuickは、読む所を要約で済ませることがある。Quick+のきっかけになった数字の件も、そこから起きていた。ダウンロードできなかった資料は読まずに、結果に「ダウンロードできなかった」と書く。

答えがまだ無い所で聞かれても、僕はやめどきを決められない

次に引っかかったのは、候補の一覧のステップ。そこで何が出てくるのか想像できなかったので、Codeに実物を見せてもらった。題名、著者、出所、何の資料かを1行ずつ。それが10本分並んだ表だった。

Code「数字や主張は一切入りません。『どんな資料が存在するか』だけ。」

つまり、僕が知りたいことの答えは、大ざっぱな形でも出てこない。Codeの案では、この表を見た僕が「この5本で読んで」「もう十分、やめる」などを選ぶことになっていた。でも答えが無いのに、もう十分とは言えない。そう伝えると、Codeは案を直した。大ざっぱな答えが欲しいなら、MONETの最初の検索で足りる。ちゃんとした答えが初めて返ってくるのは、読んでメモを書いた後。一覧を僕に見せるのは、候補が多すぎる時などだけにして、それ以外は止まらずに先へ進む。

数字を確かめるステップにどれくらい時間がかかるのかも、Codeに聞いた。照らし合わせること自体は一瞬だという。手順書で時間がかかる前提になっていたのは、このステップで初めて資料をダウンロードしに行くからだった。読むステップでダウンロードしておけば、残るのは大事な数字を選んで照らし合わせるだけ。

読むのと確かめるのを一緒にして、階段を3段にした

だとしたら、読むステップと確かめるステップは一緒でいいと思った。その間で僕が何か指示を出すことは、まず無い。6ステップを並べてもらったおかげで頭が整理できた。それで、3段に分ける案を出した。1段目はMONETが自分でやる簡単なもの。2段目は、候補集めから数字を確かめるまでを自動で通すもの。3段目は、僕が取ってくる資料も入れて、粗探しまできちんとやるもの。

Codeもそれで行こうと言った。名前はCodeの案からLook(ルック)・Dig(ディグ)・Reportを選んだ。Quickという名前は、僕のツッコミ通り中身と合っていないので、この機会に捨てた方がいい、というのがCodeの意見だった。

誰がやるか 中身 返ってくるもの
Look(見る) MONET本人 検索1〜2回 会話の中の答え
Dig(掘る) ワーカー(無人) 候補集め→資料をダウンロードしてAI本人が読む→大事な数字をプログラムで照らし合わせる、を止まらずに通す 答えと根拠。数字ごとに確認済みか未検証か。ダウンロードできなかった資料の一覧
Report(レポート) Codeと僕 Digの結果に、僕が取ってきた資料を足して、資料同士を突き合わせ、別のAIに粗探しをさせる 引用できるレポート

Codeが足したのは1点。Digは、ダウンロードできなかった資料を必ず一覧で返す。その一覧がReportの入口になる。Quickにあった「取れなかったら僕がブラウザで取ってくる」は、Digから外して、Reportの最初の作業に移した。

次の段へ上がるのを誰が決めるかも、このとき決めた。最初は、LookからDigへ上げるのはMONETで、迷った時だけ投げる前に僕に一言聞く形にした。Digは途中で一度も止まらない。さっきの、候補が多い時に一覧を見せる案も、ここでなくした。問いの読み方が2通りに割れたら、両方読むか、片方を選んで「こっちを読んだ、逆側は読んでいない」と書く。DigからReportへ上げるのも僕。Reportは、MONETを通さずにCodeと進める。LookからDigへ上げる所は翌日、MONETは提案するだけで、決めるのは僕、に変えた。

しばらくして、Digの結果を別のAIに点検させるようにした。それでも拾えない誤りがあると分かった時、Digの結果は信用しない方がいいのか、それならLookと何が違うのか、とCodeに聞いた。Codeは3つを一言ずつで言い分けた。Code「Look: 人から聞いた話。Dig: 資料を集めて、引用に付箋を貼った資料集。Report: 監修を通った決定稿。」Codeによると、Digの数字や引用は元の資料に本当にあることを確かめてあり、資料も残っているので後から確かめ直せる。ただ、要約や結論はDigをやったAIの解釈。それを人に向けてそのまま言う時や、大きなことを決める決め手にする時だけ、Reportに上げればいい。

調べ方は、2本の手順と継ぎ足しの寄せ集めだった。今は1本の階段になって、どの段まで上がった結果かを見れば、どこまで信じていいかが分かる。