Документация · Кэширование

Руководства

Кэширование

Повторяющееся начало запроса модель читает из кэша — такие токены стоят в четыре раза дешевле. Как это работает и как попадать в кэш чаще.

Как это работает#

Модели запоминают начало недавних запросов. Если следующий запрос начинается так же — тот же системный промпт, те же документы, та же история диалога, — эта часть читается из кэша: быстрее и дешевле. Входные токены из кэша стоят 25% обычной цены входа модели, выходные — как обычно.

Цена входа из кэша указана для каждой модели в каталоге и на её странице.

У каких моделей#

  • OpenAI, Google, DeepSeek, xAI и большинство остальных кэшируют сами — делать ничего не нужно.
  • Claude кэширует только размеченное. Для запросов без разметки flua ставит автоматическую точку кэша сам — в Chat Completions и в Messages. Запись в кэш у Claude стоит 125% цены входа, чтение — 25%: окупается уже со второго запроса с тем же началом.
Кэш живёт несколько минут после последнего обращения и действует на минимальную длину начала (обычно от 1–4 тысяч токенов). Короткие запросы не кэшируются.

Как попадать в кэш чаще#

  • Неизменное — в начало: системный промпт, инструкции, документы, описания инструментов.
  • Меняющееся — в конец: текущий вопрос, дату и время, случайные идентификаторы. Одна изменившаяся буква в начале сбрасывает кэш для всего, что после неё.
  • Набор инструментов и их порядок держите одинаковыми между запросами.

Сколько пришло из кэша#

Это видно в поле usage каждого ответа и в журнале запросов в кабинете (число в скобках у входящих токенов).

Chat Completions
"usage": {
  "prompt_tokens": 5120,
  "completion_tokens": 310,
  "prompt_tokens_details": { "cached_tokens": 4864 }
}
Messages (Anthropic)
"usage": {
  "input_tokens": 256,
  "cache_read_input_tokens": 4864,
  "cache_creation_input_tokens": 0,
  "output_tokens": 310
}

Своя разметка для Claude#

В Messages API можно расставить точки кэша самим — до четырёх блоков с cache_control. Тогда flua свою автоматическую не добавляет.

Python · anthropic
client.messages.create(
    model="claude-opus-5-5",
    max_tokens=4096,
    system=[{
        "type": "text",
        "text": LONG_INSTRUCTIONS,
        "cache_control": {"type": "ephemeral"},
    }],
    messages=[{"role": "user", "content": question}],
)