Как это работает#
Модели запоминают начало недавних запросов. Если следующий запрос начинается так же — тот же системный промпт, те же документы, та же история диалога, — эта часть читается из кэша: быстрее и дешевле. Входные токены из кэша стоят 25% обычной цены входа модели, выходные — как обычно.
Цена входа из кэша указана для каждой модели в каталоге и на её странице.
У каких моделей#
- OpenAI, Google, DeepSeek, xAI и большинство остальных кэшируют сами — делать ничего не нужно.
- Claude кэширует только размеченное. Для запросов без разметки flua ставит автоматическую точку кэша сам — в Chat Completions и в Messages. Запись в кэш у Claude стоит 125% цены входа, чтение — 25%: окупается уже со второго запроса с тем же началом.
Кэш живёт несколько минут после последнего обращения и действует на минимальную длину начала (обычно от 1–4 тысяч токенов). Короткие запросы не кэшируются.
Как попадать в кэш чаще#
- Неизменное — в начало: системный промпт, инструкции, документы, описания инструментов.
- Меняющееся — в конец: текущий вопрос, дату и время, случайные идентификаторы. Одна изменившаяся буква в начале сбрасывает кэш для всего, что после неё.
- Набор инструментов и их порядок держите одинаковыми между запросами.
Сколько пришло из кэша#
Это видно в поле usage каждого ответа и в журнале запросов в кабинете (число в скобках у входящих токенов).
"usage": {
"prompt_tokens": 5120,
"completion_tokens": 310,
"prompt_tokens_details": { "cached_tokens": 4864 }
}"usage": {
"input_tokens": 256,
"cache_read_input_tokens": 4864,
"cache_creation_input_tokens": 0,
"output_tokens": 310
}Своя разметка для Claude#
В Messages API можно расставить точки кэша самим — до четырёх блоков с cache_control. Тогда flua свою автоматическую не добавляет.
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}],
)