cache_control
ブロックを使用してMessages APIでプロンプトキャッシュを実装する方法の例です:
JSON
cache_control
パラメータを使用してキャッシュされています。これにより、この大きなテキストを毎回再処理することなく、複数のAPI呼び出しで再利用できます。ユーザーメッセージのみを変更することで、キャッシュされたコンテンツを活用しながら本について様々な質問をすることができ、より高速な応答と効率の向上につながります。
プロンプトキャッシュの仕組み
プロンプトキャッシュを有効にしてリクエストを送信すると:- システムは、指定されたキャッシュブレークポイントまでのプロンプトプレフィックスが最近のクエリからすでにキャッシュされているかどうかをチェックします。
- 見つかった場合、キャッシュされたバージョンを使用し、処理時間とコストを削減します。
- そうでなければ、完全なプロンプトを処理し、応答が開始されるとプレフィックスをキャッシュします。
- 多くの例を含むプロンプト
- 大量のコンテキストや背景情報
- 一貫した指示を持つ反復的なタスク
- 長いマルチターン会話
5分では短すぎる場合、Anthropicは1時間のキャッシュ期間も提供しています。詳細については、1時間キャッシュ期間を参照してください。
プロンプトキャッシュは完全なプレフィックスをキャッシュしますプロンプトキャッシュは、
cache_control
で指定されたブロックまでの完全なプロンプト - tools
、system
、messages
(この順序で)を参照します。料金
プロンプトキャッシュは新しい料金体系を導入します。以下の表は、サポートされている各モデルの100万トークンあたりの価格を示しています:Model | Base Input Tokens | 5m Cache Writes | 1h Cache Writes | Cache Hits & Refreshes | Output Tokens |
---|---|---|---|---|---|
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 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
Claude Sonnet 3.7 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
Claude Sonnet 3.5 (deprecated) | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / 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 |
上記の表は、プロンプトキャッシュの以下の料金倍率を反映しています:
- 5分キャッシュ書き込みトークンは、ベース入力トークン価格の1.25倍
- 1時間キャッシュ書き込みトークンは、ベース入力トークン価格の2倍
- キャッシュ読み取りトークンは、ベース入力トークン価格の0.1倍
プロンプトキャッシュの実装方法
サポートされているモデル
プロンプトキャッシュは現在以下でサポートされています:- Claude Opus 4.1
- Claude Opus 4
- Claude Sonnet 4
- Claude Sonnet 3.7
- Claude Sonnet 3.5 (非推奨)
- Claude Haiku 3.5
- Claude Haiku 3
- Claude Opus 3 (非推奨)
プロンプトの構造化
静的コンテンツ(ツール定義、システム指示、コンテキスト、例)をプロンプトの先頭に配置します。cache_control
パラメータを使用して、キャッシュ用の再利用可能なコンテンツの終了をマークします。
キャッシュプレフィックスは次の順序で作成されます:tools
、system
、次にmessages
。この順序は、各レベルが前のレベルの上に構築される階層を形成します。
自動プレフィックスチェックの仕組み
静的コンテンツの最後に1つのキャッシュブレークポイントを使用するだけで、システムが自動的に最長の一致するプレフィックスを見つけます。 仕組みは以下の通りです:cache_control
ブレークポイントを追加すると、システムは自動的に以前のすべてのコンテンツブロック境界(明示的なブレークポイントから約20ブロック前まで)でキャッシュヒットをチェックします- これらの以前の位置のいずれかが以前のリクエストからのキャッシュされたコンテンツと一致する場合、システムは最長の一致するプレフィックスを使用します
- これは、キャッシュを有効にするために複数のブレークポイントが必要ないことを意味します - 最後に1つあれば十分です
複数のブレークポイントを使用する場合
以下の場合は最大4つのキャッシュブレークポイントを定義できます:- 異なる頻度で変更される異なるセクションをキャッシュする(例:ツールはほとんど変更されないが、コンテキストは毎日更新される)
- 何がキャッシュされるかをより詳細に制御する
- 最終ブレークポイントから20ブロック以上前のコンテンツのキャッシュを確実にする
重要な制限: 自動プレフィックスチェックは、各明示的なブレークポイントから約20コンテンツブロック前までしか遡りません。プロンプトにキャッシュブレークポイントより前に20を超えるコンテンツブロックがある場合、追加のブレークポイントを追加しない限り、それより前のコンテンツはキャッシュヒットがチェックされません。
キャッシュの制限
キャッシュ可能な最小プロンプト長は:- Claude Opus 4.1、Claude Opus 4、Claude Sonnet 4、Claude Sonnet 3.7、Claude Sonnet 3.5 (非推奨)、Claude Opus 3 (非推奨)の場合は1024トークン
- 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
で直接キャッシュできません。ただし、思考ブロックは以前のアシスタントターンに現れる場合、他のコンテンツと一緒にキャッシュできます。この方法でキャッシュされた場合、キャッシュから読み取られるときに入力トークンとしてカウントされます。 - サブコンテンツブロック(引用など)自体は直接キャッシュできません。代わりに、トップレベルのブロックをキャッシュしてください。 引用の場合、引用のソース素材として機能するトップレベルの文書コンテンツブロックをキャッシュできます。これにより、引用が参照する文書をキャッシュすることで、引用でプロンプトキャッシュを効果的に使用できます。
- 空のテキストブロックはキャッシュできません。
キャッシュを無効にするもの
キャッシュされたコンテンツの変更は、キャッシュの一部またはすべてを無効にする可能性があります。 プロンプトの構造化で説明したように、キャッシュは階層に従います:tools
→ system
→ messages
。各レベルでの変更は、そのレベルとそれ以降のすべてのレベルを無効にします。
以下の表は、異なるタイプの変更によってキャッシュのどの部分が無効になるかを示しています。✘はキャッシュが無効になることを示し、✓はキャッシュが有効のままであることを示します。
変更内容 | ツールキャッシュ | システムキャッシュ | メッセージキャッシュ | 影響 |
---|---|---|---|---|
ツール定義 | ✘ | ✘ | ✘ | ツール定義(名前、説明、パラメータ)の変更はキャッシュ全体を無効にします |
ウェブ検索の切り替え | ✓ | ✘ | ✘ | ウェブ検索の有効/無効はシステムプロンプトを変更します |
引用の切り替え | ✓ | ✘ | ✘ | 引用の有効/無効はシステムプロンプトを変更します |
ツール選択 | ✓ | ✓ | ✘ | tool_choice パラメータの変更はメッセージブロックのみに影響します |
画像 | ✓ | ✓ | ✘ | プロンプト内のどこかで画像を追加/削除するとメッセージブロックに影響します |
思考パラメータ | ✓ | ✓ | ✘ | 拡張思考設定(有効/無効、予算)の変更はメッセージブロックに影響します |
拡張思考リクエストに渡される非ツール結果 | ✓ | ✓ | ✘ | 拡張思考が有効な状態で非ツール結果がリクエストで渡されると、以前にキャッシュされたすべての思考ブロックがコンテキストから削除され、それらの思考ブロックに続くコンテキスト内のメッセージがキャッシュから削除されます。詳細については、思考ブロックでのキャッシュを参照してください。 |
キャッシュパフォーマンスの追跡
応答内のusage
(またはストリーミングの場合はmessage_start
イベント)内の以下のAPIレスポンスフィールドを使用してキャッシュパフォーマンスを監視します:
cache_creation_input_tokens
: 新しいエントリを作成する際にキャッシュに書き込まれたトークン数。cache_read_input_tokens
: このリクエストでキャッシュから取得されたトークン数。input_tokens
: キャッシュから読み取られたり、キャッシュの作成に使用されたりしなかった入力トークン数。
効果的なキャッシュのベストプラクティス
プロンプトキャッシュのパフォーマンスを最適化するには:- システム指示、背景情報、大きなコンテキスト、頻繁なツール定義など、安定した再利用可能なコンテンツをキャッシュします。
- 最高のパフォーマンスを得るために、キャッシュされたコンテンツをプロンプトの先頭に配置します。
- キャッシュブレークポイントを戦略的に使用して、異なるキャッシュ可能なプレフィックスセクションを分離します。
- キャッシュヒット率を定期的に分析し、必要に応じて戦略を調整します。
異なる使用ケースの最適化
シナリオに合わせてプロンプトキャッシュ戦略を調整します:- 会話エージェント:特に長い指示やアップロードされた文書を含む拡張会話のコストとレイテンシを削減します。
- コーディングアシスタント:関連セクションやコードベースの要約版をプロンプトに保持することで、オートコンプリートとコードベースQ&Aを改善します。
- 大きな文書処理:画像を含む完全な長文資料を応答レイテンシを増加させることなくプロンプトに組み込みます。
- 詳細な指示セット:Claudeの応答を微調整するための広範な指示、手順、例のリストを共有します。開発者は通常プロンプトに1つか2つの例を含めますが、プロンプトキャッシュを使用すると、20以上の多様な高品質回答例を含めることでさらに良いパフォーマンスを得ることができます。
- エージェント的ツール使用:複数のツール呼び出しと反復的なコード変更を含むシナリオのパフォーマンスを向上させます。各ステップは通常新しいAPI呼び出しを必要とします。
- 書籍、論文、文書、ポッドキャストの転写、その他の長文コンテンツとの対話:完全な文書をプロンプトに埋め込み、ユーザーが質問できるようにすることで、あらゆる知識ベースを活用します。
一般的な問題のトラブルシューティング
予期しない動作が発生した場合:- キャッシュされたセクションが同一で、呼び出し間で同じ場所でcache_controlでマークされていることを確認します
- 呼び出しがキャッシュの有効期間内(デフォルトで5分)に行われていることを確認します
tool_choice
と画像の使用が呼び出し間で一貫していることを確認します- 最小トークン数以上をキャッシュしていることを確認します
- システムは自動的に以前のコンテンツブロック境界(ブレークポイントから約20ブロック前まで)でキャッシュヒットをチェックします。20を超えるコンテンツブロックを持つプロンプトの場合、すべてのコンテンツをキャッシュできるようにするために、プロンプトの早い段階で追加の
cache_control
パラメータが必要な場合があります
tool_choice
の変更やプロンプト内のどこかでの画像の存在/不在は、キャッシュを無効にし、新しいキャッシュエントリの作成を必要とします。キャッシュ無効化の詳細については、キャッシュを無効にするものを参照してください。思考ブロックでのキャッシュ
拡張思考をプロンプトキャッシュと一緒に使用する場合、思考ブロックには特別な動作があります: 他のコンテンツと一緒の自動キャッシュ: 思考ブロックは明示的にcache_control
でマークできませんが、ツール結果で後続のAPI呼び出しを行う際にリクエストコンテンツの一部としてキャッシュされます。これは、思考ブロックを渡して会話を続ける際のツール使用中によく発生します。
入力トークンのカウント: 思考ブロックがキャッシュから読み取られる場合、使用量メトリクスで入力トークンとしてカウントされます。これはコスト計算とトークン予算にとって重要です。
キャッシュ無効化パターン:
- ツール結果のみがユーザーメッセージとして提供される場合、キャッシュは有効のままです
- 非ツール結果のユーザーコンテンツが追加されると、キャッシュが無効になり、以前のすべての思考ブロックが削除されます
- このキャッシュ動作は、明示的な
cache_control
マーカーがなくても発生します
キャッシュの保存と共有
- 組織の分離: キャッシュは組織間で分離されています。異なる組織は、同一のプロンプトを使用してもキャッシュを共有することはありません。
- 完全一致: キャッシュヒットには、キャッシュ制御でマークされたブロックまでのすべてのテキストと画像を含む、100%同一のプロンプトセグメントが必要です。
- 出力トークン生成: プロンプトキャッシュは出力トークン生成に影響しません。受け取る応答は、プロンプトキャッシュを使用しなかった場合と同一になります。
1時間キャッシュ期間
5分では短すぎる場合、Anthropicは1時間のキャッシュ期間も提供しています。 拡張キャッシュを使用するには、次のようにcache_control
定義にttl
を含めます:
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つの課金場所を決定します:- 位置
A
:最高のキャッシュヒットでのトークン数(ヒットがない場合は0)。 - 位置
B
:A
の後の最高の1時間cache_control
ブロックでのトークン数(存在しない場合はA
と等しい)。 - 位置
C
:最後のcache_control
ブロックでのトークン数。
B
および/またはC
がA
より大きい場合、A
が最高のキャッシュヒットであるため、必然的にキャッシュミスになります。A
のキャッシュ読み取りトークン。(B - A)
の1時間キャッシュ書き込みトークン。(C - B)
の5分キャッシュ書き込みトークン。
プロンプトキャッシュの例
プロンプトキャッシュを始めるのに役立つよう、詳細な例とベストプラクティスを含むプロンプトキャッシュクックブックを用意しました。 以下では、様々なプロンプトキャッシュパターンを紹介するいくつかのコードスニペットを含めています。これらの例は、異なるシナリオでキャッシュを実装する方法を示し、この機能の実用的な応用を理解するのに役立ちます:大きなコンテキストキャッシュの例
大きなコンテキストキャッシュの例
input_tokens
: ユーザーメッセージのみのトークン数cache_creation_input_tokens
: 法的文書を含むシステムメッセージ全体のトークン数cache_read_input_tokens
: 0(最初のリクエストではキャッシュヒットなし)
input_tokens
: ユーザーメッセージのみのトークン数cache_creation_input_tokens
: 0(新しいキャッシュ作成なし)cache_read_input_tokens
: キャッシュされたシステムメッセージ全体のトークン数
ツール定義のキャッシュ
ツール定義のキャッシュ
cache_control
パラメータは最後のツール(get_time
)に配置され、すべてのツールを静的プレフィックスの一部として指定しています。これは、get_weather
とget_time
より前に定義された他のツールを含むすべてのツール定義が、単一のプレフィックスとしてキャッシュされることを意味します。このアプローチは、毎回再処理することなく複数のリクエストで再利用したい一貫したツールセットがある場合に有用です。最初のリクエストの場合:input_tokens
: ユーザーメッセージのトークン数cache_creation_input_tokens
: すべてのツール定義とシステムプロンプトのトークン数cache_read_input_tokens
: 0(最初のリクエストではキャッシュヒットなし)
input_tokens
: ユーザーメッセージのトークン数cache_creation_input_tokens
: 0(新しいキャッシュ作成なし)cache_read_input_tokens
: キャッシュされたすべてのツール定義とシステムプロンプトのトークン数
マルチターン会話の継続
マルチターン会話の継続
cache_control
でマークして、会話を段階的にキャッシュできるようにします。システムは自動的にフォローアップメッセージで最長の以前にキャッシュされたプレフィックスを検索して使用します。つまり、以前にcache_control
ブロックでマークされたブロックは、後でこれでマークされませんが、5分以内にヒットした場合はキャッシュヒット(およびキャッシュ更新!)と見なされます。さらに、cache_control
パラメータがシステムメッセージに配置されていることに注意してください。これは、これが(5分以上使用されずに)キャッシュから削除された場合、次のリクエストでキャッシュに再度追加されることを確実にするためです。このアプローチは、同じ情報を繰り返し処理することなく、進行中の会話でコンテキストを維持するのに有用です。これが適切に設定されている場合、各リクエストの使用量応答で以下が表示されるはずです:input_tokens
: 新しいユーザーメッセージのトークン数(最小限になります)cache_creation_input_tokens
: 新しいアシスタントとユーザーターンのトークン数cache_read_input_tokens
: 前のターンまでの会話のトークン数
すべてをまとめる:複数のキャッシュブレークポイント
すべてをまとめる:複数のキャッシュブレークポイント
-
ツールキャッシュ(キャッシュブレークポイント1):最後のツール定義の
cache_control
パラメータは、すべてのツール定義をキャッシュします。 - 再利用可能な指示キャッシュ(キャッシュブレークポイント2):システムプロンプト内の静的指示は別々にキャッシュされます。これらの指示はリクエスト間でほとんど変更されません。
- RAGコンテキストキャッシュ(キャッシュブレークポイント3):知識ベース文書は独立してキャッシュされ、ツールや指示キャッシュを無効にすることなくRAG文書を更新できます。
-
会話履歴キャッシュ(キャッシュブレークポイント4):アシスタントの応答は
cache_control
でマークされ、会話が進行するにつれて段階的なキャッシュを可能にします。
- 最後のユーザーメッセージのみを更新する場合、4つのキャッシュセグメントすべてが再利用されます
- RAG文書を更新するが同じツールと指示を保持する場合、最初の2つのキャッシュセグメントが再利用されます
- 会話を変更するが同じツール、指示、文書を保持する場合、最初の3つのセグメントが再利用されます
- 各キャッシュブレークポイントは、アプリケーションで何が変更されるかに基づいて独立して無効化できます
input_tokens
: 最後のユーザーメッセージのトークンcache_creation_input_tokens
: すべてのキャッシュされたセグメント(ツール + 指示 + RAG文書 + 会話履歴)のトークンcache_read_input_tokens
: 0(キャッシュヒットなし)
input_tokens
: 新しいユーザーメッセージのみのトークンcache_creation_input_tokens
: 会話履歴に追加された新しいトークンcache_read_input_tokens
: 以前にキャッシュされたすべてのトークン(ツール + 指示 + RAG文書 + 以前の会話)
- 大きな文書コンテキストを持つRAGアプリケーション
- 複数のツールを使用するエージェントシステム
- コンテキストを維持する必要がある長時間実行される会話
- プロンプトの異なる部分を独立して最適化する必要があるアプリケーション
FAQ
複数のキャッシュブレークポイントが必要ですか、それとも最後に1つあれば十分ですか?
複数のキャッシュブレークポイントが必要ですか、それとも最後に1つあれば十分ですか?
ほとんどの場合、静的コンテンツの最後に1つのキャッシュブレークポイントがあれば十分です。 システムは自動的に以前のすべてのコンテンツブロック境界(ブレークポイントから20ブロック前まで)でキャッシュヒットをチェックし、最長の一致するプレフィックスを使用します。複数のブレークポイントが必要なのは以下の場合のみです:
- 希望するキャッシュポイントより前に20を超えるコンテンツブロックがある場合
- 異なる頻度で更新されるセクションを独立してキャッシュしたい場合
- コスト最適化のために何がキャッシュされるかを明示的に制御する必要がある場合
キャッシュブレークポイントは追加コストがかかりますか?
キャッシュブレークポイントは追加コストがかかりますか?
いいえ、キャッシュブレークポイント自体は無料です。支払うのは以下のみです:
- キャッシュへのコンテンツ書き込み(5分TTLの場合、ベース入力トークンより25%多い)
- キャッシュからの読み取り(ベース入力トークン価格の10%)
- キャッシュされていないコンテンツの通常の入力トークン
キャッシュの有効期間はどのくらいですか?
キャッシュの有効期間はどのくらいですか?
キャッシュのデフォルトの最小有効期間(TTL)は5分です。この有効期間は、キャッシュされたコンテンツが使用されるたびに更新されます。5分では短すぎる場合、Anthropicは1時間キャッシュTTLも提供しています。
いくつのキャッシュブレークポイントを使用できますか?
いくつのキャッシュブレークポイントを使用できますか?
プロンプト内で最大4つのキャッシュブレークポイント(
cache_control
パラメータを使用)を定義できます。プロンプトキャッシュはすべてのモデルで利用できますか?
プロンプトキャッシュはすべてのモデルで利用できますか?
プロンプトキャッシュは拡張思考とどのように機能しますか?
プロンプトキャッシュは拡張思考とどのように機能しますか?
キャッシュされたシステムプロンプトとツールは、思考パラメータが変更されても再利用されます。ただし、思考の変更(有効/無効または予算の変更)は、メッセージコンテンツを含む以前にキャッシュされたプロンプトプレフィックスを無効にします。キャッシュ無効化の詳細については、キャッシュを無効にするものを参照してください。ツール使用やプロンプトキャッシュとの相互作用を含む拡張思考の詳細については、拡張思考ドキュメントを参照してください。
プロンプトキャッシュを有効にするにはどうすればよいですか?
プロンプトキャッシュを有効にするにはどうすればよいですか?
プロンプトキャッシュを有効にするには、APIリクエストに少なくとも1つの
cache_control
ブレークポイントを含めます。プロンプトキャッシュを他のAPI機能と一緒に使用できますか?
プロンプトキャッシュを他のAPI機能と一緒に使用できますか?
はい、プロンプトキャッシュはツール使用やビジョン機能などの他のAPI機能と一緒に使用できます。ただし、プロンプト内に画像があるかどうかを変更したり、ツール使用設定を変更したりすると、キャッシュが破損します。キャッシュ無効化の詳細については、キャッシュを無効にするものを参照してください。
プロンプトキャッシュは料金にどのような影響を与えますか?
プロンプトキャッシュは料金にどのような影響を与えますか?
プロンプトキャッシュは、キャッシュ書き込みがベース入力トークンより25%多くコストがかかり、キャッシュヒットがベース入力トークン価格の10%のみコストがかかる新しい料金体系を導入します。
キャッシュを手動でクリアできますか?
キャッシュを手動でクリアできますか?
現在、キャッシュを手動でクリアする方法はありません。キャッシュされたプレフィックスは、最低5分間の非アクティブ後に自動的に期限切れになります。
キャッシュ戦略の効果をどのように追跡できますか?
キャッシュ戦略の効果をどのように追跡できますか?
APIレスポンスの
cache_creation_input_tokens
とcache_read_input_tokens
フィールドを使用してキャッシュパフォーマンスを監視できます。キャッシュを破損させるものは何ですか?
キャッシュを破損させるものは何ですか?
キャッシュ無効化の詳細については、キャッシュを無効にするものを参照してください。これには、新しいキャッシュエントリの作成を必要とする変更のリストが含まれています。
プロンプトキャッシュはプライバシーとデータ分離をどのように処理しますか?
プロンプトキャッシュはプライバシーとデータ分離をどのように処理しますか?
プロンプトキャッシュは強力なプライバシーとデータ分離対策で設計されています:
- キャッシュキーは、キャッシュ制御ポイントまでのプロンプトの暗号化ハッシュを使用して生成されます。これは、同一のプロンプトを持つリクエストのみが特定のキャッシュにアクセスできることを意味します。
- キャッシュは組織固有です。同じ組織内のユーザーは、同一のプロンプトを使用する場合は同じキャッシュにアクセスできますが、同一のプロンプトであっても、キャッシュは異なる組織間で共有されません。
- キャッシュメカニズムは、各固有の会話やコンテキストの整合性とプライバシーを維持するように設計されています。
-
プロンプト内のどこでも
cache_control
を使用するのは安全です。コスト効率のためには、高度に可変な部分(例:ユーザーの任意の入力)をキャッシュから除外する方が良いです。
Batches APIでプロンプトキャッシュを使用できますか?
Batches APIでプロンプトキャッシュを使用できますか?
はい、Batches APIリクエストでプロンプトキャッシュを使用することは可能です。ただし、非同期バッチリクエストは並行して任意の順序で処理される可能性があるため、キャッシュヒットはベストエフォートベースで提供されます。1時間キャッシュは、キャッシュヒットの改善に役立ちます。最もコスト効率的な使用方法は以下の通りです:
- 共有プレフィックスを持つメッセージリクエストのセットを収集します。
- この共有プレフィックスと1時間キャッシュブロックを持つ単一のリクエストでバッチリクエストを送信します。これが1時間キャッシュに書き込まれます。
- これが完了したらすぐに、残りのリクエストを送信します。完了時期を知るためにジョブを監視する必要があります。
Pythonで「AttributeError: 'Beta' object has no attribute 'prompt_caching'」エラーが表示されるのはなぜですか?
Pythonで「AttributeError: 'Beta' object has no attribute 'prompt_caching'」エラーが表示されるのはなぜですか?
このエラーは通常、SDKをアップグレードしたか、古いコード例を使用している場合に表示されます。プロンプトキャッシュは現在一般提供されているため、ベータプレフィックスは不要になりました。以下の代わりに:単純に以下を使用してください:
「TypeError: Cannot read properties of undefined (reading 'messages')」が表示されるのはなぜですか?
「TypeError: Cannot read properties of undefined (reading 'messages')」が表示されるのはなぜですか?
このエラーは通常、SDKをアップグレードしたか、古いコード例を使用している場合に表示されます。プロンプトキャッシュは現在一般提供されているため、ベータプレフィックスは不要になりました。以下の代わりに:単純に以下を使用してください:
TypeScript