テーマ
言語
·1 分で読めます

プロンプトキャッシュ:繰り返しプロンプトのコストを削減する方法

GetVibe APIでプロンプトキャッシュがどのように機能するかを解説します。OpenAIモデルの自動キャッシュ、Claudeのcache_control、cacheReadMultの意味、キャッシュ可能なプレフィックスを維持する方法について説明します。

プロンプトキャッシュ:繰り返しプロンプトのコストを削減する方法

LLMのトラフィックの多くは繰り返しです。チャットボットは毎回のターンで同じシステムプロンプトを再送し、エージェントはツール定義と、それまでの会話全体を再送します。プロンプトキャッシュを使うと、モデルは繰り返されるプレフィックスをキャッシュから読み取れるため、キャッシュされた入力には通常の入力料金の一部しかかかりません。このガイドでは、GetVibe APIでの仕組みと、最大限に活用する方法を説明します。

キャッシュされた入力にかかる料金

カタログに掲載されているすべてのテキストモデルには、キャッシュに関する条件が記載されています。https://getvibeapi.com/api/catalogでは、各モデルバリアントに次の項目があります。

  • cachedInputUsd:キャッシュされた入力トークン1Mあたりの料金です。
  • cacheReadMult:通常の入力料金に対する、キャッシュ読み取り料金の割合です。
  • cacheWriteMult:通常の入力料金を基準とした、キャッシュへの書き込み料金です。

執筆時点では、ほぼすべてのテキストモデルでcacheReadMult: 0.1が設定されています。これは、キャッシュされた入力トークンの料金が通常の10分の1であることを意味し、cacheWriteMult: 1も設定されています。唯一の例外はClaude Fable 5.1で、読み取りは0.025、書き込みは1.25です。これらの値は変更される可能性があるため、ハードコードせず、カタログまたは各モデルページから読み取ってください。

モデル料金(入力 · 出力)
Claude Opus 5.5$0.1067 入力 · $0.5334 出力 100万トークンあたり
GPT-6 Sol$0.1096 入力 · $0.548 出力 100万トークンあたり
DeepSeek V4.1 Flash$0.0112 入力 · $0.0445 出力 100万トークンあたり

モデルページには、これらの料金と並んでキャッシュ入力の料金も記載されています。

OpenAIモデル:自動

/v1/chat/completionsでは、OpenAIファミリーのモデルが自動的にキャッシュを使用します。複数のリクエストが同じ安定したプレフィックスで始まる場合、そのプレフィックスがキャッシュから読み取られます。特別なフィールドは必要ありません。重要なのは、リクエストの先頭部分が変わらないことです。GetVibe APIではリクエストボディをフィールドの並べ替えなしにバイト単位でそのまま渡すため、クライアント側で同一のプレフィックスは上流でも同一のまま維持されます。

Claude:cache_controlブレークポイント

Claudeは、リクエストに明示的なcache_controlブレークポイントが含まれている場合にのみキャッシュします。プレフィックスを繰り返すだけではキャッシュは有効になりません。変更されない部分の末尾にブレークポイントを置いてください。

curl https://getvibeapi.com/v1/messages \
  -H "x-api-key: $GETVIBE_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-5.5",
    "max_tokens": 256,
    "system": [
      {"type": "text", "text": "キャッシュする価値のある大規模な固定指示...",
       "cache_control": {"type": "ephemeral"}}
    ],
    "messages": [{"role": "user", "content": "この指示に関する質問"}]
  }'

自分でブレークポイントを送信しない場合は、ゲートウェイが/v1/messagesと/v1/chat/completionsの両方で自動的に挿入します。ブレークポイントを自分で管理している場合、指定したマークアップはそのまま維持されます。

キャッシュ可能なプロンプトにするための5つのルール

  1. 安定したコンテンツを先に、可変のコンテンツを後に置きます。システムプロンプト、ツール定義、参照ドキュメントを先頭に配置します。ユーザーの新しいメッセージは末尾に置きます。
  2. プレフィックスにタイムスタンプやリクエストIDを入れないでください。先頭付近の文字が1つ変わるだけで、それ以降のすべてが無効になります。
  3. ツール定義は固定の順序に保ちます。順序付けされていないマップからツールのリストを生成すると、呼び出しごとにプレフィックスが変わります。
  4. 履歴は書き換えず、追加します。以前のターンを要約したり並べ替えたりするエージェントでは、キャッシュが壊れます。新しいターンは末尾に追加してください。
  5. 1つのモデルを使い続けます。キャッシュはモデルに紐付くため、会話の途中でモデルを切り替えるとキャッシュがない状態から始まります。

動作を確認する

レスポンスのusageオブジェクトを確認してください。OpenAI形式では、キャッシュされたトークンはprompt_tokens_details.cached_tokensに表示されます。Anthropic形式では、cache_read_input_tokensとcache_creation_input_tokensを確認してください。ダッシュボードの使用状況ビューには、モデルごとのキャッシュヒット率も表示されます。同一のリクエストを送っているのにキャッシュ数が常に0の場合は、プレフィックス内の何かが変化しています。

次のステップ

キャッシュに関するドキュメントを読み、カスタムエンドポイントでClaude Codeをセットアップしてください(エージェントはキャッシュによるメリットが特に大きくなります)。または、モデルページでキャッシュ適用時の料金を比較してください。

プロンプトキャッシュLLM APIのコストキャッシュ済み入力の料金Claude cache_controlOpenAIのプロンプトキャッシュLLM APIのコスト削減

GetVibe APIを無料で試す

1つのOpenAI互換APIでGPT、Claude、Geminiなどを利用できます。カードまたは暗号資産で米ドル払いに対応しています。

関連記事

プロンプトキャッシュ:繰り返しプロンプトのコストを削減する方法 | GetVibe API