Prompt Caching
Кэшируйте статические префиксы промптов для экономии и ускорения
Проблема: У вас продакшн-приложение с 10 000 API-запросов в день. Каждый включает тот же системный промпт на 4 000 токенов. Это 40 миллионов токенов в день только на статику — сотни долларов в месяц за контент, который модель уже "прочитала" тысячи раз.
Решение: Prompt Caching — Запомни, не повторяй
Prompt caching — это функция на уровне API, которая сохраняет обработанный префикс промпта между запросами, чтобы модели не приходилось заново обрабатывать одни и те же токены каждый раз. Кэшируется только начало — никогда не середина и не конец. Anthropic даёт скидку 90% на кэшированные входные токены и единоразовую наценку 25% на тот запрос, который записывает кэш. OpenAI кэширует автоматически для промптов свыше 1024 токенов со скидкой 50%. У кэша есть TTL (time-to-live, время жизни) около 5 минут по умолчанию, и этот таймер сбрасывается при каждом попадании в кэш (cache hit) — поэтому активно используемый префикс остаётся «тёплым».
Как это работает под капотом
Когда трансформер обрабатывает твой промпт, он вычисляет промежуточные состояния внимания (attention) для каждого токена — это и есть KV-кэш (key-value cache). Обычно эти состояния выбрасываются после каждого запроса. Prompt caching хранит состояния для неизменного префикса в памяти, поэтому повторный запрос пропускает дорогую стадию «prefill» по этим токенам и продолжает с того места, где начинается новый контент. Именно поэтому сокращаются и стоимость, и задержка (latency) — модель выполняет строго меньше вычислений. Ключевое ограничение: кэшируемая часть должна быть побайтово идентичной и стоять в самом начале. Поменяй хоть один символ ближе к началу — дату, имя пользователя, переставленный пример — и префикс перестанет совпадать, кэш промахнётся, и ты заплатишь полную цену.
Когда применять (и разобранный пример)
Используй кэширование, когда каждый запрос начинается с большого стабильного блока: длинного системного промпта, набора few-shot примеров или справочных документов в RAG-пайплайне. Допустим, бот поддержки добавляет в начало системный промпт на 3000 токенов плюс 50 примеров тикетов, а в конец — только новое сообщение пользователя. Первый вызов — это запись кэша (за префикс платишь ~1.25x). Каждый вызов в следующие 5 минут переиспользует этот префикс за 10% цены, а короткий суффикс пользователя тарифицируется как обычно. На тысячах запросов в день экономия преобладает. Главная ошибка — структурная: всё статичное в начало, всё динамическое в конец. Если запрос пользователя или метка времени попадут в начало промпта, кэш никогда не сработает — а наценку за запись ты уже заплатил впустую.
Представьте это как библиотекаря, который запоминает часто запрашиваемые книги и кладёт их на ближнюю полку — первый запрос идёт в хранилище (cache miss), но повторные обслуживаются мгновенно (cache hit):
- 1. Найдите кэшируемый префикс: Найдите стабильную часть: системные инструкции, few-shot примеры, документы. Должна быть идентичной между запросами и располагаться в начале
- 2. Установите точки кэширования: Anthropic: добавьте cache_control маркеры. OpenAI: автоматически для промптов >1024 токенов — просто структурируйте промпт правильно
- 3. Первый запрос (запись кэша): Первый запрос обрабатывает полный промпт и записывает в кэш. Anthropic берёт наценку 25% за запись — это инвестиция
- 4. Последующие запросы (cache hits): Каждый следующий запрос с тем же префиксом: снижение стоимости на 90% и до 85% меньше time-to-first-token. Каждое попадание сбрасывает TTL на 5 минут
Где применять Prompt Caching
- RAG со стабильным системным промптом: Кэшируйте системные инструкции + правила retrieval. Только запрос пользователя и чанки меняются. Идеально для Q&A-систем с большим объёмом
- Few-shot классификация: Кэшируйте 50-100 примеров классификации в префиксе. Каждый новый вход добавляется в конец. Идеально для маршрутизации тикетов или модерации контента
- Пакетная обработка: Обрабатывайте тысячи документов с одним промптом. Кэшируйте инструкции один раз, меняйте только документ. Огромная экономия при масштабе
- Частая ошибка: Размещение динамического контента перед статическим. Если запрос пользователя идёт перед системным промптом, каждый запрос имеет другой префикс и кэш не срабатывает. Всегда: [стабильный префикс] + [динамический суффикс]
Интересный факт: Системный промпт 4 000 токенов по $3/1М входных токенов, 10 000 запросов/день. Без кэша: $120/день ($3 600/мес). С кэшированием Anthropic (95% hit rate): ~$12/день ($360/мес). Снижение на 90% — экономия $3 240/мес от одного изменения в API.
Попробуйте сами!
Исследуйте интерактивную визуализацию ниже, чтобы увидеть, как кэширование влияет на стоимость, задержку и использование токенов в реальных сценариях.
Интерактив: Prompt Caching Explorer
Запрос
Система + User
Проверка кэша
Частые вопросы
Что такое prompt caching в API LLM?
Prompt caching -- это функция на уровне API, которая сохраняет обработанный префикс промпта (системный промпт, few-shot примеры, большой контекст), чтобы повторные запросы переиспользовали его. Anthropic даёт скидку 90% на кэшированные токены; OpenAI -- 50% с автоматическим кэшированием.
Чем prompt caching отличается от KV-cache?
KV-cache -- это внутренний механизм модели для кэширования вычислений attention в рамках одной генерации. Prompt caching -- это функция API, которая сохраняется между отдельными запросами, кэшируя префикс промпта на несколько минут (обычно TTL 5 минут).
Когда стоит использовать prompt caching?
Используйте prompt caching, когда отправляете один и тот же длинный префикс (системный промпт, few-shot примеры или документы контекста) в множестве API-запросов. Окупается уже после 2 попаданий в кэш для Anthropic (несмотря на наценку 25% за запись) и сразу для OpenAI (без наценки за запись).
Попробуй сам
Интерактивное демо этой техники
Обработать 10 документов одним и тем же промптом анализа и оценить затраты
10 полных запросов по 8500 токенов. Общая стоимость: $0.255. Каждый запрос обрабатывается с нуля, включая одинаковые 8000 токенов системного промпта и примеров.
1 cache write + 9 cache hits. Стоимость кэшированного префикса (8000 токенов): запись 0.0024. Не-кэшированные токены (500/запрос): 10 * 0.015. Итого: 0.255 — экономия 74%.
При пакетной обработке документов с одинаковым промптом prompt caching экономит 70-90% стоимости входных токенов — нужно лишь добавить cache_control к стабильной части и убедиться, что она идёт первой.
Создайте бесплатный аккаунт для решения челленджей
3 челленджей с AI-проверкой для этого урока
Этот урок — часть структурированного курса по LLM.
Мой путь обучения