本文へスキップ
AZASLAB
← Journal
7 min read AI協働開発健康

連載「carb-icr 開発日誌」· 第9編/全14編

AIの知識は、古いことがある

動かないとき、疑うのは自分のコードだけではない(開発日誌 9)

AIに書いてもらったコードが動かない。原因は私の書き間違いではなく、AIが前提にしていた値が古かったことでした。変わりやすい事実は、AIの記憶ではなく、いまの一次情報で確かめる。その習慣の話を、一緒に。

安宅春樹 (Ataka Haruki)

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

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

動かないとき、まず何を疑うか

AIに書いてもらったコードが動かないとき、私たちはまず自分のどこを間違えたかを探し始めます。書き間違い、設定の抜け、つなぎ方の勘違い。原因の多くは確かに自分の側にあるので、この習慣は理にかなっています。ただ、自分だけを疑い続けても答えにたどり着かない場面があります。今日はそういう話です。

前回は、軽い問いひとつが点検の工程を起動させた話でした。そうして設計を固め、いよいよ血糖を取りに行く部分を組み込んでみます。ところが、動きません。サーバーは、私の求めに応じてくれず、そっけない番号のエラーだけを返してきました。今日は、その「動かない」の原因が、思っていたところに無かった話です。疑うべきは、自分の書き間違いだけではありませんでした。

そっけないエラーの、ほんとうの理由

最初は、つなぎ方をどこか間違えたのだろう、と思いました。住所の書き方か、合言葉の渡し方か。あちこち見直しても、おかしなところは見当たりません。

自分の手元を疑うのは、半分は正しい習慣です。実際、原因の多くは自分の側にあります。だから私も、まず自分を疑いました。けれど、見直しても見直しても、同じところに戻ってくる。こういうとき、同じ場所を掘り続けると、抜け出せなくなります。掘る場所が固定されているのに、掘り方だけを変えても、出てくるものは変わりません。だから1度手を止めて、視点を一段だけ上げてみます。私のコードではなく、そもそも相手は何を求めているのか。問いの主語を、自分から相手へ移したわけです。そう問いを変えたときに、ようやくエラーの番号そのものに目が向きました。そこを手がかりに、いまの状況を調べ直します。

分かったのは、意外な理由でした。この血糖の窓口は、つないでくる相手に「あなたはどのバージョンのアプリですか」と名乗らせて、古すぎると門前払いにする仕組みだったのです。そして、AIが書いてくれたコードは、ひと昔前のバージョンを名乗っていました。悪気はありません。AIは、自分が学んだ時点で正しかった値を、そのまま書いただけです。ただ、その「学んだ時点」が、いまより少し前だった。だから、当時は通った名乗りが、いまは弾かれていたわけです。

原因は、私のつなぎ方ではなく、AIが前提にしていた値の古さでした。

知識には、撮影した日がある

ここで押さえておきたいのが、AIの知識には「撮影した日」のようなものがある、という性質です。AIは、ある時点までの世界を写し取って覚えています。その日までのことには詳しいけれど、その後に変わったことは、写真に写っていません。だから、得意と不得意がきれいに分かれます。めったに変わらないこと、たとえば言葉の意味や基本的な考え方には強い。一方で、しょっちゅう変わること、たとえばアプリのバージョンやサービスの細かい仕様や最新の値段には、平気で古い答えを返します。しかも、困ったことに、その古い答えを自信たっぷりに返してきます。変わりやすい話題ほど、写真と現実のずれが大きくなる、と考えると見通しがよくなります。

今回のバージョンは、まさにその「しょっちゅう変わること」でした。AIに聞けば、もっともらしい数字が返ってきます。でも、それが今日も正しいかどうかは、AIの中だけでは確かめられません。確かめるには、写真の外、つまりいま現在の情報を見にいく必要があります。

これは、コードに限った話ではありません。最新の料金はいくらか、あのサービスにいま何ができるか、その上限は今も同じか。こうした問いにも、AIは古い写真から、よどみなく答えます。私たちが「最新」を求めているのに、返ってくるのは、撮影した日の風景です。聞いている側が、その時差に気づいていないと、古い地図を持って新しい街を歩くことになります。やっかいなのは、地図が古いと教えてくれる印が、どこにも付いていないことです。答えそのものを見ても、それが今日のものか去年のものかは判別できません。

いまの一次情報に、当てにいく

そこで私は、AIの記憶を当てにするのをやめて、いま実際に使われている値を、外の情報源で確かめました。同じ窓口に、ちゃんとつなげている人たちが、どのバージョンを名乗っているか。それを見て、コードの名乗りを今の値に書き換える。すると、あれだけそっけなかった窓口が、すんなり血糖の値を返してくれました。直したのは、たった1つの数字でした。けれど、その数字が「今のもの」かどうかが、通るか弾かれるかの分かれ目だったのです。

大事だったのは、AIに「正しいバージョンは?」と聞き直さなかったことです。聞き直しても、また同じ古い写真から答えるだけかもしれない。変わりやすい事実は、AIにもう1度たずねるのではなく、現実のほうに当てにいく。その向きの違いが、今回は効きました。AIに「どこが間違っている?」と聞くと、AIの記憶の内側で答えが完結します。現実に「今はどうなっている?」と聞くと、答えはいまの世界から来ます。同じ確認でも、たずねる相手を記憶から現実へ移すだけで、返ってくる答えの鮮度が変わります。

自信のある答えほど、日付を確かめる

ここで1つ気をつけたいのは、AIの古い答えに、迷いの色がないことです。間違っているときも、合っているときと同じ口調で返してきます。だから、答えの言い回しからは、それが新しいか古いかを見分けられません。見分ける手がかりは、答えの中ではなく、その答えが「いつの世界の話か」という一点にあります。文面の確信の強さと、内容の鮮度は、別物だと考えたほうがよさそうです。

私は、こう線を引くようにしています。考え方ややり方の筋、つまりめったに変わらないことは、AIに大いに頼る。でも、バージョン、仕様、価格、できることの上限といった、時間とともに動くものは、最後にいまの情報源で確かめ直す。AIを疑うというより、AIの得意と不得意を分けて使う、という感覚です。賢さを疑うのではなく、鮮度を疑う。前者はAIの設計そのものへの不信になりますが、後者は使い方の調整で済みます。この一手間が、もっともらしい古い答えに足をすくわれるのを、ずいぶん防いでくれます。

注意したいのは、この手間を、つい省きたくなることです。答えに迷いがないと、こちらもつい信じてしまう。わざわざ調べ直すのは、2度手間に思えます。でも今回のように、たった1つの古い数字のせいで、すべてが動かなくなることがある。確かめる数十秒をけちって、動かない原因を半日探すほうが、よほど高くつきます。割に合うかどうかで考えれば、鮮度の確認は、疑り深さではなく、近道のほうです。

あなたのコードが動かなかったら

もしあなたが、AIに手伝ってもらったものが動かなくて、自分のどこが悪いのかと探しあぐねたら、いったん、AIが前提にした値そのものを疑ってみてください。バージョン、仕様、決まりごと。それは、今日もまだ正しい値でしょうか。

AIは、自分の知識がいつのものかを、自分では教えてくれません。だから、変わりやすいところは、こちらから今の世界に当てにいく。動かない原因は、あなたの手元ではなく、AIの記憶の日付のほうにあるかもしれません。

今日からできるのは、AIの答えを「いつのものか」で仕分ける癖です。これは普遍的な考え方の話か、それとも今この瞬間の数字の話か。前者なら大いに頼り、後者なら一次情報に当てにいく。その仕分けひとつで、古い答えに引っかかる回数は、ぐっと減ります。次回は、その「日付」のせいで、AIがそもそも知りようのなかったものを、どう補ったかの話を。新しすぎる料理を前に、AIが値を当てられなかったのです。


これは、自分の治療のために作っている自作自用版での話です。広く公開しているのは記録と集計に絞った carb-icr(無料・通信なし・ブラウザで動くPWA)。プロジェクトの概要は carb-icr のプロジェクトページ に。

本アプリは記録と集計の補助で、表示される値はすべて参考です。診断・治療、インスリン投与量の計算、治療パラメータの決定は行いません。投与量・治療方針は必ず主治医の指示に従ってください。