Prompt CachingAPI Cost SavingContext Caching

Кэширование промптов: экономьте до 90% на LLM API

1 мин чтения

Каждый запрос отправляет один и тот же системный промпт на 10,000 токенов. Те же стандарты кода. Те же few-shot примеры. Те же определения инструментов. Вы платите полную цену входа за каждый из них. При 500 запросах в день на GPT-5.5 за $5/M входа это $25 в день — $750 в месяц — только за контент, который модель уже обрабатывала 500 раз.

Кэширование промптов снижает это до $75 в месяц. Тот же контент. То же качество вывода. Одно изменение кода. Кэширование промптов — одна из 12 стратегий из нашего разбора оптимизации затрат — и оно даёт самую высокую ROI при самом малом изменении кода.

Эта статья охватывает, как кэширование работает у всех четырёх крупных провайдеров, точный код для его реализации и как диагностировать, дружественна ли ваша нагрузка кэшу. Это авторитетный справочник по кэшированию промптов во всём блоге TokSpan — другие статьи ссылаются сюда за полными деталями реализации.

Как работает кэширование промптов (и почему это не серебряная пуля)

Когда вы отправляете промпт LLM, модель обрабатывает каждый токен — даже те, что она видела сотни раз. Вычисление повторяется для каждого запроса. Закэшируйте эти токены — и модель пропустит избыточное вычисление.

Механика: вы помечаете часть промпта как кэшируемую. Провайдер хэширует эту часть. При последующих запросах с тем же префиксом провайдер извлекает кэшированное вычисление вместо повторного запуска. Вы платите сниженную ставку за кэшированные токены — или, у некоторых провайдеров, не платите за инференс вовсе для кэшированной части.

Что можно кэшировать: системные промпты (самый распространённый и самый высоко-ROI случай). Определения инструментов — они идентичны между запросами. Few-shot примеры. Статический контекст документов — документация продукта, статьи базы знаний, стандарты кода. История беседы до последнего сообщения — история идентична до самого нового сообщения пользователя.

Что нельзя кэшировать: новое сообщение пользователя — оно в конце промпта и уникально для каждого запроса. Недетерминированные префиксы — всё, что меняется между запросами. Контент короче минимальной длины кэша провайдера (обычно 1,024 токена).

Загвоздка: кэши истекают. TTL варьируется от 5 минут (Anthropic, OpenAI) до настраиваемых часов (Google). Если ваш интервал между запросами превышает TTL, кэш холоден и вы платите полную цену. Кэши также специфичны для провайдера и модели — переключение с Opus на Sonnet аннулирует кэш.

Реализация по провайдерам

Anthropic — скидка 90%, лучшая в классе, явный контроль.

Anthropic предлагает лучшую экономику кэширования в индустрии: 90% скидки на кэшированные входные токены. Документация Anthropic по кэшированию промптов подробно описывает точки разрыва кэша, поведение TTL и цены. Запись кэша несёт небольшую наценку к базовой цене входа (см. разбивку цен ниже). Точка безубыточности: примерно 1,3 общего запроса на одну запись кэша — то есть всего 2 запроса, разделяющие кэшированный префикс, уже экономят ~32.5%. Для большинства продакшн-нагрузок вы получите десятки. Полное прохождение настройки SDK Anthropic с кэшированием смотрите в нашем руководстве разработчика по Claude API.

import anthropic

client = anthropic.Anthropic(
    base_url="https://api.tokspan.com/anthropic",
    api_key="ts-your-key-here"
)

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1000,
    system=[
        {
            "type": "text",
            "text": "You are a code reviewer. Here are our 10,000-token coding standards...",
            "cache_control": {"type": "ephemeral"}  # Cache this
        }
    ],
    messages=[{"role": "user", "content": "Review this PR."}]
)

Точки разрыва кэша. Вы можете разместить несколько блоков cache_control по всему набору сообщений. Каждый помечает точку, до которой префикс кэшируется. Стратегическое размещение: кэшируйте системный промпт (всегда). Кэшируйте историю беседы, исключая последнее сообщение пользователя (история статична; новое сообщение пользователя динамично). Кэшируйте определения инструментов (они редко меняются).

Минимальная кэшируемая длина: 4,096 токенов для Opus 4.5+ (включая Opus 4.8/4.7/4.6/4.5) и Haiku 4.5; 2,048 токенов для Sonnet 4.6. Промпты короче этого не будут кэшироваться — накладные расходы на управление кэшем превышают экономию вычислений.

OpenAI — скидка 50%, автоматически, ноль усилий.

Кэширование промптов OpenAI автоматическое для промптов длиннее 1,024 токенов. Без изменений кода. Без блоков cache_control. Провайдер обнаруживает повторяющиеся префиксы и применяет скидку молча. Компромисс: скидка 50% против 90% у Anthropic и отсутствие гарантии попадания в кэш — провайдер решает, когда кэшировать.

# No special code needed. OpenAI automatically caches repeated prefixes.
response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[
        {"role": "system", "content": "Your 5,000-token system prompt here..."},
        {"role": "user", "content": "User message here."}
    ]
)
# If the system prompt was cached, you pay 50% less for those input tokens.
# Check response.usage for cache status.

Google Gemini — кэширование контекста, явное, настраиваемый TTL.

Подход Google иной: вы создаёте ресурс «cached content» с явным TTL — документация Google по кэшированию контекста покрывает настройку и цены. TTL варьируется от минут до 24 часов. Вы ссылаетесь на кэшированный контент в запросах. Кэш сохраняется между несколькими запросами и пользователями. Лучше всего для: Q&A по документам со статическим контентом, к которому обращаются несколько пользователей.

DeepSeek — $0.0036/M за попадание в кэш, автоматически, абсолютно самая низкая цена.

Цена попадания в кэш DeepSeek в $0.0036 за миллион токенов абсурдно дешёвая — в 40 раз дешевле их уже дешёвой базовой ставки. Кэширование автоматическое (похоже на OpenAI). Без явного контроля. Но при такой цене экономика благоприятна практически для любой нагрузки с повторяющимся контентом.

Цены на кэширование: реальная экономия

ПоставщикЗапись в кэшЧтение из кэшапротив базовой цены входаTTLАвтоматически?
Anthropic1.25x базовой цены10% базовой ценыскидка 90%~5 минНет (явно)
OpenAI50% базовой ценыскидка 50%5–60 минДа
Google GeminiЗависит от TTLЗависит от TTLСкидка до 75%НастраиваемыйНет (явно)
DeepSeek$0.0036/Mскидка ~97%~5 минДа

Руководство по выбору. Помимо сырых цен, реализация кэширования каждого провайдера имеет архитектурные компромиссы. Anthropic даёт явный контроль и самую глубокую скидку — но вы платите наценку 25% за запись и должны сами управлять размещением точек разрыва. OpenAI — «выстрелил и забыл»: ноль кода, экономия 50%, без гарантии попаданий. Настраиваемый TTL Google уникален: поставьте 24-часовой кэш на документацию продукта и обслуживайте тысячи пользователей на одном кэшированном ресурсе. Абсолютный ценовой минимум DeepSeek ($0.0036 за миллион кэшированных токенов) делает оптимизацию частоты попаданий в основном неактуальной — при такой цене даже 10% попаданий экономят деньги.

ПоставщикМин. длина кэшаУсилияЛучше всего подходит дляОговорка
Anthropic4,096 токенов (Opus 4.5+, Haiku 4.5); 2,048 (Sonnet 4.6)Добавьте 3 строкиСистемные промпты, определения инструментов, few-shotНаценка 1.25x за запись; TTL 5 мин
OpenAI1,024 токенаНикакихЛюбая нагрузка, пассивная экономияНет гарантии попадания; только скидка 50%
Google GeminiЗависит от моделиСоздайте ресурсQ&A по документам, потребности в длинном TTLВыше стоимость для более длинных TTL
DeepSeek~1,024 токенаНикакихВысокий объём, чувствительность к ценеТолько автоматический; менее предсказуемо

Калькулятор экономии. Нагрузка с 500 запросами/день, кэшированным системным промптом на 10,000 токенов, сообщениями пользователя на 500 токенов, на Claude Opus по $5/M входа:

  • Без кэширования: 500 × (10,000/1,000,000 × $5) = $25/день только на кэшируемом контенте
  • С кэшированием: 500 × (10,000/1,000,000 × $0.50) = $2.50/день на кэшируемом контенте
  • Годовая экономия: $8,212 — $821 на этом контенте. Одно изменение кода.

Скрытая стоимость записи в кэш. Anthropic берёт 1.25x базовой цены входа за запись в кэш. Точка безубыточности — примерно 1.3 общего запроса на одну запись — то есть даже одно чтение из кэша (2 запроса, разделяющих один промпт) экономит ~32.5% против отсутствия кэширования. Для системных промптов и определений инструментов, идентичных для всех запросов, это никогда не проблема. Для контента, где большинство запросов уникальны (нет чтений кэша), вы платите наценку 25% за запись с нулевой компенсирующей экономией. Отслеживайте частоту попаданий в кэш. Цель >80%.

Дружественна ли ваша нагрузка кэшу?

Лучшие нагрузки для кэширования:

  • Чат-боты с длинными системными промптами — промпт идентичен для всех пользователей и бесед. Частота попаданий: почти 100%.
  • RAG-приложения со статическим контекстом документов — контент базы знаний одинаков для каждого запроса к нему. Частота попаданий: высокая, в зависимости от числа различных документов.
  • Задачи с few-shot промптами — ваши примеры идентичны между запросами. Кэшируйте их.
  • Многоходовые беседы с длинной историей — история до последнего сообщения статична. Кэшируйте всё, кроме последнего хода пользователя.
  • Кодинг-агенты с определениями инструментов — схемы инструментов статичны. Кэшируйте их.

Худшие нагрузки для кэширования:

  • Разовые промпты — каждый запрос уникален. Нет повторяющихся префиксов. Частота попаданий: 0%.
  • Уникальные документы на запрос — если каждый запрос направлен против другого документа, кэшировать нечего.
  • Очень короткие промпты (<1,024 токенов) — ниже минимальной длины кэша для большинства провайдеров.
  • Генерация с высокой случайностью — если каждый ответ творческий и неограниченный, вывод не кэшируется (кэширование касается входных токенов).

Простая диагностика. Логируйте первые 2,000 символов каждого API-запроса за один день. Посчитайте, сколько идентичны. Если >50% запросов разделяют общий префикс длиннее 1,000 токенов, кэширование промптов сэкономит вам существенные деньги. Если <20%, экономия не оправдает усилий по явному кэшированию (хотя автоматическое кэширование всё равно даст пассивную экономию).

Диагностика частоты попаданий: скрипт на 5 минут

Прежде чем трогать продакшн-код, проверьте, дружественна ли ваша нагрузка кэшу. Запустите этот скрипт на последних 1,000 запросов API. Он хэширует кэшируемую часть каждого запроса и сообщает ваш коэффициент дублирования — процент запросов, разделяющих префикс хотя бы с одним другим запросом.

import hashlib
import json
from collections import Counter

# Load your request log —adapt the path and format to your setup
with open("api_requests.jsonl") as f:
    requests = [json.loads(line) for line in f]

def get_cacheable_prefix(req):
    """Extract the static portion of each request.
    For most applications this is the system prompt + any messages
    before the final user turn."""
    messages = req.get("messages", [])
    prefix = messages[:-1] if len(messages) > 1 else messages
    return json.dumps(prefix, sort_keys=True)

prefixes = [get_cacheable_prefix(r) for r in requests]
hashes = [hashlib.md5(p.encode()).hexdigest() for p in prefixes]
counts = Counter(hashes)

total = len(requests)
unique = len(counts)
most_common = counts.most_common(1)[0] if counts else (None, 0)
dup_rate = (total - unique) / total * 100 if total else 0

print(f"Total requests analyzed: {total}")
print(f"Unique prefixes: {unique}")
print(f"Most-repeated prefix: {most_common[1]} occurrences")
print(f"Duplication rate: {dup_rate:.1f}%")

if dup_rate > 70:
    print("=> Cache-friendly. Implement explicit caching —high ROI.")
elif dup_rate > 40:
    print("=> Borderline. Caching helps, but audit write costs first.")
else:
    print("=> Not cache-friendly. Skip caching; use other optimizations.")

Что числа значат для вашего счёта. Коэффициент дублирования 70% при 500 ежедневных запросах с системным промптом на 10,000 токенов при $5/M входа означает, что 350 запросов выигрывают от кэширования. Со скидкой Anthropic 90% кэшированные токены стоят $0.50/M вместо $5/M — экономя $15.75/день только на этом блоке. С автоматической скидкой OpenAI 50% вы экономите $8.75/день без изменений кода. Даже коэффициент 40% важен: 200 запросов/день по 10,000 токенов экономят $9/день на Anthropic.

Нет доступа к журналам запросов? Панель вашего LLM-провайдера показывает общее число запросов и средние токены на запрос. Сверьте с MAU вашего приложения. Если вы обслуживаете 100 ежедневно активных пользователей с фиксированным системным промптом на 5,000 токенов, у вас 100 идентичных префиксов. Если каждый пользователь загружает уникальный 20-страничный документ за сессию, ваш коэффициент дублирования округляется до нуля. Панель подскажет, в какой категории вы находитесь, без сбора ни одной строки лога.

Когда кэширование промптов стоит вам денег

Большую часть времени кэширование промптов экономит деньги. Но при неверных условиях оно делает обратное — вы платите больше и ничего не получаете. Вот сценарии, когда стоит подумать дважды перед добавлением элементов управления кэшем.

Наценка за запись Anthropic на нагрузках с низкой частотой попаданий. Anthropic берёт 1.25x базовой цены входа за каждую запись в кэш. Если частота попаданий падает ниже 20%, наценка за запись превышает скидку за чтение. Кэшируемый блок на 10,000 токенов при $5/M базово: запись стоит $0.0625 (1.25x), чтение — $0.005 (0.1x). Для безубыточности нужно примерно 1.3 общего запроса на одну запись — то есть даже одно чтение из кэша (2 общих запроса, разделяющих промпт) экономит ~32.5%. Бот поддержки, меняющий системный промпт каждые 3 запроса (1 запись + 2 чтения), экономит ~52% против отсутствия кэширования. Отслеживайте cache_read_input_tokens против cache_creation_input_tokens в ответе usage Anthropic. Если соотношение чтения к записи ниже 0.5:1 (меньше 1 чтения на 2 записи), удалите блок кэша.

Нагрузки с интенсивным стримингом и разовыми запросами. Транскрибация в реальном времени, разовая генерация кода, творческое письмо — каждый промпт уникален по определению. Добавление блоков cache_control к потоку уникальных промптов добавляет ~20 токенов на блок в каждый запрос и никогда не возвращает попадание. Автоматическое кэширование OpenAI молча пропускает их (нет попадания, нет оплаты). Но явные блоки cache_control Anthropic всегда влекут стоимость записи при первом появлении. На уникальных нагрузках каждый запрос — первое появление: вы платите наценку 25% на каждый вызов с нулевой компенсирующей экономией.

Промпты чуть ниже минимального порога. Anthropic требует 4,096 токенов для Opus 4.5+ и Haiku 4.5, и 2,048 токенов для Sonnet 4.6. OpenAI требует 1,024 токена. Системный промпт на 1,500 токенов с блоком cache_control на Opus стоит столько же, сколько без него — провайдер молча игнорирует директиву кэша, потому что она ниже минимума в 4,096 токенов. Один блок cache_control добавляет ~20 токенов. При 5 миллионах запросов/мес и $5/M входа эти 20 потраченных впустую токенов стоят $500/мес. Проверьте фактическое число токенов (а не символов) токенизатором провайдера перед добавлением элементов управления кэшем.

Быстрое правило. Инвестируйте в явное кэширование только когда: (a) ваш кэшируемый префикс превышает 1,024 токена, (b) он появляется более чем в 50% запросов, и (c) медианный интервал между запросами меньше TTL провайдера. Если любое условие не выполняется, позвольте автоматическому кэшированию справиться или пропустите кэширование и выберите другую стратегию из плейбука оптимизации затрат.

Руководство по стратегии кэширования

Иерархия. Anthropic для максимальной экономии на явных высокочастотных кэшах. DeepSeek для самой дешёвой абсолютной цены чтения на высокообъёмных нагрузках. Google для долгоживущих кэшей документов (до 24 часов). OpenAI для автоматической экономии без усилий.

Многопровайдерская стратегия кэша. Кэшируйте статический контент у провайдера с лучшей экономикой кэша (Anthropic, скидка 90%). Направляйте дружественный кэшу трафик к этому провайдеру. Направляйте уникальные запросы к провайдеру с лучшим базовым ценообразованием для вашего случая. Это продвинутая оптимизация — сначала внедрите базовое кэширование, маршрутизацию настраивайте позже.

Кэширование на уровне платформы. Некоторые агрегационные платформы наслаивают собственное кэширование поверх кэширования провайдера. Платформа кэширует ответы на уровне API-шлюза — идентичные запросы, обслуженные из кэша платформы, никогда не достигают провайдера. Для высокообъёмных приложений с повторяющимися паттернами запросов это удваивает экономию. Документация TokSpan по кэшированию промптов покрывает настройку кэширования на уровне платформы, включая аналитику попаданий и отслеживание экономии по провайдерам.

FAQ

Сколько я реально могу сэкономить с кэшированием промптов?

50–90% на входных токенах в зависимости от провайдера и нагрузки. С Anthropic (скидка 90%) и 80% закэшированных входных токенов: эффективная стоимость входа падает ~на 72%. При расходе $1,000/мес на вход это $280/мес — экономия $720/мес.

Нужно ли менять код?

OpenAI и DeepSeek: нет, кэширование автоматическое. Anthropic: да, добавьте блоки cache_control (3 строки кода). Google: да, создайте ресурсы cached content. Усилия реализации пропорциональны экономии — Anthropic требует больше всего кода, но даёт самую большую скидку.

Как долго живут кэши?

Anthropic: ~5 минут. OpenAI: 5–60 минут (переменный, не гарантирован). Google: настраиваемый TTL (от минут до 24 часов, с более высокой стоимостью для более длинных TTL). DeepSeek: похоже на OpenAI. Для приложений с интервалами запросов менее 5 минут кэширование работает автоматически. Для менее частых паттернов доступа помогает только настраиваемый TTL Google.

Могу ли я кэшировать между разными моделями одного провайдера?

Обычно нет. Кэш специфичен для модели. Переключение с Opus на Sonnet аннулирует кэш. В продакшне фиксируйтесь на конкретных версиях моделей, чтобы максимизировать частоту попаданий.

Что происходит, если кэш истекает посреди беседы?

Провайдер возвращается к полной цене за затронутые токены — без ошибки, без прерывания, просто выше стоимость для этого одного запроса. Пользовательский опыт не затрагивается. Истечение кэша — событие стоимости, а не событие надёжности. Низкий риск, высокая отдача.

Кэширование промптов даёт до 90% экономии почти без кода — редкий бесплатный обед в инфраструктуре. Но у бесплатных обедов есть история превращения в платные. По мере того как кэширование становится стандартом у каждого провайдера, настоящий вопрос — переживут ли сегодняшние скидки следующий ценовой цикл, или экономия будет молча включена в более высокие базовые ставки, пока маркетинг остаётся прежним.

Если окно скидок закроется, вопрос не в том, стоило ли внедрять кэширование, — экономии даже от шести месяцев входных токенов со скидкой 90% более чем достаточно, чтобы оправдать три строки кода, которые его включили. Настройте кэширование промптов на TokSpan и наслоите кэширование на уровне платформы поверх встроенной скидки каждого провайдера, пока экономика всё ещё так сильно этому благоприятствует.