Agentic OS 技術スタックを下から読む 補講(12):同じ前置きを、二度読まない ―― 取っておいて使い回す、という節約
補講十一では、底の素材まで降りました。何を集め、どう整え、どう鍛えるかを見ました。
Agentic OS 技術スタックを下から読む 補講(12):同じ前置きを、二度読まない ―― 取っておいて使い回す、という節約
続・上の現場へ ―― 同じ前置きを、何度も読み直していた
補講十一では、底の素材まで降りました。何を集め、どう整え、どう鍛えるかを見ました。
今回は、そこから上へ戻ります。鍛え終えた重い本体を、毎回使う現場へ戻ります。
一つ問うたびに、決まった指示を渡します。長い説明も渡します。前のやり取りも貼ります。これらは、答えを書かせる前の土台です。ここでは、まとめて前置きと呼びます。
問題は、この前置きが、ほとんど変わらないことです。それなのに、毎回、先頭から読み直していました。同じ指示を読み、同じ説明を読み、同じ土台を、また組み直していました。
これは無駄です。
そこで、前置きを一度読んだときの途中状態を、取っておきます。次に同じ前置きが来たら、それを使い回します。今回は、この節約を、下から開きます。
読み込む相は、毎回そっくり同じ
第39回で見たように、答えを作る流れには、二つの相があります。
まず、与えられた文章をぜんぶ読む相があります。ここで、前置き、問い、資料を、順番に読みます。次に、答えを少しずつ書く相があります。こちらは、直前までに読んだものを手がかりにして、次の一文字を選びます。
重いのは、長い文章を読む相です。
読む相では、文章の一つ一つの位置について、前に出てきた語や文との関係を調べます。この指示は何を縛っているのか。この説明はどの部分に効くのか。この段落は、後ろの問いにどう関わるのか。そうした関係を、層を重ねながら作っていきます。
前置きが短ければ、負担は小さいです。けれども、前置きが何千行もあれば、読むだけでかなり重くなります。しかも、決まった指示や長い説明書は、毎回同じです。
同じなら、読む相で起きる計算も同じです。先頭から同じ文字列を渡せば、同じ順番で同じ途中状態が作られます。同じ本の同じ前書きを、質問のたびに頭から読み直しているようなものです。
計算済みの途中状態を、取っておく
そこで、一度読んだ前置きを、ただ捨てません。
前置きを読み終えた時点で、本体の中には、計算済みの途中状態が残っています。これは原文そのものではありません。前置きの文字を、そのまましまった写しでもありません。
もっと内側のものです。
前置きを読んだあと、どの位置で何を見たか。どの語が、どの前の語と結びついたか。どの指示が、後ろの答えを縛る土台になったか。そうした読み終えたしるしが、数の並びとして残ります。
このしるしを取っておきます。
次に、まったく同じ前置きが来たら、もう先頭から読みません。取っておいたしるしを出します。そして、その続きに新しい問いを足し、そこから答えを書き始めます。
つまり、読み込む相を丸ごと飛ばします。第39回で分けた二つの相のうち、前置きについての読む相だけを省きます。書き出す相は残ります。新しい問いや、新しく書く答えは、その場で扱う必要があるからです。
なぜ、これがそんなに効くのか
効くのは、長くて、変わらない前置きです。
たとえば、毎回同じ仕事の決まりがあります。出力の形、避ける表現、見るべき観点、読み手の前提、使ってよい資料の範囲。こうした決まりは、問いごとに変わりません。
また、長い説明書を毎回貼る場合もあります。商品の説明、社内の規則、画面の仕様、過去の決定、調査済みの資料。問いは一行でも、その前の土台が何千行になることがあります。
このとき、毎回重いのは問いではありません。前置きです。
問いが短いなら、新しく読む量は少ないです。けれども、長い前置きを毎回読むなら、短い問いのために、巨大な土台を何度も作り直すことになります。前置きを取っておけば、二回目からは、その土台作りを省けます。
一回だけなら、得は少ないです。取っておく手間もあります。けれども、同じ前置きを十回、百回と使うなら、話は変わります。最初の一回で土台を作り、あとは使い回します。読む時間も、計算の費用も、大きく減ります。
ここでの節約は、賢く短く読むことではありません。同じものを、二度読まないことです。
当たりと、外れ ―― 一字でも違えば、やり直し
ただし、条件は厳しいです。
取っておいたしるしがそのまま使えるのは、前置きが一字一句まで同じときだけです。余分な空白が入る。日付が変わる。番号が振り直される。先頭にその日の一言を足す。これだけで、同じ前置きではなくなります。
なぜ、そこまで厳しいのか。
読み終えたしるしは、前から順に積み上げて作られるからです。先頭の一字が変われば、その位置の読みが変わります。その変化は、次の位置へ伝わります。さらに、その次へ伝わります。後ろに行くほど、前の違いを含んだ状態になります。
途中の一字が違う場合も同じです。違うところより前は、同じしるしを使えるかもしれません。けれども、違ったところから後ろは、もう同じではありません。そこから先は作り直しです。
先頭が違えば、ほぼ全部やり直しです。途中が違えば、そこから後ろがやり直しです。最後だけが違うなら、助かる部分は大きいです。
当たれば大きく得をします。外れれば、ほとんど得をしません。この仕組みは、その差がはっきりしています。
だから、固定を前に、変化を後ろに
この条件が、前置きの組み方を決めます。
変わらないものは、前に置きます。決まった指示。共通の説明。いつも使う資料。守るべき書式。これらを、先頭にまとめます。
変わるものは、後ろに置きます。その時々の問い。今日だけの追加資料。利用者ごとの指定。今だけの条件。これらは、できるだけ最後に回します。
こうすると、長い前置きの大半が、毎回そっくり同じになります。取っておいたしるしが、後ろの変わる部分の直前まで当たり続けます。読む相を省ける範囲が長くなります。
逆に、変わる一語を前に混ぜると、後ろが全部巻き込まれます。たとえば、先頭近くにその日の時刻を書くとします。その下に長い説明書を置くとします。時刻は毎回変わります。すると、その下の説明書は同じでも、途中状態としては同じになりません。長い説明書を、また読み直すことになります。
順番ひとつで、節約は生きます。順番ひとつで、節約は消えます。
第4回で見た中間状態の話とも、ここでつながります。あちらは、中間状態を圧縮して持ち回る節約でした。今回は、同じ中間状態を取っておき、もう一度作らない節約です。似ていますが、狙いは別です。
どこに、いつまで取っておくか
もう一つ、決めることがあります。
取っておいたしるしを、どこに置くか。いつまで持つかです。
ここで、第39回や補講四で見た、置き場の階層がまた出てきます。速い置き場は、すぐ取り出せます。けれども、狭くて高いです。遅い置き場は、広くて安いです。けれども、取り出すまでに余分な手間がかかります。
何度も使う前置きは、速い置き場に残す価値があります。次の問いがすぐ来るなら、取り出しの速さがそのまま効きます。
たまにしか使わない前置きは、速い置き場を占め続けると邪魔になります。ほかの前置きを置けなくなるからです。そういうものは、遅くても広い置き場へ追い出すか、捨てます。
いつまで持つかも、取引です。
長く持てば、久しぶりに来た問いにも当たります。けれども、その間ずっと場所を使います。短く捨てれば、場所は空きます。けれども、少し後に同じ前置きが来ても、もう当たりません。また最初から読みます。
だから、よく使われる前置きは温存します。しばらく使われない前置きは、頃合いを見て捨てます。温存する時間と、空けておく容量を、いつも天秤にかけます。
取っておいて、使い回す ―― そして
まとめます。
前置きを取っておいて使い回す仕組みは、毎回同じ前置きを先頭から読み直す無駄をなくす工夫です。一度読み込んだ計算済みの途中状態を取っておきます。同じ前置きが来たら、それを出します。読み込む相を飛ばし、続きから書き始めます。
ただし、効くのは、前置きが完全に同じときだけです。一字でも違えば、違ったところから後ろは作り直しです。だから、固定の部分を前に置きます。変わる部分を後ろに置きます。
さらに、取っておく場所と時間も決めなければなりません。速い置き場は狭くて高いです。遅い置き場は広くて安いです。長く持てば当たりやすくなりますが、場所を占めます。短く捨てれば場所は空きますが、後の問いには外れます。
補講十一で、底の素材を整えて鍛える話をしました。今回は、その鍛え終えた重い本体を、現場で安く速く使う話でした。前に見た中間状態を圧縮して持つ節約とは別に、同じものを二度計算しない、という節約です。
取っておいた前置きは、置きっぱなしにすると、だんだん冷えて捨てられます。温かいうちに、また使えば得をします。
では、その「また使う」は、いつ起こすのでしょうか。待つのか。間を置くのか。何かが起きたら動くのか。次は、エージェントと時間です。いつ動き、いつ待ち、いつ眠るかの話へ降ります。補講は、まだ続く。
← 一覧へ