Бот стоматологии в Шымкенте записывает на приём. В его инструкции – прайс на сто с лишним услуг, расписание врачей, ответы на частые вопросы и описания функций для записи в CRM. Около 20 000 токенов, которые уходят в модель с каждым сообщением клиента. В октябре бота перевели на модель GPT-6, и в отчёте OpenAI появилась новая строка – запись в кэш. Небольшая, но она растёт быстрее, чем число диалогов.
Причина простая. Клиенты пишут волнами: утром трое подряд, потом тишина час, вечером ещё пятеро. Кэш промптов OpenAI живёт минимум полчаса. После каждой паузы инструкцию приходится записывать заново – и каждая запись стоит на четверть дороже, чем обычный вход.
20 октября OpenAI добавила в Responses API 12-часовой кэш. Для такого бота это способ платить за запись один раз в день, а не пятнадцать. Но только если промпт собран правильно, иначе кэш делает счёт выше, чем было бы без него.
Главное за минуту
Запись в кэш платная
На GPT-5.6 и новее запись на 30 минут стоит 1,25 цены входа, на 12 часов – 2,5.
Чтение почти бесплатное
Повтор из кэша – 0,1 цены входа, у GPT-6.1 Sol – 0,05. Срок жизни на цену чтения не влияет.
Порог окупаемости – две паузы
12 часов выгоднее, если за это время кэш на полчаса пришлось бы записывать больше двух раз.
Плохой промпт – плюс 25%
Если начало запроса каждый раз разное, бот платит за запись, которая никогда не пригодится.
Что изменилось в кэше промптов OpenAI
Раньше кэш был бонусом: повторяющееся начало запроса просто стоило дешевле, а за его сохранение никто ничего не брал. На моделях GPT-5.6 и новее, в том числе GPT-6 Luna, Sol и Astra, схема другая. Кэш включён по умолчанию, каждая запись в него оплачивается отдельно и дороже обычного входа, зато чтение стоит копейки. Кэш не общий: у каждой организации в OpenAI он свой.
Срок жизни задаётся параметром prompt_cache_options.ttl: "30m" по умолчанию или "12h". Его можно указать и для отдельной точки кэша – тогда, например, инструкция живёт 12 часов, а остальное полчаса. Слова «минимум» в документации стоят не просто так: OpenAI может хранить запись дольше, но не обещает этого. Каждое чтение из получасового кэша продлевает его ещё на 30 минут, а вот 12-часовые часы чтение не перезапускает – через 12 часов будет новая запись.
Цены за миллион токенов на стандартном тарифе для запросов до 272 тысяч токенов:
| Модель | Вход | Чтение из кэша | Запись на 30 минут | Запись на 12 часов |
|---|---|---|---|---|
| GPT-6 Luna | $0,10 | $0,01 | $0,125 | $0,25 |
| GPT-6 Sol | $2 | $0,20 | $2,50 | $5 |
| GPT-6.1 Sol | $2 | $0,10 | $2,50 | $5 |
Важная деталь: запись – это не надбавка к обычному входу, а его замена. Токен, который записали в кэш, оплачивается по цене записи один раз, а не дважды. Кэшируется всё начало запроса целиком, включая описания функций. И есть порог: запросы короче 1024 токенов в кэш не попадают вовсе, так что бот с инструкцией на полстраницы ничего не выиграет и ничего не потеряет.
Когда 12 часов выгоднее получаса
Одна запись на 12 часов стоит ровно как две записи на полчаса. Отсюда правило, которое легко проверить по логам: если за 12 часов у бота бывает больше двух пауз длиннее получаса, 12-часовой кэш дешевле. Если сообщения идут потоком весь день – получасового достаточно, он сам продлевается каждым чтением.
Посчитаем на боте стоматологии. Условия придуманы, но типичны для небольшого бизнеса: постоянная часть запроса – 20 000 токенов, 60 сообщений в день, из них 15 приходят после паузы длиннее получаса, рабочий день укладывается в 12 часов. Считаем только постоянную часть за 30 дней – история диалога и ответы бота во всех вариантах одинаковы. Курс – 450,69 тенге, официальный курс Нацбанка на 21 октября.
| Вариант | GPT-6 Luna | GPT-6.1 Sol |
|---|---|---|
| Без кэша, всё по цене входа | $3,60 – около 1 600 тенге | $72 – около 32 450 тенге |
| Кэш на 30 минут: 15 записей в день | $1,40 – около 630 тенге | $25,20 – около 11 360 тенге |
| Кэш на 12 часов: одна запись в день | $0,50 – около 230 тенге | $6,54 – около 2 950 тенге |
| Начало запроса меняется каждый раз | $4,50 – около 2 030 тенге | $90 – около 40 560 тенге |
На Luna разница смешная – несколько сотен тенге в месяц. Здесь мы бы не тратили время подрядчика на настройку. На Sol картина другая: 12-часовой кэш срезает счёт за постоянную часть почти вчетверо по сравнению с получасовым. А если в промпт загружен каталог на 100 000 токенов, а не на 20 000, все цифры умножаются на пять.
Бот, который работает круглосуточно, запишет 12-часовой кэш дважды в сутки. Это всё равно дешевле, чем полтора десятка получасовых записей после ночных и обеденных пауз.
Как кэш делает бота дороже
Последняя строка таблицы – не выдумка, а частая ошибка. Кэш работает только тогда, когда начало запроса совпадает до последнего символа. Любое изменение до точки кэша – и всё, что после неё, приходится записывать заново.
Что обычно ломает совпадение:
- текущие дата и время в первой строке инструкции – «Сегодня 21 октября, 14:35»;
- имя клиента, номер телефона или карточка из CRM, вставленные в начало;
- остатки и цены, которые подтягиваются из учётной системы прямо в текст инструкции;
- описания функций, которые меняются по порядку или по составу от запроса к запросу.
Раньше такая ошибка стоила только упущенной экономии. Теперь бот на каждом сообщении платит 1,25 цены входа за запись, которую никто не прочитает. На Luna это лишние 400 тенге в месяц, на Sol – около восьми тысяч, и это при скромном трафике.
Как собрать промпт, чтобы кэш работал
Порядок важнее любых настроек. Сначала всё, что одинаково для всех клиентов: инструкция, тон, прайс, правила записи, описания функций. Потом – всё, что меняется: дата, данные клиента из CRM, история переписки, последнее сообщение. После постоянной части ставится явная точка кэша – prompt_cache_breakpoint. Тогда изменения ниже неё не мешают переиспользовать инструкцию.
Одна неочевидная вещь: точку кэша нельзя поставить в верхнеуровневое поле instructions. Постоянную часть придётся перенести в отдельное сообщение разработчика, в блок input_text. Для подрядчика это полчаса работы, но про это стоит сказать заранее.
Для разовых задач в CRM логика другая. Классификация входящих заявок, разбор писем в поля карточки, итоги звонков – здесь после общей инструкции идёт уникальный текст, который больше никогда не повторится. По умолчанию OpenAI ставит точку кэша в конце последнего сообщения, и этот уникальный хвост тоже может уйти в запись. Документация прямо советует для таких случаев явный режим – "mode": "explicit": кэшируется только то, что вы отметили, то есть инструкция.
Если бот после перехода с GPT-4o остался на Chat Completions – а мы сами советовали так сделать ради сроков в статье «Отключение GPT-4o и GPT-4.1: как перевести бота и CRM на GPT-6 Luna», – учтите: 12-часовой кэш и явные точки OpenAI описывает только для Responses API. Для бота на Luna с его ценами это не повод срочно переезжать. Для бота на Sol с большим каталогом – уже аргумент.
Проверять результат лучше по цифрам, а не на глаз. В ответе API есть поля cached_tokens – сколько прочитано из кэша – и cache_write_tokens с разбивкой на ttl_30m_tokens и ttl_12h_tokens. Пишите их в лог вместе с идентификатором диалога и раз в неделю смотрите долю чтений. Если записей больше, чем чтений, промпт собран неправильно. Другие способы снизить счёт – маршрутизацию между моделями, лимиты, запасную модель – мы разбирали в материале «Как снижать стоимость AI-бота: токены, кэш, model routing, fallback и лимиты».
Кэш и персональные данные клиентов
Кэш – это сохранённое у OpenAI состояние вашего запроса. Документация оговаривает: параметр "12h" не задаёт срок удаления и не меняет политику хранения данных организации. Поэтому правило, которое и так экономит деньги, здесь работает второй раз: телефон, ИИН, адрес и история заказов клиента не должны попадать в общую постоянную часть. Им место в конце запроса, после точки кэша.
Если вы агентство или сервис и один ключ OpenAI обслуживает несколько компаний, задайте каждой свой prompt_cache_key. OpenAI называет две причины: раздельный учёт кэша и защита от попыток одного клиента угадать, что лежит в кэше у другого. Какие данные клиентов вообще можно передавать в модель и как их маскировать, мы описывали в статье «Новые правила сбора персональных данных: лиды, маскирование, ИИ».
Посчитаем кэш по вашим логам
Пришлите выгрузку использования OpenAI за неделю – покажем долю записей и чтений и скажем, нужен ли вам 12-часовой кэш.
Чего не ждать
- Гарантированного попадания в кэш. Минимальный срок жизни не обещает, что запрос попадёт на ту же машину: при потоке больше 15 запросов в минуту на один и тот же промпт OpenAI может раскидывать их по разным машинам, и часть придётся записать заново.
- Бесплатного перехода с получаса на 12 часов на ходу. Если поменять срок для уже закэшированной инструкции, OpenAI возьмёт плату за новую 12-часовую запись без зачёта прежней.
- Ручной очистки. Обновили прайс – старая версия просто перестанет совпадать, удалить её из кэша нельзя.
- Поблажек по лимитам. Токены из кэша считаются в лимит токенов в минуту так же, как обычные.
Для сравнения: у Anthropic кэш устроен похоже, только сроки короче – 5 минут по умолчанию и час по запросу, запись стоит 1,25 и 2 цены входа. Если бот работает на Claude, правило двух пауз считается так же, только паузой там будет всё, что дольше пяти минут или часа.
Что проверить на этой неделе
Начать стоит с логов, а не с кода: может оказаться, что ваш бот слишком мал, чтобы кэш что-то менял.
- Узнать, на какой модели работает бот и через какой API – Responses или Chat Completions.
- Выгрузить использование за неделю и сравнить
cache_write_tokensсcached_tokens. - Открыть начало промпта: нет ли там даты, имени клиента, остатков или карточки из CRM.
- Посчитать паузы длиннее получаса за рабочий день. Больше двух – пробовать
"12h"для постоянной части. - Для классификации и разбора заявок включить явный режим с точкой кэша после инструкции.
- Если ключ обслуживает несколько компаний – развести их по
prompt_cache_key.
Через неделю после изменений снова сравните записи и чтения. Если доля чтений выросла, а строка «запись в кэш» в отчёте стала короче, настройка сработала.
Связанные материалы
Пересоберём промпт бота под кэш за два дня
Пришлите текущую инструкцию и выгрузку использования OpenAI – вынесем данные клиентов в конец, расставим точки кэша, выберем срок жизни и покажем расчёт до и после в тенге.