概要
- LLMのコンテキストウィンドウ の制限による履歴圧縮(コンパクション)の必要性
- Piなどのコーディングエージェント でのコンパクション発生タイミングと仕組み
- 会話履歴の要約・圧縮方法 とPi独自の実装ポイント
- プロンプトキャッシュ への影響とコスト最適化の工夫
- カスタム圧縮プロンプト による拡張・実験の可能性
コーディングエージェントにおけるコンパクションの仕組み
- LLM(大規模言語モデル) は コンテキストウィンドウ により処理可能な入力量が制限
- コーディングエージェント では会話履歴やツール呼び出し結果がリクエストごとに蓄積
- 履歴が コンテキストウィンドウ を超えると エラー (リクエストサイズ超過)発生
- 新規会話開始または 履歴の要約(コンパクション) で対応
- コンパクションは 古い履歴を要約し、最新メッセージを保持 することで、会話継続を可能化
Piのコンパクション実装
- Pi は会話が長くなると自動または手動(/compactコマンド)で コンパクション を実行
- ターン終了時 に自動チェック、または コンテキストエラー発生時 に即時実行
- 直近のメッセージのみ保持 し、それ以前を要約
- 保持メッセージ数 はトークン数で調整(デフォルト2万トークン、約5~20ターン分)
- 要約時は Pi専用プロンプト を使用し、目的・進捗・重要決定事項を構造化してまとめる
- 要約結果は セッション内にテキストとして保存 し、モデル切替や移行も容易
プロンプトキャッシュとコンパクションの関係
- プロンプトキャッシュ は同一会話内のリクエストコスト最適化に利用
- コンパクション実施後 はキャッシュのプリフィックスが変わるため、一度キャッシュが無効化
- 以降のリクエストでは新しいプリフィックスで再度キャッシュが有効化
- キャッシュ無効化により、 一時的にコスト増加 するが、その後は再び最適化
Piの拡張性とカスタムコンパクション
- Piは拡張性が高く、独自のコンパクション手法を実装可能
- カスタムプロンプト による要約機能のテストや拡張が容易
- Piに拡張リクエストを行い、 独自の要約アルゴリズム を組み込むことが可能
このように、コーディングエージェントでの 会話履歴圧縮(コンパクション) は、長時間のセッションや大規模なやり取りを効率的に継続するための重要な技術。 Pi は柔軟かつ効率的なコンパクション機能を備えており、カスタマイズや最適化も可能。