Тема
Язык
·3 мин. чтения

Кэширование промптов: как сократить расходы на повторяющиеся промпты

Как работает кэширование промптов в GetVibe API: автоматическое кэширование для моделей OpenAI, cache_control для Claude, что означает cacheReadMult и как сохранить кэшируемый префикс.

Кэширование промптов: как сократить расходы на повторяющиеся промпты

Большая часть трафика LLM повторяется. Чат-бот отправляет один и тот же системный промпт при каждом ходе, а агент повторно отправляет определения инструментов и всю историю диалога. Кэширование промптов позволяет модели читать повторяющийся префикс из кэша, а кэшированные входные данные тарифицируются по доле обычной стоимости входных данных. В этом руководстве описано, как это работает в GetVibe API и как получить максимальную пользу от этой возможности.

Стоимость кэшированных входных данных

Для каждой текстовой модели в нашем каталоге указаны условия кэширования. В https://getvibeapi.com/api/catalog каждый вариант модели содержит:

  • cachedInputUsd: стоимость 1M кэшированных входных токенов.
  • cacheReadMult: стоимость чтения из кэша в виде доли от обычной стоимости входных данных.
  • cacheWriteMult: стоимость записи в кэш относительно обычной стоимости входных данных.

На момент написания статьи почти все текстовые модели имеют значение cacheReadMult: 0.1, то есть кэшированный входной токен стоит одну десятую обычного, а также cacheWriteMult: 1. Единственное исключение — Claude Fable 5.1: для чтения указано значение 0.025, а для записи — 1.25. Эти значения могут измениться, поэтому проверяйте их в каталоге или на странице каждой модели, а не задавайте их в коде жёстко.

МодельСтоимость (вход · выход)
Claude Opus 5.5$0.1067 вход · $0.5334 выход за 1 млн токенов
GPT-6 Sol$0.1096 вход · $0.548 выход за 1 млн токенов
DeepSeek V4.1 Flash$0.0112 вход · $0.0445 выход за 1 млн токенов

На страницах моделей рядом с этими значениями указана стоимость кэшированных входных данных.

Модели OpenAI: автоматически

На /v1/chat/completions модели семейства OpenAI кэшируют данные автоматически. Когда несколько запросов начинаются с одного и того же стабильного префикса, этот префикс считывается из кэша. Специальное поле не требуется. Важно, чтобы начало запроса не менялось. Мы передаём тело запроса побайтно, не меняя порядок полей, поэтому префикс, идентичный на вашей стороне, остаётся идентичным и при передаче вышестоящему API.

Claude: точки прерывания cache_control

Claude кэширует данные только в том случае, если запрос содержит явную точку прерывания cache_control. Одного повторения префикса недостаточно для включения кэширования. Разместите точку прерывания в конце неизменяемой части:

curl https://getvibeapi.com/v1/messages \
  -H "x-api-key: $GETVIBE_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-5.5",
    "max_tokens": 256,
    "system": [
      {"type": "text", "text": "Большая фиксированная инструкция, которую стоит кэшировать...",
       "cache_control": {"type": "ephemeral"}}
    ],
    "messages": [{"role": "user", "content": "Вопрос об инструкции"}]
  }'

Если вы не отправляете точку прерывания самостоятельно, шлюз добавляет её за вас как для /v1/messages, так и для /v1/chat/completions. Если вы управляете точками прерывания самостоятельно, ваша разметка остаётся без изменений.

Пять правил кэшируемого промпта

  1. Сначала стабильное содержимое, затем изменяемое. Системный промпт, определения инструментов и справочные документы размещайте в начале. Новое сообщение пользователя — в конце.
  2. Не добавляйте временные метки или идентификаторы запросов в префикс. Один изменившийся символ в начале делает всё последующее содержимое недействительным для кэша.
  3. Сохраняйте фиксированный порядок определений инструментов. Формирование списка инструментов из неупорядоченной map меняет префикс при каждом вызове.
  4. Дополняйте историю, а не переписывайте её. Агенты, которые суммируют или переупорядочивают предыдущие ходы, нарушают работу кэша. Добавляйте новые ходы в конец.
  5. Используйте одну модель. Кэш привязан к модели, поэтому при переключении моделей в середине диалога кэш начинается с пустого состояния.

Проверьте работу кэширования

Посмотрите на объект usage в ответе. В формате OpenAI кэшированные токены находятся в prompt_tokens_details.cached_tokens. В формате Anthropic ищите cache_read_input_tokens и cache_creation_input_tokens. В представлении статистики вашего dashboard также отображается доля попаданий в кэш для каждой модели. Если количество кэшированных токенов остаётся равным нулю для идентичных запросов, значит, что-то в вашем префиксе меняется.

Дальнейшие шаги

Изучите документацию по кэшированию, настройте Claude Code с пользовательской конечной точкой (агенты получают от кэширования наибольшую пользу) или сравните стоимость кэшированных входных данных на странице моделей.

кэширование промптовстоимость API LLMцена кэшированного вводаClaude cache_controlкэширование промптов OpenAIснизить стоимость API LLM

Попробуйте GetVibe API бесплатно

GPT, Claude, Gemini и другие модели через единый API, совместимый с OpenAI. Оплата в USD картой или криптовалютой.

Похожие статьи

Кэширование промптов: как сократить расходы на повторяющиеся промпты | GetVibe API