Кэширование промптов: как считаются чтение и запись кэша в Zukko
Из чего складывается счёт, когда работает кэш промптов: свежий вход, чтение, запись и выход. Формула и два расчёта на текущих ценах.
7 мин · · экономия · разработка
Если вы запускаете агента по большому проекту или держите бота с длинной инструкцией, основная часть счёта приходится на вход: одни и те же тысячи токенов уходят модели при каждом запросе. Кэширование промптов снижает стоимость этого входа, но считается оно по своим правилам. Ниже — как Zukko тарифицирует чтение и запись кэша, формула и два расчёта на ценах от 6 октября 2026 года.
Что такое кэш промптов и из чего складывается счёт
Модель читает запрос с начала. Если начало запроса (префикс) — системный промпт, описания инструментов, ранняя часть диалога — совпадает с недавним запросом, провайдер не обрабатывает его заново, а берёт из кэша. Поэтому входные токены в счёте делятся на три группы:
- свежий вход — токены после закэшированного префикса, по обычной цене входа;
- запись кэша — префикс, который сохраняется впервые; у Claude запись стоит дороже обычного входа;
- чтение кэша — префикс, взятый из кэша; у Claude это около десятой части цены входа.
Выход оплачивается как обычно. В Zukko у каждой модели своя цена чтения кэша, а запись отдельно списывается только у Claude в Anthropic-формате — это видно в таблице ниже и на странице «Модели» в кабинете.
Формула: стоимость кэширования промптов
стоимость = (свежий вход × цена входа
+ чтение кэша × цена чтения
+ запись кэша × цена записи
+ выход × цена выхода) / 1 000 000
Цены — в долларах за 1 млн токенов. Текущие значения для моделей, которые чаще всего берут под кэш:
| Модель | Вход | Чтение кэша | Запись кэша | Выход |
|---|---|---|---|---|
claude-sonnet-5 | 0.2 | 0.025 | 0.25 | 1.013 |
claude-opus-5-5 | 0.4 | 0.038 | 0.425 | 2 |
gpt-6.1-sol | 0.27 | 0.013 | — | 1.32 |
gemini-3.8-flash | 0.025 | 0.013 | — | 0.088 |
deepseek-v4.1-flash | 0.013 | 0.013 | — | 0.038 |
У GPT, Gemini и DeepSeek запись в кэш отдельно не списывается: первый запрос целиком идёт по цене входа. Из таблицы видно главное. У Claude разница между входом и чтением большая, и кэш сильно меняет счёт. У DeepSeek V4.1 Flash вход и чтение кэша стоят одинаково, поэтому кэш на стоимость не влияет. У Gemini 3.8 Flash чтение стоит $0.013 против $0.025 за вход — если поставщик сообщает о чтении кэша в ответе. Набор и цены меняются: актуальный список — GET https://api.zukko.pro/v1/models или страница «Модели» в кабинете.
Расчёт 1: сессия агента на Claude Sonnet 5
Возьмём итоговые счётчики сессии агента: 200 000 токенов прочитано из кэша, 5 000 токенов свежего входа, 10 000 токенов записано в кэш, 3 000 токенов выхода.
- чтение кэша: 200 000 × 0.025 / 1 000 000 = $0.005
- свежий вход: 5 000 × 0.2 / 1 000 000 = $0.001
- запись кэша: 10 000 × 0.25 / 1 000 000 = $0.0025
- выход: 3 000 × 1.013 / 1 000 000 = $0.003039
Итого: $0.011539, примерно 1,2 цента.
Без кэша те же 215 000 входных токенов идут по цене входа: 215 000 × 0.2 / 1 000 000 = $0.043, плюс выход $0.003039 — всего $0.046039.
Тот же объём на claude-opus-5-5: 200 000 × 0.038 + 5 000 × 0.4 + 10 000 × 0.425 + 3 000 × 2 = 7 600 + 2 000 + 4 250 + 6 000 = 19 850, делим на миллион — $0.01985. Без кэша: (215 000 × 0.4 + 3 000 × 2) / 1 000 000 = $0.092.
Расчёт 2: бот с длинной инструкцией
Системный промпт на 20 000 токенов, 100 запросов подряд, каждый добавляет 500 токенов вопроса и получает 300 токенов ответа. Первый запрос записывает инструкцию в кэш, остальные 99 читают её.
- запись: 20 000 × 0.25 / 1 000 000 = $0.005
- чтение: 99 × 20 000 = 1 980 000 × 0.025 / 1 000 000 = $0.0495
- свежий вход: 100 × 500 = 50 000 × 0.2 / 1 000 000 = $0.01
- выход: 100 × 300 = 30 000 × 1.013 / 1 000 000 = $0.03039
Итого: $0.09489. Без кэша: 100 × 20 500 = 2 050 000 × 0.2 / 1 000 000 = $0.41, плюс выход $0.03039 — $0.44039.
Условие одно: запросы должны идти достаточно часто. По документации Anthropic кэш живёт 5 минут по умолчанию, и каждое чтение продлевает этот срок. Если бот получает один вопрос в час, кэш каждый раз успевает истечь, и инструкция будет записываться заново.
Когда запись кэша не окупается
У Claude Sonnet 5 запись стоит $0.25 против $0.2 за обычный вход. Префикс, который записали и ни разу не прочитали, обходится на $0.05 за миллион токенов дороже, чем без кэша. Одно чтение экономит 0.2 − 0.025 = $0.175 за миллион, поэтому запись окупается с первого же попадания.
На примере инструкции в 20 000 токенов: один запрос с записью — $0.005 против $0.004 без кэша; два запроса — 0.005 + 0.0005 = $0.0055 против $0.008.
Ещё два ограничения из документации Anthropic:
- минимальная длина кэшируемого префикса — 1 024 токена для Claude Sonnet 5 и 512 токенов для Claude Opus 5.5; более короткий промпт идёт без кэша;
- кэш срабатывает только на полностью совпадающем префиксе. Поменяли слово в системном промпте, набор инструментов или порядок сообщений в начале — получите новую запись вместо чтения.
Отсюда практическое правило: всё постоянное (инструкция, инструменты, справочные документы) ставьте в начало запроса, всё меняющееся — в конец.
Где кэш учитывается, а где нет
- Claude — скидку за кэш даёт Anthropic-формат:
POST /v1/messages, Claude Code, Anthropic SDK. Там шлюз видит, сколько входа пришло из кэша. В OpenAI-формате (/v1/chat/completions) для Claude весь вход идёт по цене входа. Подробнее о выборе — в документации про формат провайдера. - GPT — кэш виден в обоих форматах, в OpenAI-формате — в поле
usage.prompt_tokens_details.cached_tokens. Шлюз видит только чтение: запись отдельно не списывается, первый запрос целиком идёт по цене входа. По документации OpenAI для моделей GPT-5.6 и новее кэш включается сам, если префикс не короче 1 024 токенов. - DeepSeek, Gemini, Qwen, GLM — чтение кэша учитывается, если поставщик сообщает его в ответе; записи нет.
Как один и тот же Claude-запрос тарифицируется в двух форматах — в статье о кэше в Messages и Chat Completions.
Claude Code расставляет метки кэша сам, ничего настраивать не нужно — достаточно подключить его по инструкции для Claude Code. В своём коде на Anthropic SDK метку ставят вручную через cache_control:
import anthropic
PRICES = {"input": 0.2, "cache_read": 0.025, "cache_write": 0.25, "output": 1.013} # claude-sonnet-5
client = anthropic.Anthropic(base_url="https://api.zukko.pro", api_key="fetch_ваш_ключ")
long_instructions = open("instructions.md", encoding="utf-8").read()
resp = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
system=[{
"type": "text",
"text": long_instructions,В формате Anthropic поле input_tokens — это только свежий вход после последней метки кэша; полный вход = input_tokens + cache_read_input_tokens + cache_creation_input_tokens. Обратите внимание: base URL здесь без /v1, SDK добавляет путь сам.
Как проверить по факту
- Отправьте один и тот же длинный запрос дважды с интервалом меньше пяти минут. В первом ответе должна быть запись кэша, во втором — чтение.
- У обычного (не потокового) ответа Zukko есть заголовок
X-Zukko-Cost-Micros— стоимость запроса в микродолларах (1 000 000 = $1). Сравните его со своей формулой. - Итог по дням и моделям смотрите в кабинете, в разделе «Использование».
Не путайте кэш промптов с кэшем одинаковых ответов через заголовок X-Zukko-Cache: это отдельный механизм Zukko, он отдаёт повтор полностью совпадающего запроса бесплатно. Как он работает — в статье про X-Zukko-Cache.
Чтобы проверить расчёты на своих запросах, создайте ключ на странице API-ключей и прогоните пару тестов из примера выше.
Частые вопросы
Нужно ли включать кэш в Claude Code?
Нет. Claude Code сам помечает постоянную часть контекста. Важно только, чтобы он был подключён в Anthropic-формате: ANTHROPIC_BASE_URL=https://api.zukko.pro и ключ в ANTHROPIC_AUTH_TOKEN.
Почему в Cursor не видно скидки за кэш на Claude?
Cursor подключается к Zukko через OpenAI-формат, а в /v1/chat/completions для Claude весь вход идёт по цене входа. Если кэш важен, используйте Claude-модели через инструменты с Anthropic-форматом.
Влияет ли кэш на цену DeepSeek V4.1 Flash?
Нет. У этой модели в Zukko вход и чтение кэша стоят одинаково — $0.013 за миллион токенов, а запись отдельно не списывается.
Можно ли заранее узнать, сколько токенов попадёт в кэш?
Точно — нет, это решает провайдер. Можно посчитать длину префикса через POST /v1/messages/count_tokens и убедиться, что она выше минимального порога модели.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- Память чат-бота: как хранить историю диалога и не платить за неё дваждыМодель не помнит предыдущих реплик: историю отправляете вы при каждом запросе. Разбираем, как растёт цена диалога и чем её сдерживать.
- LangChain text splitters: как резать текст на чанки правильноКак подобрать размер чанка и перекрытие в RecursiveCharacterTextSplitter, почему считать нужно в токенах и как сверить подсчёт с точным количеством от шлюза.
- LangChain RAG: рабочий пример с моделью через шлюзСтроим простой RAG на LangChain: документы, чанки, векторный поиск и ответ модели через шлюз. Считаем, из чего складывается цена вопроса, и режем лишние токены.
- Агенты opencode: как настроить роли, модели и инструментыСвой агент в opencode — это роль, модель и список разрешений. Показываем конфиг и пример, где рутину делает дешёвая модель, а код правит сильная.