文章を渡すと、文章が出てくる
文章を書く人工知能のことを、大規模言語モデルという。英語で large language model、その頭文字をとって LLM とも書く。オープンAIの GPT、グーグルの Gemini、アンソロピックの Claude が、それにあたる。以下ではモデルと呼ぶ。
このモデルにできる操作は、一つしかない。
文字列を渡すと、文字列が返ってくる。それだけである。会話も、資料を読ませるのも、道具を使わせるのも、全部この一つの上に建っている。
前の話は、覚えていない
モデルは、外のプログラムから呼び出して使う。その呼び出し口のことを API という。その説明書に、こう書いてある。
この API は状態を持たないので、常に会話の履歴の全体を送ってください
隠された仕様ではない。最初のページに書いてある。
つまり、一回呼び出すごとに完全に独立している。前回何を話したかは、向こう側に残らない。会話の履歴は、こちらが持つ。
では、話が続いているように見えるのは何なのか。
毎回、それまでの全部を送り直しているのである。
三往復目の呼び出しでは、一往復目の質問と答え、二往復目の質問と答え、そして今回の質問を、ぜんぶ並べて渡している。十往復目なら、九往復分を毎回まるごと送っている。モデルの側は、そのたびに初めてそれを読む。
覚えていたのではない。毎回、思い出させていた。
道具を使うのも、文字列である
いま、人工知能に検索させたり、ファイルを読ませたり、プログラムを走らせたりできる。あれも同じ仕組みでできている。
まず、使える道具の一覧を、文字列にして渡す。モデルはその中から、この道具に、この文字列を渡して使え、というものを出す。それだけである。実際に検索するのも、ファイルを開くのも、外側にいるプログラムがやる。
結果が出たら、それをまた文字列にして、会話の続きとして送り返す。モデルは初めてそれを読んで、次の文字列を返す。
道具を使っているように見えるが、モデルがやったのは、道具の名前を書いた文字列を出したことだけである。
会話が長くなると、毎回が重くなる
ここから、実務的な帰結が一つ出る。
やりとりが長くなるほど、一回あたりに送る量が増える。三往復目より十往復目の方が、同じ一言を返させるのに何倍もかかる。時間も、料金も、そこに比例する。
長い会話の後半で急に遅くなった、高くなった、という感覚は錯覚ではない。実際に、毎回もっと大きな束を送っている。
覚えているように見えるものは、全部外側の仕事
まとめると、こうなる。
モデルは何も覚えていない。一回ごとに、渡されたものだけを読んで、文字列を返す。
昨日の話を踏まえてくれた、前に言った好みを覚えていた、という体験があるとすれば、それはモデルが記憶したのではない。外側にいるプログラムが、昨日の記録を引っ張り出して、今回の入力にこっそり混ぜている。
だから、記憶の良し悪しは、モデルの賢さの話ではない。何をどう混ぜるかを決めている、外側の設計の話である。