Руководство по кэшированию промптов: стратегии оптимизации затрат OpenAI, Anthropic и DashScope
Кросс-провайдерное руководство по prompt caching — автоматическое кэширование OpenAI (скидка до 90%), явный cache_control Anthropic (90% на чтение) и context cache DashScope (90% при попадании) — с примерами кода, моделированием затрат и стратегиями маршрутизации.
Руководство по кэшированию промптов: стратегии оптимизации затрат OpenAI, Anthropic и DashScope
Prompt caching позволяет повторно использовать ранее обработанные входные токены, чтобы провайдер пропускал избыточные вычисления по повторяющимся префиксам. Результат — меньшая задержка и более дешёвые входные токены: до 90% экономии у некоторых провайдеров. Все основные LLM API теперь поддерживают ту или иную форму prompt caching, но механизмы, ценовые множители, TTL и минимальные пороги токенов различаются настолько, что выбор неправильной стратегии может стоить дороже, чем полный отказ от кэширования.
Мы написали это руководство, потому что ежедневно маршрутизируем запросы через OpenAI, Anthropic и Alibaba Cloud Model Studio (DashScope), и экономика кэширования напрямую влияет на то, какая комбинация провайдер-модель обеспечивает лучшую стоимость за успешный запрос. Это кросс-провайдерный справочник по кэшированию, который был нужен нам, когда мы впервые начали оптимизировать стоимость входных токенов в конфигурации маршрутизации.
Источники: Документация OpenAI Prompt Caching, получено 2026-06-17; Документация Anthropic Prompt Caching, получено 2026-06-17; Документация DashScope Context Cache, получено 2026-06-17.
Как работает prompt caching за 30 секунд
Когда вы отправляете промпт в LLM API, модель токенизирует и обрабатывает каждый входной токен. Если большая часть промпта — системная инструкция, репозиторий кода, документ — идентична в нескольких запросах, провайдер может кэшировать промежуточные вычисления (key/value-тензоры слоёв внимания) и повторно их использовать. Последующие запросы с тем же префиксом пропускают эти вычисления, снижая как задержку, так и эффективную стоимость токенов.
Ключевой момент: кэширование работает по префиксу. Кэшируется только начало промпта. Если переменная часть (например, вопрос пользователя) стоит перед статической частью (например, системным промптом), кэширование не сработает. Размещайте статический контент в начале, динамический — в конце.
OpenAI-совместимость означает, что провайдер предоставляет endpoint chat-completions, чей контракт запроса и ответа достаточно близок к API OpenAI, чтобы немодифицированный вызов OpenAI SDK работал после замены трёх значений: API key, base URL, название модели. Минимальная поверхность на практике —POST /v1/chat/completions с messages, model и потоковым ответом в форме OpenAI.
OpenAI: автоматическое кэширование с расширенным хранением
Prompt cache OpenAI полностью автоматический — изменения кода не требуются. Любой промпт от 1 024 токенов подходит для кэширования. Система маршрутизирует запросы на серверы, недавно обработавшие тот же префикс, и совпадающие префиксы обслуживаются из кэша.
Ключевые параметры:
- Минимум токенов: 1 024
- Механизм: Автоматическое сопоставление префиксов, маршрутизация на основе хэша
- Политики хранения:
- In-memory: 5–10 минут бездействия, максимум 1 час. Доступно для GPT-4.1 и новее.
- Расширенное (24 часа): До 24 часов. Доступно для GPT-4.1, GPT-5, серии GPT-5.1, GPT-5.2, GPT-5.4, GPT-5.5. По умолчанию для организаций без ZDR на поддерживаемых моделях.
- Скидка: Кэшированные входные токены тарифицируются по кэш-ставке. GPT-5.5: $0.50/MTok кэш vs $5.00/MTok стандартный вход (скидка 90%). GPT-5.4: $0.25/MTok кэш vs $2.50/MTok стандартный (скидка 90%).
- Параметр
prompt_cache_key: Позволяет комбинировать пользовательский ключ с хэшем префикса для повышения частоты попаданий. Удерживайте каждую уникальную комбинацию ниже ~15 RPM, чтобы избежать переполнения кэша.
Источник: Документация OpenAI Prompt Caching, получено 2026-06-17; Цены OpenAI API, получено 2026-06-17.
Пример кода: автоматическое кэширование OpenAI
from openai import OpenAI
client = OpenAI() # использует переменную окружения OPENAI_API_KEY
# Статический системный промпт — размещаем первым для попадания в кэш
SYSTEM_PROMPT = """Вы эксперт по ревью кода. Проанализируйте следующий
репозиторий на предмет уязвимостей безопасности, проблем производительности
и нарушений стиля кода. Содержимое репозитория:
{repository_contents}
""" # С реальным содержимым репозитория будет >1024 токенов
response = client.chat.completions.create(
model="gpt-5.4",
prompt_cache_retention="24h", # запрос расширенного хранения
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": "Сосредоточьтесь на модуле аутентификации."},
],
)
# Проверка производительности кэша
usage = response.usage
cached = usage.prompt_tokens_details.cached_tokens
total_input = usage.prompt_tokens
print(f"Кэшировано: {cached}/{total_input} токенов ({cached/total_input*100:.0f}%)")
Специальная разметка не нужна. При втором запросе с тем же префиксом системного промпта cached_tokens будет ненулевым.
Anthropic: явный cache_control с двумя уровнями TTL
Anthropic предлагает управляемое разработчиком кэширование через поле cache_control. Можно выбрать между автоматическим кэшированием (система сама выбирает точку разрыва) и явными брейкпоинтами (вы отмечаете, какие блоки контента кэшировать). Создание кэша стоит денег, но чтение сильно дешевле.
Ключевые параметры:
- Минимум токенов: 1 024 (для блоков инструментов/сообщений)
- Механизм: Явные аннотации
cache_controlна блоках контента или автоматический режим на верхнем уровне - Варианты TTL:
- 5 минут (ephemeral): По умолчанию. Каждое попадание в кэш сбрасывает 5-минутный таймер. Стоимость записи в кэш — 1.25× базовой цены входных токенов.
- 1 час: Опциональный. Стоимость записи — 2× базовой цены. Доступен для моделей Claude на Anthropic API и Amazon Bedrock.
- Стоимость чтения кэша: 10% от базовой цены входных токенов (скидка 90%). Claude Opus 4.8: $0.50/MTok чтение vs $5.00/MTok стандартный.
- Максимум брейкпоинтов: До 4 маркеров
cache_controlна запрос.
Источник: Документация Anthropic Prompt Caching, получено 2026-06-17; Цены Anthropic, получено 2026-06-17.
Пример кода: явное кэширование Anthropic
import anthropic
client = anthropic.Anthropic()
# Автоматическое кэширование — система ставит breakpoint на последний кэшируемый блок
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
cache_control={"type": "ephemeral"}, # верхний уровень: авто-режим
system="Вы эксперт по ревью кода. Проанализируйте следующий репозиторий "
"на предмет уязвимостей, проблем производительности и стиля кода. "
"[большое содержимое репозитория]",
messages=[
{"role": "user", "content": "Сосредоточьтесь на модуле аутентификации."},
],
)
print(response.usage)
# Выведет: cache_creation_input_tokens, cache_read_input_tokens, input_tokens
Для тонкого контроля размещайте cache_control на отдельных блоках контента:
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system=[
{
"type": "text",
"text": "[большой статический контент — репозиторий, документы и т.д.]",
"cache_control": {"type": "ephemeral"}, # явный breakpoint
}
],
messages=[
{"role": "user", "content": "Какие проблемы безопасности существуют?"},
],
)
Когда кэширование Anthropic обходится дороже
Запись в кэш не бесплатна. При 5-минутном TTL вы платите 1.25× базовой ставки при создании кэша. Если запросы не повторяются в течение 5 минут, вы платите надбавку за запись без получения скидки на чтение. Точка безубыточности: если менее ~15% запросов попадают в кэш, вы платите больше, чем без кэширования. Отслеживайте cache_creation_input_tokens vs cache_read_input_tokens для проверки экономии.
DashScope: явное и неявное кэширование контекста
Alibaba Cloud Model Studio (DashScope) предлагает два режима кэширования. Оба работают через OpenAI-совместимый API:
Явное кэширование:
- Минимум токенов: 1 024
- TTL: 5 минут (сбрасывается при попадании)
- Стоимость записи: 125% стандартной цены входных токенов
- Стоимость чтения: 10% стандартной цены (скидка 90%)
- Максимум брейкпоинтов: 4 на запрос
- Поддерживаемые модели: qwen3.7-max, qwen3.6-max-preview, qwen3-max, qwen3.7-plus, qwen3.6-plus, qwen3.5-plus, qwen-plus, qwen3.6-flash, qwen3.5-flash, qwen3-coder-plus, qwen3-vl-plus, deepseek-v3.2, kimi-k2.6, kimi-k2.5, glm-5.1 и другие.
Неявное кэширование (автоматическое):
- Минимум токенов: 256
- TTL: Неопределённый — система периодически очищает неиспользуемые кэши
- Стоимость записи: 100% стандартной цены (без надбавки)
- Стоимость чтения: 20% стандартной цены (скидка 80%)
- Всегда включено: Нельзя отключить, применяется автоматически ко всем запросам.
Явное и неявное кэширование взаимоисключающи в одном запросе — при установке cache_control работает только явный режим.
Источник: Документация DashScope Context Cache, получено 2026-06-17; Цены DashScope, получено 2026-06-17.
Пример кода: явное кэширование DashScope (OpenAI-совместимый)
from openai import OpenAI
client = OpenAI(
api_key="sk-xxx", # DashScope API key
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
LONG_SYSTEM_CONTENT = "[большой документ, код или контекст — минимум ≥1024 токенов]"
response = client.chat.completions.create(
model="qwen3.7-max",
messages=[
{
"role": "system",
"content": [
{
"type": "text",
"text": LONG_SYSTEM_CONTENT,
"cache_control": {"type": "ephemeral"},
}
],
},
{"role": "user", "content": "Подведите итоги ключевых выводов."},
],
)
# Проверка кэш-токенов
details = response.usage.prompt_tokens_details
print(f"Кэш создан: {details.cache_creation_input_tokens}")
print(f"Кэш попадание: {details.cached_tokens}")
OpenAI-совместимый endpoint DashScope возвращает cache_creation_input_tokens и cached_tokens в той же структуре, что и OpenAI, — переключение между провайдерами не требует изменений в парсинге ответов.
Кросс-провайдерное сравнение
| Характеристика | OpenAI | Anthropic | DashScope (явный) | DashScope (неявный) |
|---|---|---|---|---|
| Механизм | Автоматический | Явный или авто cache_control | Явный cache_control | Автоматический |
| Мин. токенов | 1 024 | 1 024 | 1 024 | 256 |
| Надбавка за запись | 0% | 25% (5 мин) / 100% (1 ч) | 25% | 0% |
| Скидка на чтение | До 90% | 90% | 90% | 80% |
| TTL по умолчанию | 5–10 мин (in-memory) | 5 мин (ephemeral) | 5 мин (сброс при попадании) | Неопределённый |
| Расширенный TTL | 24 часа | 1 час | — | — |
| Нужны изменения кода | Нет | Да (cache_control) | Да (cache_control) | Нет |
| Макс. брейкпоинтов | N/A (авто) | 4 | 4 | N/A (авто) |
Ключевые выводы:
- OpenAI — самый простой: без изменений кода, автоматическое определение префиксов, 24-часовое расширенное хранение на моделях GPT-5+ означает, что кэш сохраняется в длительных сессиях разработки.
- Anthropic даёт наибольший контроль: явные брейкпоинты позволяют точно управлять тем, что кэшируется, но надбавка за запись требует стабильных паттернов запросов для окупаемости.
- DashScope наиболее выгоден при высокой частоте попаданий: 10% стоимости чтения в явном режиме совпадает с Anthropic, а неявные 20% применяются без какой-либо настройки.
Стратегии маршрутизации для максимизации попаданий в кэш
При маршрутизации между несколькими провайдерами привязка к кэшу критична. Запрос, попадающий в кэш провайдера A, но маршрутизированный к провайдеру B, теряет все вложения в кэш. Рассмотрите следующие стратегии:
1. Привязка к провайдеру для кэшируемых нагрузок
Закрепите диалоги или типы нагрузок за одним провайдером. Если системный промпт составляет 10K токенов, каждая смена провайдера вызывает холодный промах кэша. Стоимость одного промаха может превысить экономию от более дешёвой цены за токен у альтернативного провайдера.
2. Порядок размещения в промпте
Статический контент — вперёд, переменный — в конец. Это правило универсально:
- Системные инструкции → кэшируются
- Few-shot примеры → кэшируются
- Определения инструментов → кэшируются
- История диалога → частично кэшируется (растёт с каждым ходом)
- Текущее сообщение пользователя → не кэшируется
3. Кэш-ориентированный выбор модели
Когда приложение использует длинные системные промпты (>10K токенов), модели с расширенным хранением кэша становятся непропорционально ценными. Модель за $5/MTok с 24-часовым кэшем может быть дешевле по эффективной стоимости токена, чем модель за $2/MTok с 5-минутным кэшем, который истекает между запросами.
4. Мониторинг производительности кэша
Отслеживайте по каждому провайдеру:
- Частота попаданий:
cached_tokens / total_input_tokens - Эффективная стоимость входа:
(некэшированные токены × базовая ставка + кэшированные × кэш-ставка + записанные × ставка записи) / всего токенов - ROI кэша: сравните эффективную стоимость с базовой без кэширования
Моделирование затрат: когда кэширование экономит деньги
Кэширование не бесплатно. В Anthropic и DashScope (явный режим) надбавка за запись означает, что каждое создание кэша стоит дороже стандартного входа. Экономия возникает, только если последующие запросы попадают в кэш достаточно часто, чтобы амортизировать стоимость записи.
Формула безубыточности (Anthropic 5 мин ephemeral):
- Стоимость записи: 1.25× базового входа
- Стоимость чтения: 0.10× базового входа
- Базовая стоимость (без кэша): 1.00× базового входа
Для N запросов по одному префиксу общая стоимость с кэшем = 1.25 + 0.10 × (N - 1). Без кэша = 1.00 × N. Кэширование окупается при:
1.25 + 0.10(N - 1) < N → N > 1.28
То есть уже при 2 попаданиях в кэш явное кэширование Anthropic начинает экономить. Ограничение — 5-минутный TTL: если интервал между запросами превышает 5 минут, кэш истекает, и вы снова платите надбавку за запись.
Автоматическое кэширование OpenAI не имеет надбавки за запись, поэтому каждое попадание — чистая экономия. Единственный риск — низкая частота попаданий из-за расхождения префиксов или вытеснения кэша.
Неявное кэширование DashScope тоже без надбавки за запись — любое попадание экономит 80%. Это самый безопасный режим по умолчанию.
Интеграция с TheRouter: маршрутизация кэш-чувствительных нагрузок
TheRouter маршрутизирует OpenAI-совместимые запросы через настроенных провайдеров и поддерживает routing и fallback провайдеров/моделей, где это поддерживается в продуктовом пути. Для кэш-чувствительных нагрузок учитывайте:
- Привязка к провайдеру: Когда нагрузка выигрывает от prompt caching, настройте маршрутизацию на предпочтение постоянного провайдера вместо round-robin. Каждая смена провайдера сбрасывает кэш.
- Осознание стоимости fallback: Если основной провайдер недоступен и TheRouter переключается на резервный, первый запрос будет промахом кэша. Учитывайте это в прогнозах затрат для конфигураций высокой доступности.
- Алиасы моделей: Когда DashScope и OpenAI предлагают сопоставимые модели с поддержкой кэширования, экономика кэширования (надбавка за запись, TTL, скидка на чтение) может различаться. Оценивайте эффективную стоимость за запрос, а не только цену за токен.
Подробнее об архитектуре fallback-маршрутизации — в нашем Руководстве по fallback-маршрутизации LLM API.
Чек-лист для production
Перед развёртыванием prompt caching в production:
- Измерьте базовые затраты — запишите
prompt_tokensиcompletion_tokensминимум для 100 репрезентативных запросов без оптимизации кэширования - Перестройте промпты — переместите статический контент (системные инструкции, примеры, определения инструментов) в начало; переменный контент — в конец
- Выберите явный или автоматический режим — OpenAI автоматический для простоты; Anthropic/DashScope явный при необходимости гарантированных брейкпоинтов
- Задайте политику хранения — в OpenAI включите
prompt_cache_retention: "24h"для длительных сессий; в Anthropic рассмотрите 1-часовой TTL для пакетных нагрузок - Мониторьте метрики кэша — отслеживайте
cached_tokens,cache_creation_input_tokensи эффективную стоимость за запрос - Тестируйте инвалидацию кэша — убедитесь, что изменения промпта (системные инструкции, определения инструментов) корректно инвалидируют устаревшие кэши
- Рассчитайте ROI — подтвердите, что частота попаданий превышает порог безубыточности для надбавки за запись выбранного провайдера
- Проверьте маршрутизацию — убедитесь, что конфигурация маршрутизации поддерживает привязку к провайдеру для кэшируемых нагрузок
Часто задаваемые вопросы
В: Влияет ли prompt caching на качество ответов? Нет. Кэширование повторно использует только промежуточные вычисления (key/value-тензоры) обработки входных данных. Модель генерирует новый вывод для каждого запроса. Кэшированные и некэшированные запросы дают идентичные результаты.
В: Можно ли кэшировать определения инструментов?
Да, у всех трёх провайдеров. Определения инструментов — часть префикса промпта и могут кэшироваться. В OpenAI они кэшируются автоматически. В Anthropic и DashScope размещайте их перед брейкпоинтом cache_control.
В: Кэшированные данные доступны между организациями? Нет. В OpenAI кэши изолированы по организации. В Anthropic — по API key. В DashScope — по рабочему пространству.
В: Что произойдёт, если изменить один токен в кэшированном префиксе? Промах кэша с этой точки. Prompt caching — точное совпадение по префиксу: любое изменение в кэшированной части аннулирует совпадение. Неизменённая часть до точки изменения может по-прежнему совпадать у некоторых провайдеров.
В: Какой провайдер лучше для агентных нагрузок? Агентные нагрузки (многоходовые, с интенсивным использованием инструментов) больше всего выигрывают от расширенных TTL, поскольку вызовы инструментов создают задержки на round-trip. 24-часовое расширенное хранение OpenAI здесь сильнее всего. 5-минутный TTL Anthropic по умолчанию подходит, если вызовы инструментов завершаются в этом окне. 5-минутный явный кэш DashScope тоже сбрасывается при попадании, что подходит для быстрых многоходовых обменов.
Подробнее о настройке конкретных провайдеров — в наших руководствах: Руководство по Aliyun Bailian API, Руководство по DeepSeek API, Провайдеры OpenAI-совместимых API, Руководство по миграции с OpenAI на TheRouter.