なんとなく理解しているつもりだったけど不安になったので文字で書き出してみました。
Xで公開した元記事を、画像と本文をそのままLineとして残します。
元記事をXで読む
参考にした記事
Claudeの公式ドキュメント
https://platform.claude.com/docs/en/build-with-claude/prompt-caching
OpenAIの公式ドキュメント
https://developers.openai.com/api/docs/guides/prompt-caching
Claudeのブログ
https://claude.com/blog/lessons-from-building-claude-code-prompt-caching-is-everything
プロンプトキャッシュってなんだっけ
ざっくりいうとAIに対して送信してくるときについてくる固定の背景情報になります?
もう少し細かくいうとAGNENTS.mdとかCLAUDE.mdやハーネスの情報が毎ターン送られその都度AIが解釈するとコストの無駄になってしますのでその辺りの固定情報をキャッシュかして良い感じにコストを落としているみたいです。
以下がその図になります。
- Base System Instructions(ハーネスの説明)
- Tools(ハーネスが持っている道具カタログ)
- CLAUDE.md(プロジェクト固有の固定プロンプト)
- Session State(そのセッション限定の説明。多分、このMCPが今有効になっているとかそういったもの)
- Message(みんなが書き込むAIに頼むテキスト)
意外と多くの情報が毎ターン送られてますよね。
基本的にはCLAUDE.mdまでの情報は固定しながらやり取りしキャッシュを上手く使えてると思います。
よくあるキャッシュを使わせないようにして行動として
- モデルを途中で切り替える
- thinkingレベルを途中で切り替える
- CLAUDE.mdを途中で書き換える
- 動的にツールを増やす
があります。(昔はよくやってしまっていました笑)
途中で固定の背景情報が切り替わるとその時点からそのセッションではキャッシュを利用出来づらくなるみたいでコストが無駄に増えてしまうことがあるので避けていきましょう。
上記の画像を見ると固定情報の変わる位置によってはキャッシュが全く利用できなくなることがあるみたいです。極端にいうとキャッシュに書き込まれた一番最初の文字が一文字違うとそれ以降の固定情報は全く拾えない?みたいです。
キャッシュに書き込む背景情報を安定させてキャッシュをガンガン読ませていきましょう。
トークン使用量を減らすためには、、、
話の流れでわかると思いますが背景情報を小さくしていくということになります
簡単にできるのは以下の3つになりますかね
- CLAUDE.md、AGNETS.mdの文字数を
- 不要なスキルは減らしていく
- 不要なMCPは減らしていく
更にトークン使用量を減らすには、、、
再度この画像に戻りますが
- Base System Instructions
- Tools
などの部分に手を入れて更に背景情報を小さくするというちょっと上級者向けのものがあります。純粋なClaudeCodeやCodexだとこのあたりに手を入れるのは難しいですよね。
そこで代表的なのがPiコーディングエージェントになります。
Piはread,write,grep,bashの4ツールしか持たないエージェントでよく使っていたmcpやweb検索機能は入っていません。これらの機能は自分で拡張として作ってPiにツールを追加していくという感じになります。
自分のやることに合わせて必要最低限のツールを有効無効にしていけばこのあたりもかなりコントロールすることができます。
ただ下手に作ると逆に利用するモデルの能力の低下を招くこともあるみたいなので検証しながらやっていきましょう。
Pi以外にもdeepseek harnessやfx、自作でエージェントを作る方もいたりと意外と選択技も多いのでこの辺りは調べるのは面白いです。あの手この手でトークン量を減らそうとしている感じでまだ見ぬテクニックがあったりします。(中国語圏で結構発展しているのが観測できているので英語以外の言語で検索するのもおすすめです)