Hakila Docs

Prompt Cache

上游供應商的提示詞快取:用量欄位、各家行為與計價

Prompt Cache 是上游供應商提供的功能:重複送出相同的長前綴(系統提示、文件、工具定義)時,供應商直接讀取快取,費用比一般輸入低很多。Hakila 會原樣轉發快取相關參數,從上游 usage 讀出快取 token 數,並以快取單價計費。

想要「完全相同的請求直接回傳上次的結果、不打上游」,請看 Response Cache。

各供應商行為

供應商啟用方式備註
OpenAI自動(前綴 ≥ 1024 tokens)不需任何參數
Google Gemini自動(隱式快取)回報在 cached_tokens
xAI自動串流時 Hakila 會自動加上 stream_options.include_usage
Anthropic需要 cache_control 斷點,或頂層 cache_control 自動快取見下方範例

Anthropic

Anthropic 直連走原生 Messages API(Hakila 負責把 Chat Completions 轉成 /v1/messages,回應與串流再轉回 Chat Completions 形狀),所以 cache_control 可以直接放在訊息內容區塊上:

{
  "model": "anthropic/claude-sonnet-5",
  "messages": [
    {
      "role": "system",
      "content": [
        {
          "type": "text",
          "text": "<很長的產品手冊…>",
          "cache_control": { "type": "ephemeral" }
        }
      ]
    },
    { "role": "user", "content": "退貨流程是什麼?" }
  ]
}

也可以在請求頂層帶 "cache_control": { "type": "ephemeral" },讓 Anthropic 自動在最後一個可快取區塊放斷點。tools[] 上的 cache_control 同樣會保留。

需要 1 小時快取("ttl": "1h")等 beta 功能時,請自行帶上 anthropic-beta header,Hakila 會轉發給 Anthropic。

用量欄位

Chat Completions 的 usage 會帶上 prompt_tokens_details(沿用 OpenAI 的 cached_tokens 欄位,另外多了 cache_write_tokens):

{
  "usage": {
    "prompt_tokens": 12000,
    "completion_tokens": 300,
    "total_tokens": 12300,
    "prompt_tokens_details": {
      "cached_tokens": 10000,
      "cache_write_tokens": 0
    }
  }
}
  • prompt_tokens 包含快取讀取與寫入的 tokens(Anthropic 原生的 input_tokens 不含快取,Hakila 會加總回來)
  • cached_tokens:從快取讀取的 tokens
  • cache_write_tokens:這次寫入快取的 tokens(目前只有 Anthropic 會回報)

Responses API 的對應欄位是 usage.input_tokens_details.cached_tokens。

計價

每筆請求分四段計價,單位皆為 USD / 1M tokens:

(prompt − cached − cache_write) × Prompt 單價
+ cached × 快取讀取單價
+ cache_write × 快取寫入單價
+ completion × Completion 單價

快取單價由平台模型目錄維護,平台管理員可在模型目錄調整。模型沒有快取單價時,該段一律以 Prompt 單價計算(不會少收)。

Console 的 Logs 會在 Tokens 欄顯示每筆請求的快取讀取/寫入數量。

相關頁面

本頁目錄