Замер Prompt Cache: тот же объём вызовов, счёт ниже на 62%
Мы замерили частоту попаданий prompt cache и влияние на стоимость на реальных нагрузках, с полными данными.
Предыстория
Anthropic и OpenAI во второй половине 2024 года выкатили prompt cache: первый запрос тарифицируется по цене записи в кэш (обычно 1,25x цены ввода), а последующие попадания — по цене чтения (обычно 10% цены ввода).
В теории экономия большая. Но между теорией и практикой стоит «частота попаданий в кэш». Мы провели месячный замер на собственном агенте поддержки ZetaAPI и codegen-пайплайне.
Сценарии теста
- Сценарий A: агент поддержки — фиксированный системный промпт (~3 200 токенов), меняющиеся вопросы пользователя, накапливающийся диалог. ~18k вызовов/день.
- Сценарий B: codegen-пайплайн — префикс контекста проекта (~12k токенов), обновляемый при изменениях репозитория; последовательные вызовы по одному репозиторию переиспользуют префикс. ~4k вызовов/день.
Оба сценария помечают системный промпт cache_control: { type: 'ephemeral' }.
Результаты
| Сценарий | Частота попаданий | Исходная стоимость ввода | С кэшем | Экономия |
|---|---|---|---|---|
| Агент поддержки | 88% | $300/день | $103/день | 66% |
| Codegen-пайплайн | 71% | $643/день | $279/день | 57% |
| Совокупно | 82% | $943/день | $382/день | 59,5% |
С учётом сверки в начале месяца общая месячная экономия составила 62%.
У каких запросов высокая частота попаданий?
По данным, факторы, определяющие частоту попаданий, по весу:
- Стабильность префикса — если системный промпт долго неизменен, частота сразу 80%+
- Плотность вызовов — у ephemeral-кэша Anthropic TTL 5 минут; чем плотнее вызовы, тем вероятнее они попадают в одно TTL-окно
- Длина префикса — префикс короче 1 024 токенов даже не достигает порога кэша
Контринтуитивная находка
Сначала мы думали, что у codegen частота будет выше, чем у поддержки — контекст проекта «стабильнее». Но на практике codegen рвёт кэш при каждом коммите, и реальная частота попаданий оказалась на 17 процентных пунктов ниже.
Кэш — это оптимизация по оси времени, а не по оси смысла. Измените в промпте один токен — и это совершенно новый промпт, никак не связанный с предыдущим.
Советы интеграторам
- Делайте системный промпт неизменным шаблоном, а динамику выносите в сообщения пользователя
- Пакетные задачи лучше отправлять вместе — не разбивайте на волны через TTL
- Ставьте тег
ephemeralв конце самого длинного неизменного префикса, а не в конце всего системного промпта
Мы добавим в консоль статистику частоты попаданий по каждому API-ключу, чтобы интеграторы сами видели, включён ли кэш.