Промпт-кеширование сокращает расходы на входные токены агентов в 5–10 раз: повторный префикс запроса читается из кэша по ставке 0.1× (Anthropic) или $0.0036 за миллион у DeepSeek. В статье — как это работает, кто и по каким ставкам кэширует, как попасть в кэш и проверить cache hit rate.
Миллион входных токенов у Claude Sonnet 5 стоит $2, у DeepSeek V4 Pro — $0.435 (цены на момент публикации, август 2026). Агент в длинной сессии пересылает весь контекст на каждом ходу, и без кэширования счёт растёт на глазах: сессия из 50 ходов с контекстом 200K токенов — это 10 миллионов входных токенов только на «перечитывание» истории. С кэшем тот же объём обходится примерно в $2.4 вместо $20. Разбор цифр — ниже.
Почему это вообще про агентов
Инженеры Anthropic, строившие Claude Code, формулируют прямо:
Prompt caching works by prefix matching — the API caches everything from the start of the request up to each cache_control breakpoint. This means the order you put things in matters enormously, you want as many of your requests to share a prefix as possible.
Промпт-кеширование работает за счёт матчинга префикса: API кэширует всё от начала запроса до каждой точки кэширования. Порядок содержимого в промпте критичен — нужно, чтобы как можно больше запросов делили один и тот же префикс.
— Thariq Shihipar, Claude Code team, «Lessons from building Claude Code: Prompt caching is everything», 30.04.2026
Причина в архитектуре: модель ничего не «помнит» между запросами. Каждый ход агента — новый запрос, который отправляет на сервер весь накопленный контекст: системный промпт, инструкции проекта, историю диалога, результаты работы инструментов и ваше новое сообщение. Без кэширования сервер пересчитывал бы каждую букву этого контекста заново на каждом ходу.
Как работает кэширование по префиксу
Кэш матчит только начало запроса. Провайдер сохраняет обработанный префикс и при следующем запросе, если начало совпадает, отдаёт его из кэша по пониженной ставке — обрабатывается только то, что изменилось в хвосте.
Два следствия, которые определяют всю практику:
- Совпадение должно быть точным. Изменение любого токена в середине префикса сбрасывает всё, что идёт после него. «Побуквенного» или посегментного кэширования файлов нет — это прямо указано в документации Claude Code.
- Порядок слоёв решает всё. Claude Code раскладывает запрос так, чтобы редко меняющееся шло первым: системный промпт → контекст проекта (CLAUDE.md, авто-память) → история разговора. Изменение системного слоя отбрасывает кэш ниже — потому что весь следующий контент теперь стоит за другим префиксом.

Время жизни кэша (TTL) разное у всех провайдеров:
- Anthropic — 5 минут в API-режиме и 1 час на подписке Pro/Max; каждый кэш-хит сбрасывает таймер, так что кэш живёт, пока вы работаете (docs.claude.com, Cache lifetime).
- OpenAI — минимум 30 минут: параметр
prompt_cache_options.ttlпринимает единственное значение30m, оно же по умолчанию; OpenAI может держать кэш дольше (документация). - DeepSeek — диск-кэш без фиксированного TTL: неиспользуемый кэш очищается в течение нескольких часов или дней (Context Caching).
Сам кэш живёт на стороне провайдера: у Anthropic это KV-кэш в памяти сервера, который не записывается на диск и не хранит сырой текст промптов (раздел про data retention). DeepSeek кэширует на диске.
У кого как: ставки и TTL
| Провайдер | Как включается | Запись в кэш | Чтение из кэша | Время жизни |
|---|---|---|---|---|
| Anthropic (Claude API) | автоматически + cache_control |
1.25× цены входа (5 мин) / 2× (1 час) | 0.1× цены входа | 5 мин, опция 1 час |
| OpenAI (GPT-5.6 и новее) | автоматически от 1024 токенов + явные breakpoints | 1.25× цены входа | пониженная кэш-ставка | минимум 30 мин |
| DeepSeek V4 | автоматически, без изменения кода | отдельной платы нет | $0.007–0.044/1M (≈3% от входа) | часы–дни (диск) |
Anthropic: читать по 0.1×, писать дороже
На Claude API кэш включается двумя способами: автоматически (один cache_control на уровне запроса) или явными точками кэширования (cache breakpoints) на отдельных блоках. Ставки фиксированные (Prompt caching, pricing):
| Модель | Вход | Кэш-чтение (0.1×) | Запись 5 мин (1.25×) | Запись 1 час (2×) |
|---|---|---|---|---|
| Haiku 4.5 | $1 | $0.10 | $1.25 | $2 |
| Sonnet 5 | $2 | $0.20 | $2.50 | $4 |
| Opus 5 | $5 | $0.50 | $6.25 | $10 |
| Fable 5 | $10 | $1.00 | $12.50 | $20 |
Минимальная кэшируемая длина промпта зависит от модели: 512 токенов у Opus 5, Fable 5 и Mythos 5, 2048 у Opus 4.7, 4096 у Opus 4.6/4.5 (Cache limitations). Кэш-хиты не вычитаются из rate limits — на высокой нагрузке это отдельный бонус (документация).
В Claude Code кэширование управляется автоматически: на подписке применяется часовой TTL, на API-ключе — пятиминутный. Вернуть часовой кэш на API можно переменной ENABLE_PROMPT_CACHING_1H=1, форсировать пятиминутный — FORCE_PROMPT_CACHING_5M=1 (docs.claude.com).
OpenAI: 1024 токена, явные breakpoints и 30 минут
У OpenAI кэш включается автоматически для промптов от 1024 токенов на моделях gpt-4o и новее. На GPT-5.6 и более новых семействах появляются две особенности (Prompt caching guide):
- Запись в кэш платная — 1.25× от обычной ставки входных токенов. На моделях до GPT-5.6 доплаты за запись не было.
- Явные точки кэширования.
prompt_cache_breakpointна конце стабильного префикса и общийprompt_cache_keyна группе запросов. По умолчанию стоит неявная точка на последнем пользовательском или тул-сообщении; режимexplicitотключает её, оставляя только ваши точки.
Без ключа улучшенный матчинг не работает, а под каждый ключ рекомендуется не больше ~15 запросов в минуту — выше часть запросов уходит мимо кэша.
DeepSeek: самый дешёвый кэш-хит
DeepSeek включает кэш автоматически, без изменения кода — «Context Caching on Disk» (Context Caching). Цены на момент публикации (Models & Pricing):
| Модель | Кэш-хит | Кэш-мис (обычный вход) | Выход |
|---|---|---|---|
| deepseek-v4-flash | $0.0028 | $0.14 | $0.28 |
| deepseek-v4-pro | $0.0036 | $0.435 | $0.87 |
На странице цен отдельно помечено: с 16.08.2026 DeepSeek переходит на пиковые/внепиковые тарифы (пик — 01:00–04:00 и 06:00–10:00 UTC, вне пика вдвое дешевле). У V4 Pro вне пика кэш-хит будет $0.022, в пик $0.044 — всё равно примерно в 30 раз дешевле обычного входа ($0.66/$1.32).

Механика у DeepSeek своя: система сохраняет общие префиксы нескольких запросов как самостоятельные единицы и может «размечать» длинные входы фиксированными интервалами токенов. Совпадение должно быть полным, кэш работает по принципу best-effort — 100% хитов не гарантируется (Context Caching).

Как попасть в кэш: практика
Общий принцип у всех провайдеров один: статичный контент вперёд, динамический — в конец. Инженеры Anthropic для Claude Code зафиксировали порядок так:
- статичный системный промпт и определения тулов — кэшируются глобально;
CLAUDE.md— кэшируется в рамках проекта;- контекст сессии — кэшируется в рамках сессии;
- сообщения разговора — растут ход за ходом (блог Anthropic).
В Claude Code ничего настраивать не нужно — агент сам раскладывает запрос по слоям и ставит кэш. Ваша часть — не мешать: выбирать модель и effort в начале сессии и не менять их в середине, не подключать и не отключать MCP-серверы по ходу задачи, делать /clear между несвязанными задачами. Подробно про управление контекстом — в статье «Контекст Claude Code: как управлять памятью агента», про оплату по токенам вместо подписки — в гайде по API-режиму.
В сыром Anthropic API точки кэширования ставите вручную через cache_control. Стабильные блоки (системный промпт, определения тулов) — в начало, под cache_control, изменчивые данные — в конец:
from anthropic import Anthropic
client = Anthropic()
system = [{
"type": "text",
"text": "Ты — ассистент поддержки продукта. Отвечай по базе знаний ниже.",
"cache_control": {"type": "ephemeral"}, # точка кэширования
}, {
"type": "text", "text": knowledge_base_text, # большой стабильный блок
}]
resp = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
system=system,
messages=[{"role": "user", "content": user_question}], # динамический хвост
)
Точку ставьте на последний блок, который совпадает между запросами. Если навесить cache_control на блок с временной меткой или идентификатором запроса — префикс не совпадёт и кэш не сработает. Для разогрева кэша перед первым запросом пользователя есть официальный приём — прогрев с max_tokens: 0 (Pre-warming the cache).
В OpenAI API у GPT-5.6 тот же приём, но своими параметрами: явная точка prompt_cache_breakpoint на конце стабильного префикса и общий prompt_cache_key, чтобы запросы попадали в один кэш:
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-5.6",
prompt_cache_key="tenant:acme:support-v1",
prompt_cache_options={"mode": "explicit"},
input=[
{"type": "message", "role": "system", "content": [
{"type": "input_text", "text": "Ты — ассистент поддержки.",
"prompt_cache_breakpoint": {"mode": "explicit"}},
]},
{"type": "message", "role": "user", "content": question},
],
)
Режим explicit отключает автоматическую точку, поэтому дорогая переменная часть (история тулов, сообщения) не будет каждый раз записываться в кэш. Подробные примеры — в документации.
В DeepSeek делать ничего не нужно: система сама сохранит общий префикс при повторении. Единственное, что стоит поддерживать, — стабильный системный промпт и общий «хвост» инструкций в начале запроса (Context Caching).
Ещё один приём из блога Anthropic: устаревшие данные лучше передавать сообщениями, а не правкой системного промпта. В Claude Code для этого существует тег <system-reminder> — вставка в следующее сообщение не ломает префикс, тогда как редактирование системного слоя сбрасывает кэш целиком (блог Anthropic).

Что инвалидирует кэш
Полный список действий, после которых следующий ход пойдёт мимо кэша, есть в документации Claude Code:
- смена модели (
/model) или уровня effort (/effort) — у каждой модели и каждого effort собственный кэш; - компакция (
/compact) — история заменяется резюме, префикс перестаёт совпадать; - подключение или отключение MCP-сервера, если определения тулов попадают в префикс;
- включение fast mode;
- обновление самого Claude Code — меняется системный промпт;
- запрет целого инструмента (deny);
- пауза дольше TTL.
Самый дорогой случай — возобновление старой сессии после паузы длиннее TTL: кэш истёк, и /compact при возобновлении перечитывает всю историю по полной ставке (docs.claude.com).

Часть действий кэш переживает. Правка файлов репозитория не трогает его (файл попадает в контекст, только когда агент его читает), правка CLAUDE.md в середине сессии применится только после /clear или рестарта, а /recap и /rewind добавляют или урезают контент так, что префикс остаётся тем же (docs.claude.com).
В сыром API Anthropic действует та же логика: изменение определений тулов сбрасывает весь кэш, переключение web search или citations меняет системный промпт, а смена tool_choice или появление изображения в промпте — тоже инвалидация (What invalidates the cache).
Про MCP: когда тулы загружены в префикс, подключение сервера по ходу сессии сбрасывает кэш. Механика самого протокола — в статье «Что такое MCP».
Как проверить экономию
Все провайдеры отдают статистику кэша в полях usage ответа. У Anthropic это две величины:
| Поле | Значение |
|---|---|
cache_creation_input_tokens |
токены, записанные в кэш на этом ходе (по ставке записи) |
cache_read_input_tokens |
токены, отданные из кэша (примерно 10% от ставки обычного входа) |
cache_read_input_tokens: Tokens served from cache on this turn, billed at roughly 10% of the standard input rate
cache_read_input_tokens — токены, отданные из кэша в этом ходе; тарифицируются примерно по 10% от стандартной ставки входных токенов.

Если cache_creation_input_tokens стабильно высокий ход за ходом — что-то меняет префикс, и это стоит разобрать. В Claude Code есть и готовый инструмент: команда /usage показывает статистику по токенам и стоимости сессии, а для непрерывного мониторинга можно вывести поля кэша в статусную строку терминала через скрипт statusline (docs.claude.com).
У DeepSeek соответствующие поля — prompt_cache_hit_tokens и prompt_cache_miss_tokens (Context Caching), у OpenAI — cached_tokens (чтение) и cache_write_tokens (запись) (документация).
Честные ограничения
- Кэш не бесплатный. Запись стоит 1.25× у Anthropic и OpenAI, а за часовой TTL у Anthropic — вообще 2× от входа. Если префикс меняется на каждом запросе, вы платите за постоянные записи и ничего не экономите. Кэш окупается на повторяющихся стабильных префиксах.
- Короткие промпты не кэшируются. Минимум — 512–4096 токенов у Anthropic в зависимости от модели, 1024 у OpenAI.
- Кэш умирает от паузы. Первый ход после перерыва дольше TTL (5 минут на API Anthropic, 1 час на подписке, минимум 30 минут у OpenAI) обрабатывается целиком по полной ставке.
- Кэш привязан к машине и папке в Claude Code. Системный промпт вшивает рабочую директорию, платформу и состояние git, поэтому две сессии в разных папках не делят кэш, а параллельные сессии в одной — делят (Cache scope).
- У сабагентов свой кэш. Их первый запрос не читает родительский кэш, а у DeepSeek кэш вообще работает на принципе best-effort без гарантии хитов.
- Кэш экономит деньги, а не качество. Деградация длинных сессий никуда не девается — контекст по-прежнему нужно компактить и держать коротким. Это отдельная тема, разобранная в статье про контекст Claude Code.
Российские реалии
На доступ из России промпт-кеширование влияет косвенно, но ощутимо:
- Anthropic по-прежнему недоступна из РФ. Россия не входит в список поддерживаемых стран, и даже страница документации по промпт-кэшу (platform.claude.com) отдаёт с российского IP заглушку «App unavailable in region» — как и весь Claude Platform. Обзор ситуации и способы оплаты — в статье про Claude Code в России (Habr, июнь 2026) и в практическом опыте «Как стать вайбкодером». Тем, кто платит через VPN и посредников, каждый доллар обходится дороже, поэтому кэш-хит в 0.1× важнее именно для таких пользователей: на длинной сессии экономия превращается в реальные сэкономленные переводы.
- DeepSeek работает из РФ без VPN. На момент публикации
api.deepseek.comи платформа отвечают с российского IP, документация и страница цен открываются напрямую. С кэш-хитом за копейки DeepSeek остаётся самой дешёвой бюджетной альтернативой для агентов — отдельный разбор модели — в статье про DeepSeek V4 Pro. Про оплату российскими картами честно: официальной информации и свежих подтверждённых кейсов на момент публикации найти не удалось, обычно требуется карта зарубежного банка или посредник.
Отдельного русскоязычного разбора именно промпт-кеширования в рунете на момент публикации нет. Ближайшее по теме:
- «Проблема не в промпте: как Claude Code плывет на длинных задачах» (Habr, март 2026) — context engineering: почему длинные сессии дорогие и как с ними работать.
- «/compact в Claude Code: как работает сжатие контекста» (okhlopkov.com) — сколько стоит компакция на тёплом и холодном кэше.
- «Как правильно начинать новую сессию в Claude Code?» (vc.ru) — практика сессий, от которой зависит кэш.
Что в итоге
Промпт-кеширование — не опция, а встроенный механизм всех крупных API: Anthropic читает префикс из кэша за 0.1×, OpenAI берёт 1.25× за запись и держит кэш минимум 30 минут, DeepSeek кэширует на диске за копейки. Длинные агентные сессии без него были бы в разы дороже, и именно поэтому Claude Code построен вокруг кэша: команда Anthropic мониторит cache hit rate как uptime и поднимает SEV при просадке.
Практика сводится к четырём правилам: держать статичный контент в начале запроса, не менять модель и тулы в середине сессии, делать /clear между задачами и следить за cache_read_input_tokens против cache_creation_input_tokens. Соблюдаете их — длинные сессии перестают быть статьёй расходов.
Дальше по теме: Claude Code через API: подключение и лимиты, контекст Claude Code, установка Claude Code, что такое MCP, ИИ для баз данных и SQL.
