Claude Prompt Caching入門:APIコストを90%削減する方法

同じシステムプロンプトを毎回送るたびにトークン代が飛んでいく——その無駄を90%カットするのがPrompt Cachingです。Claudeの隠れた節約機能を解説します。

AI初心者

AIを知りたい

Claude APIを使っていると、同じプロンプトを何度も送ることがあるんですけど、もっと効率的にできませんか?

AIエンジニア

AIエンジニア

それならPrompt Caching機能がぴったりです!同じプロンプトの一部をキャッシュして、コストと応答速度を大幅に改善できます。

AI初心者

AIを知りたい

キャッシュ?具体的にどうなるんですか?

AIエンジニア

AIエンジニア

通常は毎回プロンプト全体を処理しますが、キャッシュを使うと既に処理済みの部分をスキップできます。最大90%のコスト削減が可能になります。

Prompt Cachingとは

Prompt Cachingは、Anthropic Claude APIの機能で、プロンプトの一部をサーバー側にキャッシュすることで、繰り返しのAPI呼び出しのコストを削減し、応答速度を向上させる技術です。特にシステムプロンプトが長い場合やRAGで大量のドキュメントを渡す場合に効果を発揮します。

Prompt Cachingの仕組みと効果

AI初心者

AIを知りたい

どれくらいのコスト削減効果があるんですか?

AIエンジニア

AIエンジニア

具体的な数字を見てみましょう。

項目 通常 キャッシュ利用時
入力トークンコスト $3/百万トークン $0.3/百万トークン(90%削減)
キャッシュ書き込み – $3.75/百万トークン(初回のみ)
応答速度(TTFT) 通常 最大85%高速化
キャッシュ有効期間 – 5分(最終使用から)

Prompt Cachingの実装方法

AI初心者

AIを知りたい

実際にどうやって使うんですか?

AIエンジニア

AIエンジニア

Python SDKを使った実装例を見てみましょう。

基本的な実装:

import anthropic

client = anthropic.Anthropic()

# 長いシステムプロンプトをキャッシュ
response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "あなたは法律の専門家です。以下の法律文書を参照して...(長い文書)",
            "cache_control": {"type": "ephemeral"}
        }
    ],
    messages=[
        {"role": "user", "content": "契約解除の条件を教えてください"}
    ]
)

# キャッシュ利用状況の確認
print(f"入力トークン: {response.usage.input_tokens}")
print(f"キャッシュ読取: {response.usage.cache_read_input_tokens}")
print(f"キャッシュ作成: {response.usage.cache_creation_input_tokens}")

RAGでのPrompt Caching活用

AI初心者

AIを知りたい

RAG(検索拡張生成)でも使えるんですか?

AIエンジニア

AIエンジニア

RAGとの相性は抜群です!大量のドキュメントをコンテキストに含める場合、キャッシュの恩恵が最大になります。

# RAGでのキャッシュ活用例
documents = fetch_relevant_docs(query)

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=2048,
    system=[
        {
            "type": "text",
            "text": "以下のドキュメントを参照して回答してください。",
        },
        {
            "type": "text",
            "text": "n".join(documents),
            "cache_control": {"type": "ephemeral"}
        }
    ],
    messages=[
        {"role": "user", "content": query}
    ]
)

キャッシュ戦略のベストプラクティス

AI初心者

AIを知りたい

効果的なキャッシュの使い方ってありますか?

AIエンジニア

AIエンジニア

いくつかのポイントを押さえておきましょう。

戦略 説明 効果
システムプロンプトのキャッシュ 変更頻度の低い部分を先頭に配置 コスト削減大
ドキュメントの共通部分 複数クエリで共有される文書をキャッシュ TTFT改善大
会話履歴の活用 長い会話履歴をキャッシュして継続 レスポンス改善
最低トークン数の確認 1024トークン以上でないとキャッシュ不可 要件確認

AI初心者

AIを知りたい

コスト削減にかなり効きそうですね!

AIエンジニア

AIエンジニア

特にプロダクション環境で同じシステムプロンプトを繰り返し使う場合は必須の機能です。まずは小規模に試して効果を確認してみてください!

関連記事

Claude Prompt Cachingで長大コンテキストのコストを90%削減する実装例

Anthropic APIのPrompt Caching機能を使い、長いシステムプロンプトやドキュメントをキャッシュしてAPI呼び出しコストと応答速度を大幅に改善する方法を実装します。


import anthropic

client = anthropic.Anthropic()

# 長大なシステムプロンプト(ドキュメントや仕様書を含む想定)
long_system_prompt = """あなたは社内ナレッジベースのQAアシスタントです。
以下の社内ドキュメントに基づいて質問に回答してください。

## 製品仕様書(抜粋・数千トークンを想定)
- 製品名: DataFlow Pro v3.2
- リリース日: 2025年4月
- 主要機能: リアルタイムETL、ストリーム処理、バッチ処理
- 対応データソース: PostgreSQL, MySQL, MongoDB, S3, Kafka, BigQuery
- SLA: 99.95%のアップタイム保証
- セキュリティ: SOC2 Type II, ISO 27001準拠
- API Rate Limit: 1000 req/min (Standard), 5000 req/min (Enterprise)
...(実際には数千〜数万トークンのドキュメントが続く)..."""

# ---- cache_control を使った呼び出し ----
# system メッセージに cache_control を付与するとキャッシュ対象になる
response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": long_system_prompt,
            "cache_control": {"type": "ephemeral"}  # キャッシュを有効化
        }
    ],
    messages=[
        {"role": "user", "content": "DataFlow Proの対応データソースを教えてください"}
    ]
)

print("=== 1回目(キャッシュ作成) ===")
print(f"応答: {response.content[0].text}")
print(f"入力トークン: {response.usage.input_tokens}")
print(f"キャッシュ作成トークン: {response.usage.cache_creation_input_tokens}")
print(f"キャッシュ読取トークン: {response.usage.cache_read_input_tokens}")

# ---- 2回目の呼び出し(キャッシュヒット) ----
response2 = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": long_system_prompt,
            "cache_control": {"type": "ephemeral"}
        }
    ],
    messages=[
        {"role": "user", "content": "Rate Limitはプランごとにいくつですか?"}
    ]
)

print("n=== 2回目(キャッシュヒット) ===")
print(f"応答: {response2.content[0].text}")
print(f"入力トークン: {response2.usage.input_tokens}")
print(f"キャッシュ作成トークン: {response2.usage.cache_creation_input_tokens}")
print(f"キャッシュ読取トークン: {response2.usage.cache_read_input_tokens}")

# コスト比較の解説
print("n=== コスト効果 ===")
print("キャッシュなし (Sonnet): 入力 $3/MTok")
print("キャッシュ作成時:        入力 $3.75/MTok(25%割増)")
print("キャッシュ読取時:        入力 $0.30/MTok(90%削減)")
print("→ 2回目以降は入力コストが1/10に")

Prompt Cachingが特に有効なのは、長大なシステムプロンプト(社内文書・API仕様書・法律文書など)を繰り返し参照するユースケースです。初回呼び出し時にキャッシュが作成され(25%の追加コスト)、同一プレフィックスの後続リクエストではキャッシュされた部分のトークン料金が90%削減されます。キャッシュの有効期間は5分間で、その間にリクエストがあれば延長されます。注意点として、キャッシュはsystemメッセージの先頭から連続するテキストに対して有効であり、途中で内容を変更するとキャッシュミスが発生します。RAGシステムや社内QAボットなど、共通のコンテキストで多数の質問を処理する場面で大きなコスト効果を発揮します。