この文書は、LLM のタスク実行で発生するコンテキスト消費を、品質条件を守りながら最小化するための定式化と運用方針を示す。
対象となるタスク集合
可能なら品質を上げて、LLM の総コンテキスト消費を最小化する。
意図は次の3点で見る。
- 高頻度タスクほど、1回あたりの削減量が同じでも全体への影響が大きい
- 1回あたりの消費が大きいタスクほど、圧縮して得られる効果が大きい
- 品質違反リスクが高い改善は、品質制約を満たす場合にのみ採択する
以下の数式では、まず第2節で記号を定義し、それを第3・4節で使って評価・最適化を構成する。
-
$T$ : 対象タスクの集合 -
$i \in T$ : タスクID -
$v$ : タスク$i$ の候補改善案(この文書ではバリアントと呼ぶ) -
$f_i$ : タスク$i$ の観測窓(例えば1週間)あたりの呼び出し回数 -
$u_i$ : タスク$i$ の改善前、1回あたりコンテキスト消費(平均) -
$r_i(v)$ : 候補改善案$v$ を入れたときの、理想的な1回あたり削減見込み(平均) -
$s_i(v)$ : 候補改善案$v$ の成功率($0 \le s_i(v) \le 1$) -
$q_i(v)$ : 候補改善案$v$ の品質違反率($0 \le q_i(v) \le 1$,$q=0$ が理想) -
$e_i(v)$ : 候補改善案$v$ の導入工数コスト(相対値) -
$B$ : 全体で使える導入工数予算 -
$C_0$ : 最適化前の全体コンテキスト推定値 -
$C_i(v)$ : タスク$i$ に改善案$v$ を適用した場合の観測窓あたり期待コンテキスト -
$gain_i(v)$ : タスク$i$ の改善案$v$ による1回あたり期待削減量 -
$V_i(v)$ : タスク$i$ の理想的圧縮価値(frequency × 削減見込み) -
$V_i^{safe}(v)$ : 品質を考慮した圧縮価値 -
$score_i(v)$ : 候補改善案$v$ の工数効率指標
各タスクの観測窓あたりの最適化前消費を足し合わせる。
この窓は実運用で決める(例: 1日、1週間など)。
全体コストは「回数 × 1回あたり」を総和して計算する。
最適化前の想定コストは次式で表す。
タスク
タスク
ここで
まず1回あたりの削減を定義する。
成功率
ここで
観測窓内合計は以下。
この量を圧縮価値として
と定義する。
すなわち
直感的には次の意味になる。
-
$r_i(v)$ が実際の削減を示しても、リソース不足や入力分布ズレで品質が下がると、
実際の有効な削減は$s_i(v)$ (成功)で一度フィルタされる。 - さらに品質違反が起きる確率が
$q_i(v)$ だけあるなら、
1 - q_i(v)分だけのみ目標品質を満たし、圧縮価値が残る。 - どちらか一方が小さいと、積の値も小さくなり、採用候補の優先度も下がる。
このため、$gain_i(v)=r_i(v),s_i(v),(1-q_i(v))$ は 「品質要件を同時に満たす確率を考慮した1回あたり期待削減量」と読む。
ここで
score の単位は トークン/工数(例: tokens/人時)。
score が高いほど、1単位の工数あたりで見込める実質節約が大きい、という「効率」比較になる。
一方で「このタスクを触るべきか」は、同じタスク内の比較だけでなく「未採用」と比較する必要がある。
そのため実運用では、各タスクの候補集合に「未採用($v=\varnothing$)」を入れ、
で寄与を定義して最適化する。
このとき score は効率、$ΔC_i^{safe}$ は採否の土台、という役割分担になる。
本節の最適化手順は、タスク集合ごとに実行する「選定アルゴリズム」として実装される。
実装名では selectVariants と呼ぶ。
この問題は、「限られた導入予算内で、採用すると良い改善をどのタスクに何個入れるか」 を決める、「予算付きの選択問題」と見なせる。
- 各タスクは 1 つしか採用しない(または未採用)
- 予算を超えないようにする
- 品質条件を破らないようにする
数式で書くと次のとおり。
各タスク
制約は次の3つ。
-
$\sum_{i\in T}e_i(v_i) \le B$ - 直感的な意味: 選ぶ提案の導入工数の総和が、全体予算
$B$ を超えない。
- 直感的な意味: 選ぶ提案の導入工数の総和が、全体予算
- 各
$i$ に対して、採用候補は 高々1つ(または未採用)- 直感的な意味: 同じタスクで2案を同時に併用しない。
-
$q_i(v_i)\le \bar q_i$ (または運用上の閾値)- 直感的な意味: 品質違反率が許容上限を超えない(採用価値が高くても除外)。
初版実装では、各タスクの最良スコア候補を算出し、全体を総合比較して選定する貪欲近似を採用している。 このとき数式は、
- 「各タスクは未採用 or 1案だけ」
- 「そのうちにどれを入れるか」
の制約を守りつつ、「単位予算当たりの実効削減量」だけでなく、 「絶対的に効き目の大きい改善」も一度比較する ために使っている。
出力品質・運用環境は時間で変わるため、$f_i$,
再計測ループを回して更新する。
- 週次またはイベント時に最新ログを収集
- 選定アルゴリズム(
selectVariants)の再実行 - 選定差分を反映
- 失敗率が悪化したらロールバック
本フレームワークの最適化対象は、自由文より 構造化出力 を前提とする。
少なくとも以下が必要。
- 形式固定(JSON または同等の schema 検証)
- 成否判定フィールド
- スキル使用有無
- エビデンス要約
- 次アクション(例: retry / done / send_reminder)
この前提がないと、評価関数の再現性が崩れ最適化が成立しない。
-
qualityGateは厳密寄り(0.95〜0.98) - 失敗が高コストなら
$q_i(v)$ を重く扱う - 成功率計測は3回以上、理想は5回以上で実施
本書は「タスク選定と評価ロジック」に対してのみ構造化した記述を与える。
実装詳細は src/core、運用手順は docs/usage.md を参照。