AI Ultra · 21 августа 2026

Кэш промпта: за что платишь второй раз, за что нет

После этой страницы ты на одном выдуманном вечере выписываешь два подряд вызова: какой общий префикс второй раз идёт по ставке чтения кэша, и какой кусок сдвинулся. нельзя: менять начало префикса, если ждёшь кэш.

Зачем это сейчас

Вечер на кассе автовокзала «Северный». Два вызова подряд. Оба ещё влезают.

Вызов 1: правила кассы + расписание на сегодня + «есть ли рейс в 22:10 на Псков?»

Вызов 2: те же правила + то же расписание + «а на Новгород в 21:00?»

Общее начало на втором вызове может пойти чтением кэша. Новый вопрос кэша не имеет.

Эта страница не про окно, не про роли, не про «больше контекста», не про цену всего вечера.

Как это устроено

Кэш промпта (prompt cache): API может взять точный префикс с недавнего вызова.

Два вызова подряд.

Префикс (prefix) с самого начала, от нулевого токена до точки разрыва (breakpoint): на втором вызове, если совпал точно и время жизни (TTL) ещё живо, это чтение кэша (cache-read / cached-input / cache-hit). Не $0. У Anthropic чтение кэша: 10% базового входа [1][2], чтение 21.08.2026. У OpenAI: ставка cached-input [3], чтение 21.08.2026. У Gemini explicit: сниженная ставка за использование плюс хранение по TTL [4][5], Last updated 17.08.2026 UTC.

Хвост (tail) после последнего одинакового префикса: новый вопрос, timestamp, всё за breakpoint. Это без кэша / промах (miss) / запись (write).

Первый вызов всё равно платит запись / промах / обычный вход. Gemini explicit платит ещё и хранение [4][5]. TTL должен быть жив. У Anthropic TTL по умолчанию 5 минут, обновление при использовании без доплаты [1], чтение 21.08.2026.

Совпадение точное с самого начала. У Anthropic хеш накопительный до breakpoint включительно: смена любого блока на breakpoint или до него даёт другой хеш и промах [1], чтение 21.08.2026. cache_control ставят на последний блок статичного префикса, не на меняющийся хвост (timestamp, входящее сообщение) [1]. Частая ошибка: breakpoint на timestamp, попадания нет, каждый раз платишь новую запись [1].

У OpenAI смена до breakpoint меняет префикс и срывает cache hit [3]. Сначала статичное, переменное в конце [3], чтение 21.08.2026.

У DeepSeek: A+B, потом A+B+C попадает в A+B [6]. A+B, потом A+C: промах, A+C не совпадает с A+B целиком [6], чтение 21.08.2026. Префикс с нулевого токена. Совпадение в середине не даёт hit [7], 02.08.2024.

нельзя: менять начало префикса, если ждёшь кэш.

Как это садится на твою работу

Репозиторий не открываем.

Та же касса. Два вызова.

Префикс: правила кассы + расписание на сегодня.

Сдвинулось: новый вопрос про город и время.

Проверка на провал. Если между вызовами в самое начало правил вставить строку, кэш первого вызова не попадает. Второй вызов идёт как новая запись / промах.

Кто так уже делает

Anthropic, Messages API. Тот же префикс tools → system → messages. Чтение 0.1×, запись на 5 минут 1.25×, на 1 час 2×, TTL по умолчанию 5 минут [1], чтение 21.08.2026. Минимум токенов на той же странице разный: Sonnet 5 = 1024, Haiku 4.5 = 4096, Opus 5 = 512 [1]. Их прайс, на Gemini и DeepSeek не переносить.

OpenAI. Hit только при точном совпадении префикса. Смена до breakpoint срывает hit [3]. На GPT-5.6 без явной точки breakpoint садится на последний user/tool: в кэш может уехать меняющийся хвост [3]. Запись 1.25× это полный тариф записанных токенов, не сверху ещё одного полного входа; cached input 0.1×; TTL только 30 минут; 1024 строго [3], чтение 21.08.2026. На более старых моделях отдельной платы за запись нет [3].

Gemini. Implicit: похожий префикс, большой общий кусок в начале; гарантии экономии нет [4]. Explicit: положил один раз, потом ссылаешься; TTL по умолчанию 1 час; хранение считают по тому, сколько токены лежат [4][5], Last updated 17.08.2026 UTC. Gemini 3.7 Flash, Standard, paid, Last updated 13.08.2026 UTC: вход $0.75/1M до 31.12.2026; context caching $0.075; хранение $0.50/1M токенов в час [5].

DeepSeek. Кэш на диске, префикс с нулевого токена. Единица 64 токена, новость 02.08.2024 [7]. A+C после A+B не попадает [6]. Цену $0.014 с той новости как сегодняшнюю не брать.

Неочевидные решения

Меняющийся вопрос клади после статичного префикса. Цена: breakpoint надо спланировать. Если timestamp стоит в начале, каждый раз платишь запись [1][3].

Hit не $0. Цена: всё равно платишь чтение кэша [2]. У Gemini explicit хранение считают по TTL, ставка $/1M токенов в час [4][5].

Не держи правило «не меняй ни одного токена». Цена: хвост можно менять. Начало префикса нельзя, если ждёшь hit.

Практика, 15 минут

Сцена. Один вечер кассы автовокзала «Северный». Два вызова подряд. Оба ещё влезают.

Вызов 1. В начале лежат правила кассы и расписание на сегодня. Вопрос: «есть ли рейс в 22:10 на Псков?»

Вызов 2. Те же правила и то же расписание в том же начале. Вопрос другой: «а на Новгород в 21:00?»

Выпиши два вызова. Потом префикс и сдвиг.

вызов 1: …
вызов 2: …
общий префикс (второй раз не платишь): …
сдвинулось (платишь снова): …
нельзя: менять начало префикса, если ждёшь кэш

Сверка (не единственный правильный текст, но такой проходит):

вызов 1: правила кассы + расписание на сегодня + «есть ли рейс 22:10 на Псков»
вызов 2: те же правила + то же расписание + «а на Новгород в 21:00»
общий префикс: правила кассы и расписание на сегодня
сдвинулось: новый вопрос про Новгород
нельзя: менять начало префикса, если ждёшь кэш

Сдал, если два вызова подряд, префикс назван куском в начале, сдвиг назван тем, что изменилось после него, и есть точная строка нельзя.

Не сдан, если написал «вылетит первым», три вычерка «даже если место есть», разобрал роли, или посчитал вечер в деньгах.

нельзя: открывать и менять репозиторий.

Три вопроса

  1. Между первым и вторым вызовом в самое начало правил вставили строку «не продавать без паспорта». Расписание то же. Вопрос новый. За что платишь второй раз?
  2. Правила и расписание в начале не трогали. Поменяли только последний вопрос. Что второй раз не оплачивается?
  3. После расписания, перед новым вопросом, дописали объявление «рейс 18:40 задержан». Начало правил и расписание на месте. Что сдвинулось?
Ответы
  1. За весь вызов. Начало префикса сдвинулось. Кэш с первого вызова не попал.
  2. Общий префикс: правила кассы и расписание на сегодня.
  3. Объявление про задержку и новый вопрос. За них платишь снова. Начало префикса не трогали. Его второй раз не оплачиваешь.

Источники

[1] Anthropic. Prompt caching. Даты на странице нет. Чтение 21.08.2026. https://platform.claude.com/docs/en/build-with-claude/prompt-caching
Что взяли: хеш накопительный до breakpoint; cache_control на последний статичный блок; exact 100%; TTL 5 минут, обновление без доплаты; запись 1.25× / 2×; чтение 0.1×; ошибка с timestamp.

[2] Anthropic. Pricing. Даты на странице нет. Чтение 21.08.2026. https://platform.claude.com/docs/en/about-claude/pricing
Что взяли: hit = 10% стандартного входа, не $0.

[3] OpenAI. Prompt caching. Даты на странице нет. Чтение 21.08.2026. https://developers.openai.com/api/docs/guides/prompt-caching
Что взяли: точный префикс; смена до breakpoint срывает hit; ставка cached-input; на GPT-5.6+ запись 1.25× это полный тариф; TTL 30 минут.

[4] Google. Context caching, generateContent. Last updated 2026-08-17 UTC. https://ai.google.dev/gemini-api/docs/generate-content/caching
Что взяли: implicit и explicit; префикс; TTL по умолчанию 1 час; хранение и использование.

[5] Google. Gemini Developer API pricing. Last updated 2026-08-13 UTC. https://ai.google.dev/gemini-api/docs/pricing
Что взяли: числа 3.7 Flash; второй вызов не $0; хранение $/MTok/hour.

[6] DeepSeek. Context Caching. Даты на странице нет. Чтение 21.08.2026. https://api-docs.deepseek.com/guides/kv_cache
Что взяли: A+B потом A+C = промах; единица префикса; поля hit.

[7] DeepSeek. Context Caching is Available. 02.08.2024. https://api-docs.deepseek.com/news/news0802
Что взяли: одинаковые префиксы с нулевого токена; единица 64 токена; цены на той странице протухли.

Официальной страницы, где cache hit равен $0, нет. Первичного «никогда не меняй ни одного токена» нет. Дыра полки, не выдуманный источник.

Кто собрал

AI Ultra