キャッシュ使用状況の確認
キャッシュの使用状況はすべてのレスポンスのusage オブジェクトに反映されます:
| フィールド | 説明 |
|---|---|
prompt_tokens_details.cached_tokens | キャッシュから読み取られたトークン(キャッシュヒット——安い) |
prompt_tokens_details.cache_write_tokens | このリクエストでキャッシュに書き込まれたトークン(一回限りの書き込みコスト) |
OpenAI 自動キャッシング
OpenAI はプロンプトプレフィックスを自動的にキャッシュします。特別なリクエスト設定は不要です。 仕組み:- キャッシングは OpenAI のサーバー側で、プロンプトが十分長い場合に自動的にトリガーされます
- 最小プロンプト長:1,024 トークン
- キャッシュエントリは約 1 時間の非アクティブ後に期限切れになります
- キャッシュされたトークンは割引料金で課金されます(通常 50% 割引)
Anthropic Claude プロンプトキャッシング
Anthropic は 2 つのキャッシングモードをサポートしています:- 自動キャッシング(デフォルト):Claude がシステムプロンプトを自動的にキャッシュします。最低 1,024 トークン。
- 明示的キャッシング(
cache_control):"cache_control": {"type": "ephemeral"}で特定のコンテンツブロックをマークして、キャッシュする内容を正確に制御します。
キャッシュ TTL
| キャッシュタイプ | TTL |
|---|---|
| 自動 | 5 分 |
明示的(ephemeral) | 1 時間(Claude 3.5+)または 5 分(Claude 3) |
サポートされるモデル
| モデル | 最小トークン(テキスト) | 最小トークン(画像) |
|---|---|---|
anthropic/claude-sonnet-4.6 | 1,024 | 1,024 |
anthropic/claude-opus-4.5 | 1,024 | 1,024 |
anthropic/claude-haiku-3.5 | 2,048 | 2,048 |
anthropic/claude-3-5-sonnet | 1,024 | 1,024 |
明示的キャッシングの例
cache_control を使用してコンテンツブロックレベルでキャッシングを制御します:
extra_body を通じて渡します:
- Python (OpenAI)
- Node.js (OpenAI)
- Anthropic SDK
DeepSeek 自動キャッシング
DeepSeek は OpenAI と同様に、プロンプトプレフィックスを自動的にキャッシュします。設定は不要です。xAI(Grok)自動キャッシング
Grok モデルはリクエスト間で同じプレフィックスを再利用する際に、プロンプトプレフィックスを自動的にキャッシュします。特別な設定は不要です。Groq 自動キャッシング
Groq の推論インフラは対応モデルのプロンプトプレフィックスを自動的にキャッシュします。キャッシュヒットはレイテンシを削減し、レスポンスの usage オブジェクトに反映されます。Google Gemini プロンプトキャッシング
Gemini は暗黙的(自動)および明示的キャッシングの両方をサポートしています。暗黙的キャッシング
Gemini 2.5 Flash と Pro は追加コストなしで大きなコンテキストを自動的にキャッシュします。キャッシュヒットはレスポンスの usage に表示されます。ネイティブ Gemini API による明示的キャッシング
細かい制御のためには、ネイティブの GeminicachedContents API を使用します。キャッシュオブジェクトを作成し、後続のリクエストで参照します:
name フィールド(例:cachedContents/abc123)が含まれます:
プロバイダースティッキールーティング
キャッシュヒット率を最大化するには、繰り返しのリクエストが同じプロバイダーインスタンスに届く必要があります。ARouter はスティッキールーティングをサポートして、必要なプロバイダーにこれを保証します。 リクエストに Anthropic のcache_control ブロックが含まれている場合、ARouter は同じプレフィックスを持つ後続のリクエストを自動的に同じプロバイダーエンドポイントにルーティングし、キャッシュの有効性を維持します。
スティッキールーティングの仕組み
cache_controlブロックを含む最初のリクエストがプロバイダーで処理されキャッシュされます- ARouter はリクエストを処理したプロバイダーインスタンスを記録します
- 同じキャッシュプレフィックスを持つ後続のリクエストが同じインスタンスにルーティングされます
- キャッシュヒットによりコストが下がり(読み取りは書き込みより安い)レイテンシが減少します
キャッシュヒットの確認
usage オブジェクトを確認してリクエスト間のキャッシュヒットを確認します:
プロバイダーキャッシュサポートの概要
| プロバイダー | キャッシュタイプ | 最小トークン | TTL | 設定 |
|---|---|---|---|---|
| OpenAI | 自動 | 1,024 | 約 1 時間 | 不要 |
| Anthropic | 自動 + 明示的 | 1,024 | 5 分(自動)、1 時間(明示的) | cache_control ブロック |
| DeepSeek | 自動 | 1,024 | プロバイダー定義 | 不要 |
| Google Gemini | 自動 + 明示的 | 32,768 | デフォルト 1 時間 | cachedContents API |
| xAI(Grok) | 自動 | プロバイダー定義 | プロバイダー定義 | 不要 |
| Groq | 自動 | プロバイダー定義 | プロバイダー定義 | 不要 |