Prompt Cachingとは
Prompt Caching(プロンプトキャッシング)とは、AnthropicのClaude APIが提供するプロンプトの一部をサーバー側でキャッシュする機能です。長いシステムプロンプトやドキュメント、ツール定義など「繰り返し同じ内容を送る部分」をキャッシュに保存することで、2回目以降のAPIリクエストでは料金を最大90%削減し、レイテンシを最大85%改善できます。
イメージとしては、毎回同じ1万トークンの社内マニュアルをClaudeに渡して質問を繰り返す場合、通常なら1回ごとに1万トークン分の入力料金がかかります。Prompt Cachingを使えば、このマニュアル部分が「キャッシュ読み込み料金」(通常の約10分の1)で済むため、AIチャットボットやRAGシステムのランニングコストを劇的に下げられるのが大きな魅力です。
Prompt Cachingの読み方
プロンプトキャッシング
プロンプトキャッシュ
Prompt Cachingの仕組み
Prompt Cachingは、2024年にAnthropicが正式発表した機能で、プロンプトの先頭から指定した位置までをキャッシュブレークポイントとして設定できます。Claudeは、キャッシュ対象の部分に対して内部的なキーを生成し、次回以降に同じ内容のプロンプトが送られてきた場合、計算済みの内部状態を再利用します。
キャッシュの流れ
Prompt Cachingの仕組み
(キャッシュ書込料金)
(TTL: 5分 or 1時間)
(キャッシュ読取料金、約1/10)
キャッシュブレークポイント
APIリクエストでは cache_control: {"type": "ephemeral"} をメッセージの特定位置に付けることで、その位置までをキャッシュ対象とします。最大4つのブレークポイントを設定でき、システムプロンプト、長文ドキュメント、ツール定義のように段階的にキャッシュを積み上げることが可能です。重要なポイントです:キャッシュは完全一致で判定されるため、1文字でも変わると再利用されません。
TTL(有効期限)
キャッシュのTTLは標準で5分(自動延長)、明示的に1時間まで指定できます。5分の間にリクエストがなければキャッシュは失効します。対話型チャットボットや1時間以内に複数回呼び出されるエージェントワークフローに最適です。
Prompt Cachingの使い方・実例
Prompt CachingはClaude APIのMessages APIで使用します。以下はPythonとAnthropic公式SDKでの実装例です。
from anthropic import Anthropic
client = Anthropic()
LONG_DOC = "..." # 1万トークン相当の社内マニュアル
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system=[
{
"type": "text",
"text": "あなたは社内ヘルプデスクです。"
},
{
"type": "text",
"text": LONG_DOC,
"cache_control": {"type": "ephemeral"}
}
],
messages=[
{"role": "user", "content": "経費精算の締切はいつですか?"}
]
)
print(response.content)
# usage.cache_creation_input_tokens (1回目: キャッシュ書込料金)
# usage.cache_read_input_tokens (2回目以降: キャッシュ読取料金)
実務では、最初の呼び出しで cache_creation_input_tokens にカウントされ、2回目以降は cache_read_input_tokens にカウントされることを監視するのがポイントです。これで実際にキャッシュが効いているかをモニタリングできます。
Prompt Cachingのメリット・デメリット
メリット
最大のメリットはコスト削減です。キャッシュ読み取り料金は通常の入力料金の約10%(モデルによる)で、長文ドキュメントを毎回送る場面では驚異的な節約になります。2番目のメリットはレイテンシ改善で、大規模プロンプトの処理時間が大幅に短縮され、ユーザー体験が向上します。3番目のメリットは会話履歴の効率化で、長い会話ログをキャッシュすることでマルチターン対話のコスト増加を抑えられます。
デメリット
デメリットは主に3点です。第一に、キャッシュ書き込みは通常料金より高い(モデルによっては25%増し)。1回しか使わないプロンプトにキャッシュを付けると逆にコスト増になります。第二に、TTLが5分〜1時間と短いため、アクセス頻度が低い用途には向きません。第三に、キャッシュは完全一致判定なので、システムプロンプトに動的な日付・ユーザーIDなどを含めるとヒット率が下がります。注意して使い分けることが重要です。
Prompt CachingとRAGの違い
| 項目 | Prompt Caching | RAG |
|---|---|---|
| 目的 | コスト削減・高速化 | 大規模情報源への動的アクセス |
| ドキュメント量 | 数万〜数十万トークン | 無制限(必要部分のみ抽出) |
| 更新頻度 | 低頻度更新が向く | 頻繁な更新でもOK |
| 精度 | 全文理解可能 | 検索精度に依存 |
両者は競合ではなく補完関係にあります。RAGでドキュメントを絞り込み、結果をPrompt Cachingで再利用するハイブリッド構成が実務では有効です。
よくある誤解
誤解1: Prompt Cachingを使えば常に安くなる
1回しか呼ばれないプロンプトでキャッシュを作ると、むしろコスト増になります。呼び出し頻度と内容の再利用性を見極める必要があります。
誤解2: キャッシュは永続化される
Anthropicのキャッシュは ephemeral(一時的)で、TTLが切れれば消えます。長期保存ではなく短期最適化のための機構です。
誤解3: 同じ内容ならどこでもキャッシュされる
キャッシュは組織(Organization)単位で管理され、異なるAPIキー・異なるモデル間では共有されません。
実務での活用シーン
実務では、以下のような場面でPrompt Cachingが強力に効きます。大規模なシステムプロンプトを使ったRAGチャットボット、法令・契約書の分析ツール、コードベース全体を読み込ませるエージェント、ドキュメントQAサイト、マニュアルベースの社内ヘルプデスクなど。覚えておきたいのは、5分以内に同一プロンプトが10回以上呼ばれる用途でROIが最大化するという点です。
よくある質問(FAQ)
Q1. Prompt Cachingはどのモデルで使えますか?
Claude Opus 4.6、Sonnet 4.6、Haiku 4.5などの現行モデルで利用可能です。旧モデルでも対応しているものがありますが、最新の対応表はAnthropic公式ドキュメントを確認してください。
Q2. 最小キャッシュサイズは?
モデルにより異なりますが、一般的に1,024トークン以上のプロンプトが対象です。それ未満のプロンプトにキャッシュマーカーを付けても機能しません。
Q3. キャッシュのヒット率をどう確認しますか?
APIレスポンスの usage フィールドに cache_creation_input_tokens と cache_read_input_tokens が含まれます。後者が増えていればキャッシュがヒットしています。
Q4. OpenAIのPrompt Cachingとの違いは?
OpenAIはプロンプト先頭の自動キャッシュで、設定不要の代わりに制御ポイントを指定できません。Anthropicは明示的ブレークポイント方式で、細かく対象範囲を制御できます。
まとめ
- Prompt CachingはClaude APIのプロンプト再利用機能で、コスト最大90%削減・レイテンシ最大85%改善
- 明示的な
cache_controlマーカーでブレークポイントを指定する方式 - TTLは5分(自動延長)または1時間で、短期最適化に特化
- キャッシュ書き込みは通常より割高なため、再利用性の高いプロンプトに使うのが鉄則
- RAGと組み合わせると、コスト・精度・速度のバランスが取れた本番システムを構築できる
- 長文システムプロンプト、長文ドキュメント、ツール定義の3箇所にブレークポイントを置くのが定番
cache_read_input_tokensをモニタリングして、実際にキャッシュが効いているか確認する
参考文献・出典
📚 参考文献・出典
- ・Anthropic「Prompt Caching」公式ドキュメント https://docs.claude.com/
- ・Anthropic News「Prompt caching with Claude」 https://www.anthropic.com/news/prompt-caching
- ・Anthropic API Reference https://docs.claude.com/en/api/
Read this article in English:
What Is Prompt Caching? Claude’s API Feature for Reducing Cost and Latency →




































コメントを残す