Skip to content

Automatic Prompt Caching

Anthropic モデルへのマルチターン呼び出しに cache_control を自動注入し、設定なしでキャッシュ割引を受けられるようにします。

Anthropic のプロンプトキャッシュはオプトイン方式で、cache_control マーカーを自分で付けないと機能せず、知らなければ割引を逃します。PleumRouter は Anthropic モデルへルーティングされるマルチターン呼び出しにキャッシュ分岐点を自動注入します — リクエストの変更は不要で、デフォルトで有効です(運用設定 routing.auto_cache_enabled)。

multi-turn call — nothing to add
curl https://apirouter.pleum.ai/v1/chat/completions \
  -H "Authorization: Bearer plm_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [
      {"role": "system", "content": "<long system prompt, 4000+ chars>"},
      {"role": "user", "content": "First question about the document."},
      {"role": "assistant", "content": "..."},
      {"role": "user", "content": "Follow-up question."}
    ]
  }'

注入ルール#

明示指定が常に優先 — リクエストのどこかに自分で cache_control を付けていれば、自動注入は完全に退きます。すでに明示的 キャッシュを使っているリクエストはそのまま動作します。

最初のターンは無介入 — 会話に assistant メッセージが 1 つもない(最初の リクエスト)場合は注入しません。再利用が確定しているマルチターンでのみ介入します。

注入ポイントは最大 2 箇所 — システムプロンプトの最後のブロックと、最後から 2 番目の user メッセージの最後のブロックです(マルチターンでプレフィックス再利用が最大化される 位置)。各ポイントは、その内容が合計 4,000 文字以上のときのみ注入されます(Anthropic の最小 キャッシュサイズに対応、運用側で調整可能)。

注入は Anthropic API 形式に変換されたリクエストの内部でのみ行われるため、フォールバックで別の (OpenAI 互換)プロバイダーがサービングすることになっても、 cache_control がそちらへ漏れることはありません。

最初のターンに注入しない理由:Anthropic のキャッシュ書き込みは通常入力単価の 1.25 倍ですが、 単発リクエストは読み取り割引を受ける機会がなく、割増だけ払って終わります。マルチターンでのみ 介入することで、自動注入でユーザーが損をするケースをなくしています。

課金とレスポンス#

キャッシュがヒットすると、レスポンスの usage prompt_tokens_details.cached_tokens(ヒットトークン)と cache_creation_input_tokens(書き込みトークン)が表示され、割引・割増は 課金に自動反映されます。キャッシュ料金の詳細は Chat Completions ドキュメントを参照してください。

usage on a cache hit
"usage": {
  "prompt_tokens": 12480,
  "completion_tokens": 210,
  "prompt_tokens_details": {"cached_tokens": 11900},
  "cache_creation_input_tokens": 0
}
最初のターンからキャッシュを効かせたい場合(会話が続くと確実なとき)や分岐点を自分で制御したい 場合は、cache_control を明示してください — 自動注入は退き、指定した とおりにのみ動作します。