Урок 11Оптимизация

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: как работает кэширование

Интерактив: 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 документов отправляем полный запрос: [Системный промпт: 3000 токенов] [20 few-shot примеров: 5000 токенов] [Документ: 500 токенов] Каждый запрос = 8500 input tokens. 10 запросов = 85,000 tokens. Стоимость: 85,000 * $3/1M = $0.255
Ответ

10 полных запросов по 8500 токенов. Общая стоимость: $0.255. Каждый запрос обрабатывается с нуля, включая одинаковые 8000 токенов системного промпта и примеров.

Токены:85000/2000
Время:12000ms
Качество:
С production-prompt-caching
С техникой
Промпт
Структура с кэшированием: [Системный промпт: 3000 токенов | cache_control: ephemeral] [20 few-shot примеров: 5000 токенов | cache_control: ephemeral] [Документ: 500 токенов] Запрос 1 (cache write): 8000 * 1.25 + 500 = $0.030 + $0.0015 Запросы 2-10 (cache hit): 8000 * 0.1 + 500 = 9 * ($0.0024 + $0.0015) Итого: $0.0315 + 9 * $0.0039 = $0.0666
Ответ

1 cache write + 9 cache hits. Стоимость кэшированного префикса (8000 токенов): запись 0.030,9чтенийпо0.030, 9 чтений по 0.0024. Не-кэшированные токены (500/запрос): 10 * 0.0015=0.0015 = 0.015. Итого: 0.0666вместо0.0666 вместо 0.255 — экономия 74%.

👁️Системный промпт (3K) и примеры (5K) идентичны для всех 10 документов — идеальный кандидат для кэша
🧠Размещаем стабильный контент (8K) первым, документ (500 токенов) — последним
🔢Запись кэша стоит 1.25x = $0.030. Каждый cache hit — 0.1x = $0.0024. После 2-го запроса уже в плюсе.
Экономия 74% + снижение TTFT на ~70%. Одно изменение в структуре API-запроса.
Токены:85000/2000
Время:3500ms
Качество:
Почему это работает

При пакетной обработке документов с одинаковым промптом prompt caching экономит 70-90% стоимости входных токенов — нужно лишь добавить cache_control к стабильной части и убедиться, что она идёт первой.

1 / 2

Квиз по уроку

1 из 4

1.Какую часть промпта можно кэшировать с помощью prompt caching?

Практика

Создайте бесплатный аккаунт для решения челленджей

3 челленджей с AI-проверкой для этого урока

Связанные уроки:Cost OptimizationApi PatternsRag

Этот урок — часть структурированного курса по LLM.

Мой путь обучения