第4章 · Advanced Claude API
Prompt Caching でコスト削減
Prompt Caching
→ で次のスライド · F でフルスクリーン · N で講師ノート · Esc で終了
重要キーワード
Prompt Caching
プロンプトキャッシング
繰り返す入力部分の料金を割引する仕組み
cache_control
キャッシュ制御
ブロックにキャッシュ対象であることを指示するフィールド
TTL
有効期限
キャッシュが保持される時間 (デフォルト 5 分)
cache hit rate
ヒット率
キャッシュ読み出し / 全入力 の比率
Prompt Caching (プロンプトキャッシング)
長くて同じ内容を繰り返し送る場合、入力トークンを大幅に割引 できる仕組みです。 チャットボットの system prompt や RAG の参考資料、Tool 一覧などに最適。
キャッシュ可能な場所
systemmessages(一部)tools
使い方
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Pythonの歴史を教えて"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
料金
- キャッシュ書き込み: 通常入力の 1.25 倍。
- キャッシュ読み出し: 通常入力の 0.1 倍 (約 90% 割引)。
- 保存自体は無料。
TTL (有効期限)
デフォルトで 5 分。最後にアクセスされた時点で延長されます。 24 時間 TTL も指定可能 (料金は若干高い)。
wzxhzdk:1
設計のコツ
- 長く・固定 な部分にだけ付ける。
- ブレークポイントは 最大 4 つ まで設定可能。最も粒度の大きい単位で 1 つ、細かく分けるなら複数。
- 可変な部分にキャッシュを付けない (ヒット率がゼロになる)。
- 最低トークン数 (~1024) を満たさないとキャッシュ対象外。
usage で確認
wzxhzdk:2
Hit rate を測る
wzxhzdk:3
60-80% 以上 を目標にしましょう。
4 ブレークポイント戦略
wzxhzdk:4
コスト削減シミュレーション
長い system (10K トークン) を 100 回呼ぶ場合: - キャッシュなし: 10K × 100 = 1M トークン入力課金 - キャッシュあり: 10K (1.25x 書き込み) + 10K × 0.1 × 99 (読み出し) ≒ 0.11M トークン課金 - → 約 89% コスト削減
試す: usage を Playground で観察
Playground でも cache_read_input_tokens の表示が可能です。同じ system を 2 回送ってみてください。
Hands-on Exercise
演習: RAG の context にキャッシュを効かせる
FAQ 50 件 (約 10K トークン) を system に置き、ユーザー質問だけを user に渡す簡易 RAG を構築してください。
ユーザー質問を 5 回連続で送り、cache_creation_input_tokens / cache_read_input_tokens の推移を出力してください。
目標: 2 回目以降は cache_read が支配的になること。
🎉
まとめ
お疲れ様でした!