Loading...
    • 開発者ガイド
    • APIリファレンス
    • MCP
    • リソース
    • リリースノート
    Search...
    ⌘K
    最初のステップ
    Claudeの紹介クイックスタート
    モデルと価格
    モデル概要モデルの選択Claude 4.5の新機能Claude 4.5への移行モデルの廃止予定価格
    Claudeで構築
    機能概要Messages APIの使用コンテキストウィンドウプロンプトのベストプラクティス
    機能
    プロンプトキャッシングコンテキスト編集拡張思考エフォートストリーミングメッセージバッチ処理引用多言語対応トークンカウント埋め込みビジョンPDF対応Files API検索結果構造化出力
    ツール
    概要ツール使用の実装方法細粒度ツールストリーミングBashツールコード実行ツールプログラマティックツール呼び出しコンピュータ使用ツールテキストエディタツールWebフェッチツールWeb検索ツールメモリツールツール検索ツール
    エージェントスキル
    概要クイックスタートベストプラクティスAPIでスキルを使用
    Agent SDK
    概要クイックスタートTypeScript SDKTypeScript V2(プレビュー)Python SDK移行ガイド
    APIのMCP
    MCPコネクタリモートMCPサーバー
    サードパーティプラットフォームのClaude
    Amazon BedrockMicrosoft FoundryVertex AI
    プロンプトエンジニアリング
    概要プロンプトジェネレータプロンプトテンプレートの使用プロンプト改善ツール明確で直接的に例を使用(マルチショットプロンプティング)Claudeに考えさせる(CoT)XMLタグを使用Claudeに役割を与える(システムプロンプト)Claudeの応答を事前入力複雑なプロンプトをチェーン長いコンテキストのヒント拡張思考のヒント
    テストと評価
    成功基準の定義テストケースの開発評価ツールの使用レイテンシの削減
    ガードレールの強化
    ハルシネーションの削減出力の一貫性を向上ジェイルブレイクの軽減ストリーミング拒否プロンプトリークの削減Claudeをキャラクターのままに
    管理とモニタリング
    Admin API概要使用状況とコストAPIClaude Code Analytics API
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    機能

    プロンプトキャッシング

    プロンプトキャッシングは、プロンプト内の特定のプレフィックスから再開することで、API使用を最適化する強力な機能です。

    プロンプトキャッシングは、プロンプト内の特定のプレフィックスから再開することで、API使用を最適化する強力な機能です。このアプローチにより、反復的なタスクや一貫した要素を持つプロンプトの処理時間とコストが大幅に削減されます。

    以下は、cache_controlブロックを使用してMessages APIでプロンプトキャッシングを実装する方法の例です:

    curl https://api.anthropic.com/v1/messages \
      -H "content-type: application/json" \
      -H "x-api-key: $ANTHROPIC_API_KEY" \
      -H "anthropic-version: 2023-06-01" \
      -d '{
        "model": "claude-sonnet-4-5",
        "max_tokens": 1024,
        "system": [
          {
            "type": "text",
            "text": "You are an AI assistant tasked with analyzing literary works. Your goal is to provide insightful commentary on themes, characters, and writing style.\n"
          },
          {
            "type": "text",
            "text": "<the entire contents of Pride and Prejudice>",
            "cache_control": {"type": "ephemeral"}
          }
        ],
        "messages": [
          {
            "role": "user",
            "content": "Analyze the major themes in Pride and Prejudice."
          }
        ]
      }'
    
    # Call the model again with the same inputs up to the cache checkpoint
    curl https://api.anthropic.com/v1/messages # rest of input
    JSON
    {"cache_creation_input_tokens":188086,"cache_read_input_tokens":0,"input_tokens":21,"output_tokens":393}
    {"cache_creation_input_tokens":0,"cache_read_input_tokens":188086,"input_tokens":21,"output_tokens":393}

    この例では、「プライドと偏見」のテキスト全体がcache_controlパラメータを使用してキャッシュされています。これにより、複数のAPI呼び出し全体でこの大きなテキストを再利用でき、毎回再処理する必要がなくなります。ユーザーメッセージのみを変更することで、キャッシュされたコンテンツを利用しながら本について様々な質問をすることができ、より高速な応答と効率の向上につながります。


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

    プロンプトキャッシングを有効にしてリクエストを送信すると:

    1. システムは、指定されたキャッシュブレークポイントまでのプロンプトプレフィックスが最近のクエリからすでにキャッシュされているかどうかをチェックします。
    2. 見つかった場合、キャッシュされたバージョンを使用して、処理時間とコストを削減します。
    3. そうでない場合、完全なプロンプトを処理し、応答が開始されたらプレフィックスをキャッシュします。

    これは特に以下の場合に役立ちます:

    • 多くの例を含むプロンプト
    • 大量のコンテキストまたは背景情報
    • 一貫した指示を持つ反復的なタスク
    • 長いマルチターン会話

    デフォルトでは、キャッシュの有効期限は5分です。キャッシュされたコンテンツが使用されるたびに、追加コストなしでキャッシュが更新されます。

    5分が短すぎる場合、Anthropicは追加コストで1時間のキャッシュ期間も提供しています。

    詳細については、1時間のキャッシュ期間を参照してください。

    プロンプトキャッシングは完全なプレフィックスをキャッシュします

    プロンプトキャッシングは、cache_controlで指定されたブロックまでを含む、完全なプロンプト(tools、system、messagesの順)を参照します。


    価格設定

    プロンプトキャッシングは新しい価格体系を導入しています。以下の表は、サポートされている各モデルのトークンあたりの価格を示しています:

    ModelBase Input Tokens5m Cache Writes1h Cache WritesCache Hits & RefreshesOutput Tokens
    Claude Opus 4.5$5 / MTok$6.25 / MTok$10 / MTok$0.50 / MTok$25 / MTok
    Claude Opus 4.1$15 / MTok$18.75 / MTok$30 / MTok$1.50 / MTok$75 / MTok
    Claude Opus 4$15 / MTok$18.75 / MTok$30 / MTok$1.50 / MTok$75 / MTok
    Claude Sonnet 4.5$3 / MTok$3.75 / MTok$6 / MTok$0.30 / MTok$15 / MTok
    Claude Sonnet 4

    上記の表は、プロンプトキャッシングの以下の価格乗数を反映しています:

    • 5分キャッシュ書き込みトークンは基本入力トークン価格の1.25倍
    • 1時間キャッシュ書き込みトークンは基本入力トークン価格の2倍
    • キャッシュ読み取りトークンは基本入力トークン価格の0.1倍

    プロンプトキャッシングの実装方法

    サポートされているモデル

    プロンプトキャッシングは現在以下でサポートされています:

    • Claude Opus 4.5
    • Claude Opus 4.1
    • Claude Opus 4
    • Claude Sonnet 4.5
    • Claude Sonnet 4
    • Claude Sonnet 3.7 (非推奨)
    • Claude Haiku 4.5
    • Claude Haiku 3.5 (非推奨)
    • Claude Haiku 3
    • Claude Opus 3 (非推奨)

    プロンプトの構造化

    静的コンテンツ(ツール定義、システム指示、コンテキスト、例)をプロンプトの最初に配置します。cache_controlパラメータを使用して、キャッシング用の再利用可能なコンテンツの終わりをマークします。

    キャッシュプレフィックスは以下の順序で作成されます:tools、system、messages。この順序は、各レベルが前のレベルの上に構築される階層を形成します。

    自動プレフィックスチェックの仕組み

    静的コンテンツの終わりに1つのキャッシュブレークポイントを使用でき、システムは自動的にキャッシュされたブロックの最長マッチングシーケンスを見つけます。これがどのように機能するかを理解することは、キャッシング戦略を最適化するのに役立ちます。

    3つの核となる原則:

    1. キャッシュキーは累積的です:cache_controlでブロックを明示的にキャッシュすると、キャッシュハッシュキーは会話内のすべての前のブロックを順序付けてハッシュすることで生成されます。これは、各ブロックのキャッシュがそれより前のすべてのコンテンツに依存することを意味します。

    2. 逆順シーケンシャルチェック:システムは明示的なブレークポイントから逆方向に作業して、各前のブロックを逆順でチェックすることで、キャッシュヒットをチェックします。これにより、可能な限り最長のキャッシュヒットが得られます。

    3. 20ブロックルックバックウィンドウ:システムは各明示的なcache_controlブレークポイントの前の最大20ブロックのみをチェックします。20ブロックをチェックしてもマッチが見つからない場合、チェックを停止し、次の明示的なブレークポイント(存在する場合)に移動します。

    例:ルックバックウィンドウの理解

    30個のコンテンツブロックを持つ会話を考えてください。ここで、cache_controlをブロック30にのみ設定します:

    • 前のブロックに変更がなくブロック31を送信する場合:システムはブロック30をチェックします(マッチ!)。ブロック30でキャッシュヒットが得られ、ブロック31のみが処理される必要があります。

    • ブロック25を変更してブロック31を送信する場合:システムはブロック30 → 29 → 28... → 25(マッチなし)→ 24(マッチ!)から逆方向にチェックします。ブロック24は変更されていないため、ブロック24でキャッシュヒットが得られ、ブロック25~30のみが再処理される必要があります。

    • ブロック5を変更してブロック31を送信する場合:システムはブロック30 → 29 → 28... → 11(チェック#20)から逆方向にチェックします。20回のチェック後にマッチが見つからない場合、チェックを停止します。ブロック5は20ブロックウィンドウを超えているため、キャッシュヒットは発生せず、すべてのブロックが再処理される必要があります。ただし、ブロック5に明示的なcache_controlブレークポイントを設定していた場合、システムはそのブレークポイントからチェックを続行します:ブロック5(マッチなし)→ ブロック4(マッチ!)。これにより、ブロック4でキャッシュヒットが可能になり、編集可能なコンテンツの前にブレークポイントを配置する理由を示しています。

    重要なポイント:キャッシュヒットの可能性を最大化するために、会話の最後に明示的なキャッシュブレークポイントを常に設定してください。さらに、編集可能な可能性のあるコンテンツブロックの直前にブレークポイントを設定して、それらのセクションが独立してキャッシュできるようにしてください。

    複数のブレークポイントを使用する場合

    以下の場合は、最大4つのキャッシュブレークポイントを定義できます:

    • 異なる頻度で変更されるセクションをキャッシュする(例:ツールはめったに変更されませんが、コンテキストは毎日更新される)
    • キャッシュされる内容をより正確に制御する
    • 最終ブレークポイントの前の20ブロック以上のコンテンツのキャッシングを確保する
    • 編集可能なコンテンツの前にブレークポイントを配置して、20ブロックウィンドウを超えた変更が発生した場合でもキャッシュヒットを保証する

    重要な制限:プロンプトがキャッシュブレークポイントの前に20個以上のコンテンツブロックを持ち、それより前のコンテンツを変更する場合、追加の明示的なブレークポイントをそのコンテンツに近い場所に追加しない限り、キャッシュヒットは得られません。

    キャッシュの制限

    最小キャッシュ可能プロンプト長は:

    • Claude Opus 4.5の場合4096トークン
    • Claude Opus 4.1、Claude Opus 4、Claude Sonnet 4.5、Claude Sonnet 4、Claude Sonnet 3.7(非推奨)、Claude Opus 3(非推奨)の場合1024トークン
    • Claude Haiku 4.5の場合4096トークン
    • Claude Haiku 3.5(非推奨)およびClaude Haiku 3の場合2048トークン

    より短いプロンプトは、cache_controlでマークされていても、キャッシュできません。このトークン数未満をキャッシュするリクエストは、キャッシングなしで処理されます。プロンプトがキャッシュされたかどうかを確認するには、応答使用フィールドを参照してください。

    並行リクエストの場合、キャッシュエントリは最初の応答が開始された後にのみ利用可能になることに注意してください。並行リクエストのキャッシュヒットが必要な場合は、最初の応答を待ってから後続のリクエストを送信してください。

    現在、「ephemeral」が唯一サポートされているキャッシュタイプであり、デフォルトでは5分の有効期限があります。

    キャッシュブレークポイントコストの理解

    キャッシュブレークポイント自体はコストを追加しません。 以下の場合にのみ課金されます:

    • キャッシュ書き込み:新しいコンテンツがキャッシュに書き込まれる場合(5分TTLの場合、基本入力トークンより25%多い)
    • キャッシュ読み取り:キャッシュされたコンテンツがこのリクエストで使用される場合(基本入力トークン価格の10%)
    • 通常の入力トークン:キャッシュされていないコンテンツの場合

    より多くのcache_controlブレークポイントを追加しても、コストは増加しません。実際にキャッシュされて読み取られるコンテンツに基づいて同じ金額を支払います。ブレークポイントは、どのセクションを独立してキャッシュできるかを制御するだけです。

    キャッシュできるもの

    リクエスト内のほとんどのブロックは、cache_controlでキャッシング用に指定できます。これには以下が含まれます:

    • ツール:tools配列内のツール定義
    • システムメッセージ:system配列内のコンテンツブロック
    • テキストメッセージ:messages.content配列内のコンテンツブロック(ユーターンとアシスタントターンの両方)
    • 画像とドキュメント:ユーターンのmessages.content配列内のコンテンツブロック
    • ツール使用とツール結果:messages.content配列内のコンテンツブロック(ユーターンとアシスタントターンの両方)

    これらの各要素は、cache_controlでマークしてそのリクエスト部分のキャッシングを有効にできます。

    キャッシュできないもの

    ほとんどのリクエストブロックはキャッシュできますが、いくつかの例外があります:

    • シンキングブロックはcache_controlで直接キャッシュできません。ただし、シンキングブロックは前のアシスタントターンに表示される場合、他のコンテンツと一緒にキャッシュできます。この方法でキャッシュされると、キャッシュから読み取られるときに入力トークンとしてカウントされます。

    • サブコンテンツブロック(引用など)自体はcache_controlで直接キャッシュできません。代わりに、トップレベルのブロックをキャッシュしてください。

      引用の場合、引用のソース資料として機能するトップレベルのドキュメントコンテンツブロックをキャッシュできます。これにより、引用をキャッシュするドキュメントをキャッシュすることで、プロンプトキャッシングを引用で効果的に使用できます。

    • 空のテキストブロックはキャッシュできません。

    キャッシュを無効にするもの

    キャッシュされたコンテンツへの変更は、キャッシュの一部またはすべてを無効にする可能性があります。

    プロンプトの構造化で説明されているように、キャッシュは階層に従います:tools → system → messages。各レベルでの変更は、そのレベルとそれ以降のすべてのレベルを無効にします。

    以下の表は、異なるタイプの変更によってキャッシュのどの部分が無効になるかを示しています。✘はキャッシュが無効になることを示し、✓はキャッシュが有効なままであることを示します。

    変更内容ツールキャッシュシステムキャッシュメッセージキャッシュ影響
    ツール定義✘✘✘ツール定義(名前、説明、パラメータ)を変更すると、キャッシュ全体が無効になります
    ウェブ検索トグル✓✘✘ウェブ検索を有効/無効にするとシステムプロンプトが変更されます
    引用トグル✓✘✘引用を有効/無効にするとシステムプロンプトが変更されます
    ツール選択✓✓✘tool_choiceパラメータへの変更はメッセージブロックのみに影響します
    画像✓✓✘

    キャッシュパフォーマンスの追跡

    これらのAPI応答フィールドを使用してキャッシュパフォーマンスを監視します。応答内のusage内(またはストリーミングの場合はmessage_startイベント):

    • cache_creation_input_tokens:新しいエントリを作成するときにキャッシュに書き込まれたトークン数。
    • cache_read_input_tokens:このリクエストのキャッシュから取得されたトークン数。
    • input_tokens:キャッシュから読み取られたり、キャッシュを作成するために使用されなかった入力トークン数(つまり、最後のキャッシュブレークポイント後のトークン)。

    トークン分解の理解

    input_tokensフィールドは、送信したすべての入力トークンではなく、リクエスト内の最後のキャッシュブレークポイント後に来るトークンのみを表します。

    総入力トークンを計算するには:

    total_input_tokens = cache_read_input_tokens + cache_creation_input_tokens + input_tokens

    空間的説明:

    • cache_read_input_tokens = ブレークポイント前のトークン(既にキャッシュされている)(読み取り)
    • cache_creation_input_tokens = ブレークポイント前のトークン(現在キャッシュされている)(書き込み)
    • input_tokens = 最後のキャッシュブレークポイント後のトークン(キャッシュの対象外)

    例:100,000トークンのキャッシュされたコンテンツ(キャッシュから読み取られた)、キャッシュされている新しいコンテンツ0トークン、ユーザーメッセージ50トークン(キャッシュブレークポイント後)を持つリクエストがある場合:

    • cache_read_input_tokens:100,000
    • cache_creation_input_tokens:0
    • input_tokens:50

    効果的なキャッシングのベストプラクティス

    プロンプトキャッシングパフォーマンスを最適化するには:

    • システム指示、背景情報、大規模なコンテキスト、または頻繁なツール定義など、安定した再利用可能なコンテンツをキャッシュします。
    • キャッシュされたコンテンツをプロンプトの最初に配置して、最高のパフォーマンスを得ます。
    • キャッシュブレークポイントを戦略的に使用して、異なるキャッシュ可能なプレフィックスセクションを分離します。
    • 会話の終わりと編集可能なコンテンツの直前にキャッシュブレークポイントを設定して、キャッシュヒット率を最大化します。特に20個以上のコンテンツブロックを持つプロンプトを使用する場合。
    • キャッシュヒット率を定期的に分析し、必要に応じて戦略を調整します。

    異なるユースケースの最適化

    シナリオに合わせてプロンプトキャッシング戦略をカスタマイズします:

    • 会話エージェント:長い指示またはアップロードされたドキュメントを含む拡張会話のコストとレイテンシを削減します。
    • コーディングアシスタント:関連するセクションまたはコードベースの要約版をプロンプトに保持することで、オートコンプリートとコードベースQ&Aを改善します。
    • 大規模ドキュメント処理:応答レイテンシを増加させることなく、画像を含む完全な長形式資料をプロンプトに組み込みます。
    • 詳細な指示セット:Claudeの応答を微調整するための広範な指示、手順、例のリストを共有します。開発者は通常、プロンプトに1~2つの例を含めますが、プロンプトキャッシングを使用すると、20以上の高品質な回答の多様な例を含めることで、さらに優れたパフォーマンスが得られます。
    • エージェンティックツール使用:複数のツール呼び出しと反復的なコード変更を含むシナリオのパフォーマンスを強化します。各ステップは通常、新しいAPI呼び出しが必要です。
    • 本、論文、ドキュメント、ポッドキャストトランスクリプト、その他の長形式コンテンツと対話:ドキュメント全体をプロンプトに埋め込み、ユーザーが質問できるようにすることで、あらゆるナレッジベースを活性化します。

    一般的な問題のトラブルシューティング

    予期しない動作が発生している場合:

    • キャッシュされたセクションが同一であり、呼び出し全体で同じ場所にcache_controlでマークされていることを確認します
    • 呼び出しがキャッシュの有効期限内(デフォルトでは5分)に行われていることを確認します
    • tool_choiceと画像の使用が呼び出し間で一貫していることを確認します
    • 最小トークン数をキャッシュしていることを確認します
    • システムは自動的に前のコンテンツブロック境界でキャッシュヒットをチェックします(ブレークポイントの前の約20ブロック)。20個以上のコンテンツブロックを持つプロンプトの場合、すべてのコンテンツがキャッシュできるようにするために、プロンプトの前の部分に追加のcache_controlパラメータが必要な場合があります
    • tool_useコンテンツブロック内のキーが安定した順序を持っていることを確認します。一部の言語(例:Swift、Go)はJSON変換中にキー順序をランダム化し、キャッシュを破壊します

    tool_choiceへの変更またはプロンプト内のどこかに画像が存在/不在の場合、キャッシュが無効になり、新しいキャッシュエントリを作成する必要があります。キャッシュ無効化の詳細については、キャッシュを無効にするものを参照してください。

    シンキングブロックでのキャッシング

    拡張シンキングをプロンプトキャッシングと一緒に使用する場合、シンキングブロックには特別な動作があります:

    他のコンテンツと一緒に自動キャッシング:シンキングブロックはcache_controlで明示的にマークできませんが、後続のAPI呼び出しでツール結果を使用する場合、リクエストコンテンツの一部としてキャッシュされます。これは通常、ツール使用中にシンキングブロックを会話に戻して続行する場合に発生します。

    入力トークンカウント:シンキングブロックがキャッシュから読み取られる場合、使用メトリクスの入力トークンとしてカウントされます。これはコスト計算とトークン予算設定に重要です。

    キャッシュ無効化パターン:

    • ツール結果のみがユーザーメッセージとして提供される場合、キャッシュは有効なままです
    • 非ツール結果のユーザーコンテンツが追加される場合、キャッシュが無効になり、すべての前のシンキングブロックが削除されます
    • このキャッシング動作は、明示的なcache_controlマーカーがなくても発生します

    キャッシュ無効化の詳細については、キャッシュを無効にするものを参照してください。

    ツール使用の例:

    リクエスト1:ユーザー:「パリの天気は?」
    応答:[thinking_block_1] + [tool_use block 1]
    
    リクエスト2:
    ユーザー:[「パリの天気は?」]、
    アシスタント:[thinking_block_1] + [tool_use block 1]、
    ユーザー:[tool_result_1、cache=True]
    応答:[thinking_block_2] + [text block 2]
    # リクエスト2はリクエストコンテンツをキャッシュします(応答ではなく)
    # キャッシュには以下が含まれます:ユーザーメッセージ、thinking_block_1、tool_use block 1、tool_result_1
    
    リクエスト3:
    ユーザー:[「パリの天気は?」]、
    アシスタント:[thinking_block_1] + [tool_use block 1]、
    ユーザー:[tool_result_1、cache=True]、
    アシスタント:[thinking_block_2] + [text block 2]、
    ユーザー:[テキスト応答、cache=True]
    # 非ツール結果ユーザーブロックは新しいアシスタントループを指定します
    # すべての前のシンキングブロックが削除されます
    # このリクエストは、シンキングブロックが存在しなかったかのように処理されます

    非ツール結果ユーザーブロックが含まれる場合、新しいアシスタントループを指定し、すべての前のシンキングブロックがコンテキストから削除されます。

    詳細については、拡張シンキングドキュメントを参照してください。


    キャッシュストレージと共有

    • 組織の分離:キャッシュは組織間で分離されています。異なる組織は、同一のプロンプトを使用していても、キャッシュを共有することはありません。

    • 完全一致:キャッシュヒットには、キャッシュコントロールでマークされたブロックまでを含む、100%同一のプロンプトセグメント(すべてのテキストと画像を含む)が必要です。

    • 出力トークン生成:プロンプトキャッシングは出力トークン生成に影響しません。受け取る応答は、プロンプトキャッシングが使用されていない場合に受け取る応答と同一です。


    1時間のキャッシュ期間

    5分が短すぎる場合、Anthropicは追加コストで1時間のキャッシュ期間も提供しています。

    拡張キャッシュを使用するには、cache_control定義にttlを含めます:

    "cache_control": {
        "type": "ephemeral",
        "ttl": "5m" | "1h"
    }

    応答には、以下のような詳細なキャッシュ情報が含まれます:

    {
        "usage": {
            "input_tokens": ...,
            "cache_read_input_tokens": ...,
            "cache_creation_input_tokens": ...,
            "output_tokens": ...,
    
            "cache_creation": {
                "ephemeral_5m_input_tokens": 456,
                "ephemeral_1h_input_tokens": 100,
            }
        }
    }

    現在のcache_creation_input_tokensフィールドはcache_creationオブジェクト内の値の合計に等しいことに注意してください。

    1時間キャッシュを使用する場合

    定期的なペースで使用されるプロンプト(つまり、5分ごとより頻繁に使用されるシステムプロンプト)がある場合、5分キャッシュを使用し続けてください。これは追加料金なしで継続的に更新されるためです。

    1時間キャッシュは、以下のシナリオで最適に使用されます:

    • 5分未満の頻度で使用される可能性が低いが、1時間ごとより頻繁に使用される可能性があるプロンプトがある場合。例えば、エージェンティック副エージェントが5分以上かかる場合、またはユーザーとの長いチャット会話を保存していて、一般的にそのユーザーが次の5分以内に応答しない可能性がある場合。
    • レイテンシが重要で、フォローアッププロンプトが5分を超えて送信される可能性がある場合。
    • レート制限の利用を改善したい場合。キャッシュヒットはレート制限に対して控除されないためです。

    5分と1時間のキャッシュはレイテンシに関して同じように動作します。通常、長いドキュメントの場合、最初のトークンまでの時間が改善されます。

    異なるTTLの混合

    同じリクエストで1時間と5分のキャッシュコントロールの両方を使用できますが、重要な制約があります:より長いTTLを持つキャッシュエントリは、より短いTTLの前に表示される必要があります(つまり、1時間のキャッシュエントリは5分のキャッシュエントリの前に表示される必要があります)。

    TTLを混合する場合、プロンプト内の3つの請求位置を決定します:

    1. 位置A:最高のキャッシュヒット時のトークン数(ヒットがない場合は0)。
    2. 位置B:Aの後の最高の1時間cache_controlブロック時のトークン数(存在しない場合はAに等しい)。
    3. 位置C:最後のcache_controlブロック時のトークン数。

    Bおよび/またはCがAより大きい場合、Aが最高のキャッシュヒットであるため、必ずキャッシュミスになります。

    以下の場合に課金されます:

    1. 位置Aのキャッシュ読み取りトークン。
    2. 位置(B - A)の1時間キャッシュ書き込みトークン。
    3. 位置(C - B)の5分キャッシュ書き込みトークン。

    以下は3つの例です。これは3つのリクエストの入力トークンを示しており、各リクエストは異なるキャッシュヒットとキャッシュミスを持っています。各リクエストは、結果として異なる計算された価格を持ち、カラーボックスで表示されています。 TTLの混合図


    プロンプトキャッシングの例

    プロンプトキャッシングを始めるのに役立つように、詳細な例とベストプラクティスを含むプロンプトキャッシングクックブックを用意しました。

    以下に、様々なプロンプトキャッシングパターンを紹介するコードスニペットをいくつか含めました。これらの例は、異なるシナリオでキャッシングを実装する方法を示し、この機能の実用的な応用を理解するのに役立ちます。


    FAQ

    • 1時間のキャッシュ期間
    • 1時間キャッシュを使用する場合
    • 異なるTTLの混合
    • FAQ
    $3 / MTok
    $3.75 / MTok
    $6 / MTok
    $0.30 / MTok
    $15 / MTok
    Claude Sonnet 3.7 (deprecated)$3 / MTok$3.75 / MTok$6 / MTok$0.30 / MTok$15 / MTok
    Claude Haiku 4.5$1 / MTok$1.25 / MTok$2 / MTok$0.10 / MTok$5 / MTok
    Claude Haiku 3.5$0.80 / MTok$1 / MTok$1.6 / MTok$0.08 / MTok$4 / MTok
    Claude Opus 3 (deprecated)$15 / MTok$18.75 / MTok$30 / MTok$1.50 / MTok$75 / MTok
    Claude Haiku 3$0.25 / MTok$0.30 / MTok$0.50 / MTok$0.03 / MTok$1.25 / MTok
    プロンプト内のどこかに画像を追加/削除するとメッセージブロックに影響します
    シンキングパラメータ✓✓✘拡張シンキング設定(有効/無効、予算)への変更はメッセージブロックに影響します
    拡張シンキングリクエストに渡される非ツール結果✓✓✘拡張シンキングが有効な場合、非ツール結果がリクエストで渡されると、以前にキャッシュされたすべてのシンキングブロックがコンテキストから削除され、それらのシンキングブロックに続くコンテキスト内のメッセージがキャッシュから削除されます。詳細については、シンキングブロックでのキャッシングを参照してください。
  1. 処理された総入力トークン:100,050トークン
  2. これは、キャッシングを効果的に使用する場合、input_tokensは通常、総入力よりはるかに小さいため、コストとレート制限の両方を理解するために重要です。