第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 一覧などに最適。

キャッシュ可能な場所

  • system
  • messages (一部)
  • 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 が支配的になること。

▶ Playground を開いて実行

理解度チェック

4 問のクイズで理解度を確認しましょう。

クイズを開く
🎉

まとめ

お疲れ様でした!