プロンプトキャッシュの対応状況はプロバイダーとモデルによって異なります。未対応のプロバイダーはキャッシュヒントを無視するか、キャッシュ料金を適用せずにルーティングします。キャッシュの読み取りと書き込みの料金はモデルページの料金表で確認してください。
キャッシュする内容
リクエスト間で変わらない内容をキャッシュします。- 長いシステム指示
- 再利用するRAGドキュメント
- few-shotの例
- ツール定義
- 次のターンで再利用する大きなツール結果
キャッシュ制御
PhaseoはChat Completions、Responses、Anthropic Messagesの各リクエストで、トップレベルの互換ヒントcache_controlを受け付けます。
ttl: "5m"を使い、プロバイダーとモデルが長期間のプロンプトキャッシュに対応している場合はttl: "1h"を使います。対応プロバイダーでは、トップレベルのキャッシュ制御が自動またはデフォルトのキャッシュポリシーとして扱われます。
対応するテキスト、画像、ツール結果、ツール定義の各ブロックにcache_controlを直接指定して、明示的なキャッシュ境界を設けることもできます。
provider_optionsを使ってAnthropicのデフォルトキャッシュポリシーを指定できます。
scopeの値:
ブロックごとの
cache_controlはデフォルトポリシーより優先されます。
Chat Completions
OpenAI互換のチャットクライアントでは/v1/chat/completionsを使います。
Responses
新しいOpenAI互換のテキスト統合やエージェントフローでは/v1/responsesを使います。
provider_options.google.cached_contentで渡します。
Anthropic Messages
Anthropic互換のクライアントでは/v1/messagesを使います。
systemのテキストブロック- メッセージのテキストブロックと画像ブロック
- ツール結果ブロック
- ツール定義
使用量と料金フィールド
プロバイダーがキャッシュ使用量を返すと、Phaseoは共通の使用量フィールドに正規化します。
キャッシュへの書き込みは通常の入力トークンより高く、読み取りは通常より安価です。正確な料金はプロバイダー、モデル、TTLによって異なります。
実践的な確認
プロンプトキャッシュを追加した後:- キャッシュを作成またはウォームアップするために、1件リクエストを送ります。
- 同じキャッシュ対象コンテンツを含む2件目のリクエストを送ります。
- レスポンスの使用量とリクエスト詳細を確認し、キャッシュの読み取り・書き込みフィールドを探します。
- 初回だけでなく、複数回の呼び出し全体でレイテンシとコストを比較します。
プロバイダーとの親和性
デフォルトでPhaseoは、プロバイダーのプロンプトキャッシュ使用量をルーティングシグナルとして利用します。 プロバイダーがキャッシュ済み入力トークンを返すと、同じキャッシュキーまたは安定した 冒頭のコンテキストを持つリクエストは15分間そのプロバイダーを優先します。これにより、別の プロバイダーに同じプロンプトキャッシュを再構築させる費用を避けられます。session_idを含めると、キャッシュ読み取りが確認された時点でセッション親和性も作成されます。
Phaseoはアクティブなセッション期間中その親和性を保持しながら、
プロバイダーが不健全になった場合やポリシー対象外になった場合はフェイルオーバーします。
1つのリクエストで無効にするにはprovider.cache_aware_routingをfalseに設定します。続けて、
リクエストにsession_idが含まれていても、通常のコンテキストベースのルーティングだけを使う場合は、
routing.session_affinityをfalseに設定します。