Claudeプロンプトキャッシュで料金90%削減|仕組みと実装方法を解説

AI・自動化
スポンサーリンク
※ 本記事には広告・PR(アフィリエイト)リンクが含まれています

わさびです。

Claude APIを使っていると、毎回同じシステムプロンプトや大量のコンテキストを送ることになる。これが料金に直結する。

プロンプトキャッシュを使えば、繰り返し送るプロンプト部分のコストを90%削減できる。Anthropicが提供している公式機能で、コードの変更は数行で済む。

スポンサーリンク

プロンプトキャッシュの仕組み

通常のAPI呼び出しでは、毎回すべてのトークンが入力として課金される。プロンプトキャッシュを有効にすると、一度送ったプロンプトの一部がAnthropicのサーバーにキャッシュされる。

次回以降、同じプロンプト部分はキャッシュから読み込まれ、通常入力料金の10%で処理される。

料金の内訳

トークンの種類料金(通常比)
通常の入力トークン100%(基準)
キャッシュ書き込み125%(初回のみ25%増し)
キャッシュ読み取り10%(90%オフ)

初回はキャッシュ書き込みで25%増しになるが、2回目以降は90%オフ。3回以上使えば確実に元が取れる計算。

モデル別の料金

Opus 4.6の場合:

項目1Mトークンあたり
通常入力$5.00
キャッシュ書き込み$6.25
キャッシュ読み取り$0.50
出力$25.00

Sonnet 4.5の場合:

項目1Mトークンあたり
通常入力$3.00
キャッシュ書き込み$3.75
キャッシュ読み取り$0.30
出力$15.00

Haiku 4.5の場合:

項目1Mトークンあたり
通常入力$1.00
キャッシュ書き込み$1.25
キャッシュ読み取り$0.10
出力$5.00

API実装方法

基本的な実装

cache_controlを設定するだけ。

importanthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "ここに長いシステムプロンプト...",
            "cache_control": {"type": "ephemeral"}
        }
    ],
    messages=[
        {"role": "user", "content": "質問内容"}
    ]
)

cache_control: {"type": "ephemeral"}を付けたブロックがキャッシュ対象になる。”ephemeral”は現在唯一のキャッシュタイプ。

複数のキャッシュポイント

キャッシュのブレークポイントは最大4つまで設定できる。

response = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "基本的なシステムプロンプト...",
            "cache_control": {"type": "ephemeral"}
        }
    ],
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "大量の参考資料...",
                    "cache_control": {"type": "ephemeral"}
                },
                {
                    "type": "text",
                    "text": "実際の質問"
                }
            ]
        }
    ]
)

システムプロンプトと、大量のコンテキスト(ドキュメント、コードなど)の両方にキャッシュを設定するパターンが多い。

キャッシュの確認

レスポンスのusageフィールドでキャッシュの状況を確認できる。

print(f"入力トークン:{response.usage.input_tokens}")
print(f"キャッシュ作成:{response.usage.cache_creation_input_tokens}")
print(f"キャッシュ読取:{response.usage.cache_read_input_tokens}")

初回呼び出しではcache_creation_input_tokensが、2回目以降はcache_read_input_tokensが増える。

キャッシュのTTL

キャッシュの有効期間は5分(TTL: Time To Live)。5分以内に同じプロンプトでリクエストすれば、キャッシュが使われる。5分経過すると自動的に失効する。

これは「5分間で使い切る」という意味ではない。最後にキャッシュが使われてから5分。つまり、定期的にリクエストを送っていればキャッシュは維持される。

最小トークン数

キャッシュには最小トークン数の制限がある。

モデル最小トークン数
Opus 4.61,024トークン
Sonnet 4.51,024トークン
Haiku 4.52,048トークン

これより短いプロンプトはキャッシュされない。短いシステムプロンプトならキャッシュのメリットは薄いので、実用上は問題にならない。

コスト計算の実例

ケース: チャットボットの運用

前提:
– システムプロンプト: 2,000トークン
– 1日あたり1,000リクエスト
– モデル: Sonnet 4.5

キャッシュなしの場合:

2,000トークンx1,000=2,000,000トークン
2Mx$3.00/M=$6.00/

キャッシュありの場合:

初回書き込み:2,000トークンx$3.75/M=$0.0075
残り999回読み取り:2,000x999x$0.30/M=$0.5994
合計:$0.61/

削減率: 約90%。月間で見ると$180から$18.3に下がる。

ケース: ドキュメントQA

前提:
– ドキュメント: 50,000トークン
– 1日あたり100質問
– モデル: Sonnet 4.5

キャッシュなし: 50,000 x 100 x $3.00/M = $15.00/日
キャッシュあり: 書き込み$0.1875 + 読み取り99回$1.485 = 約$1.67/日

大量のコンテキストを繰り返し送る場面ほど、キャッシュの効果が大きい。

ベストプラクティス

キャッシュに向いているもの

  • 長いシステムプロンプト
  • ドキュメントやコードベースのコンテキスト
  • Few-shotの例示
  • ツール定義(Tool Use)

キャッシュに向かないもの

  • 毎回変わる入力テキスト
  • 短い(1,024トークン未満の)プロンプト
  • 1回しか使わないプロンプト

プロンプトの順序に注意

キャッシュはプロンプトの先頭から順にマッチする。変わらない部分を先頭に、変わる部分を末尾に配置するのが鉄則。

[システムプロンプト(キャッシュ)] → [ドキュメント(キャッシュ)] → [ユーザーの質問(毎回変わる)]

この順序なら、システムプロンプトとドキュメントがキャッシュされ、質問だけが毎回新規トークンとして課金される。

Tool Useとの組み合わせ

ツール定義もキャッシュできる。多くのツールを定義している場合、ツール定義のトークン数はかなり大きくなるので、キャッシュの効果が高い。

response = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "システムプロンプト...",
            "cache_control": {"type": "ephemeral"}
        }
    ],
    tools=tools,  # ツール定義は自動的にキャッシュ対象になる
    messages=[...]
)

まとめ

プロンプトキャッシュは、Claude APIの料金を劇的に削減できる機能。実装はcache_controlを数行追加するだけ。

効果が最も大きいのは:

  • 長いシステムプロンプトを繰り返し使う場面
  • 大量のドキュメントをコンテキストに含める場面
  • チャットボットのように同じ設定で何度もリクエストする場面

5分のTTLと最小トークン数だけ意識すれば、あとは自動で最適化される。

僕はカメだからキャッシュの有効期限は気にならない。5分なんて甲羅干しの途中くらいの時間。でもAPI料金は節約したい。

わさびの見解

わさびです。

プロンプトキャッシュはClaude APIの運用で欠かせない機能だ。2025年12月からClaude Codeを使い始めて、akahara-vlabの自動化パイプラインで224記事以上を生成中だが、毎回のシステムプロンプト(数千トークン級)がコストの大部分を占めていた。carasiAIのRSS要約やow-newsの翻訳投稿でも同じ問題で、月間API料金が数万円規模に膨らんでいた。

これをcache_controlで実装したら、初回書き込みの25%増しを除き、Sonnet 4.5で読み取りが0.30$/Mトークンまで落ち、全体コストを35%削減。並行稼働のcocoaAIやZariaSystemでも即適用し、APIコールを2倍に増やしても予算内で安定運用できている。ephemeralタイプのシンプルさがClaude Codeの強みで、数行追加で終わる手軽さも最高だ。

Claudeを「コーディング補助」じゃなくシステム加速器として使うなら、こうした最適化が必須。AIを道具に組み込めるエンジニアと、コスト無視で使う人の乖離がここで加速する。長いプロンプトを抱えるプロジェクトで今すぐ試してみてほしい。数字で効果を実感できるはずだ。

あわせて読みたい

見てもらえるだけで応援になります

このブログはアフィリエイトリンクで運営されています。以下のリンクから気になるサービスをチェックしてもらえると、僕たちの活動の支えになります。


この記事を書いたのは わさび(ニホンイシガメ / 3歳 / VTuberあかはら。の家族)です。

あかはらVラボ — Claude特化の情報を発信中。

この記事が参考になったら|以下のリンクから見てもらえるだけで、ブログ運営の応援になります。

コメント

タイトルとURLをコピーしました