Skip to main content
Когда вы запускаете agents, длинные system prompts или многоходовые conversations в Grok, prompt caching тарифицирует кэшированную часть вашего input по ставке 0.25× (экономия 75%) — и никаких изменений в коде не требуется, потому что кэширование полностью автоматическое. Сразу задайте правильные ожидания: xAI прямо указывает, что записи кэша могут быть удалены при нехватке памяти, после перезапуска или когда запрос попадает на другой сервер, поэтому попадания в кэш не гарантируются. Рассматривайте скидку за кэш как приятный бонус и планируйте бюджет по цене без кэша. Эта страница следует официальной документации xAI (docs.x.ai/developers/advanced-api-usage/prompt-caching) и основана на практическом тестировании grok-4.6 на шлюзе APIYI 2026-08-19 (124 вызова, сверено построчно с внутренними записями тарификации backend).

В одном предложении

Если начальная часть (префикс) вашего запроса совпадает с недавним запросом байт в байт, вышестоящая система пропускает лишнюю работу: совпавшая часть тарифицируется по 0.25×. Без параметров, без маркеров. Чем это отличается от двух других:
  • vs Claude: никаких маркеров cache_control — это просто происходит, когда условия выполнены
  • vs OpenAI: столь же автоматически и столь же свободно в использовании, но Grok не дает вам управления маршрутизацией в стиле prompt_cache_key

Зачем это нужно — посмотрите на коэффициенты

Если принять базовую цену input token модели за : Точка безубыточности: второй запрос. Платы за запись, которую нужно амортизировать, нет, поэтому в первый раз, когда префикс используется повторно, вся ваша экономия — это чистая выгода. В долларах для grok-4.6 (за 1 млн tokens, для обоих уровней контекстного окна): Пороговые значения уровней и ставки чтения из кэша для других моделей Grok приведены в таблице ступенчатого ценообразования в обзоре Grok.

Хорошо подходит

  • Один длинный system prompt плюс определения tools, вызываемые снова и снова (agents, support bots)
  • Пакетная обработка одного документа (50 вопросов к одному контракту)
  • RAG, где стабильные фрагменты документа находятся в начале prompt
  • Многоходовые диалоги — но учтите, что в Grok два способа сделать это ведут себя очень по-разному (см. ниже)

Плохо подходит

  • Запросы, которые каждый раз отличаются уже с самого первого символа
  • prompts ниже диапазона в тысячу tokens — в тестировании многократный вызов такого запроса так и не сформировал повторно используемый кэш

Оба эндпоинта, с потоковой передачей и без неё, всё сверено

/v1/chat/completions и /v1/responses, как с потоковой передачей, так и без неё: мы сверили все четыре комбинации с записями тарификации backend на 2026-08-19, и закэшированная часть в каждом случае была тарифицирована по ставке кэша:
Для шлюза не требуется адаптация на стороне клиента. Поведение кэша передаётся в upstream, cached_tokens возвращается дословно, а счёт backend указывает закэшированную часть отдельной позицией «чтение кэша».

Условия для попадания

Попадания округляются вниз до 128 tokens

Два раунда тестирования сходятся: префикс длиной 8802-token дал попадание 8704 (= 68 × 128), а в более раннем раунде префикс длиной 2735-token дал попадание 2688 (= 21 × 128). Таким образом, cached_tokens обычно немного меньше вашего стабильного префикса — это ожидаемо.

Только добавление: изменение истории ломает это

Тот же префикс, отправленный подряд, с одним измененным вызовом: Что это означает на практике: сначала стабильное содержимое, затем изменчивое.

Минимальный запускаемый пример

Отправьте один и тот же длинный префикс дважды с разными вопросами: первый записывает кэш, второй попадает в него.
Ожидаемый вывод:
На втором вызове cached близко к длине system prompt (округлено вниз до 128), и эта часть тарифицируется по 0.25×.
Эндпоинт /v1/responses автоматически работает так же; поле — usage.input_tokens_details.cached_tokens. Длинные разговоры получают дополнительное преимущество на этом эндпоинте — см. ниже “Длинные разговоры относятся к цепочке responses”.

Как отличить попадание от промаха — смотрите поле usage

Как это читать: малые значения — это не попадания

Не просто проверяйте «больше нуля». Сравнивайте cached_tokens со стабильной длиной префикса: При тестировании даже холодный первый вызов иногда возвращает значение в сто или двести. Не обманывайтесь — это не значит, что ваш префикс был закэширован.

Сверка: подробность тарификации кэша в консоли

Внутренний лог для одного вызова перечисляет количество token для cached-read и его множитель скидки отдельной строкой, которую вы можете сопоставить с cached_tokens в ответе. Когда вам нужно точно знать, как был тарифицирован один вызов, это и есть авторитетный источник. Трехшаговая самопроверка:
  1. Создайте стабильный префикс длиной более тысячи token и отправьте два запроса подряд
  2. Во втором ответе cached_tokens должно быть явно в тысячах
  3. В бэкенд журналах вызовов этот запрос показывает строку «чтение из кэша» и заметно более низкую стоимость входных данных, чем у первого

Улучшение процента попаданий

Сформируйте стабильный префикс

  • Длинные инструкции, few-shot-примеры и определения tools идут первыми; ввод пользователя и метки времени — последними
  • Сохраняйте порядок определений tools и сериализацию JSON неизменными (не позволяйте сериализатору перемешивать ключи)
  • Входные изображения тоже участвуют в сопоставлении префикса — при повторном использовании сохраняйте base64 / URL и параметры идентичными
  • Используйте один и тот же префикс в короткой серии запросов, а не растягивайте обращения во времени
Методология совпадает с OpenAI; полную версию см. в руководстве OpenAI по кэшированию промптов.

Длинные диалоги лучше вести в цепочке Responses

Это легко упустить как различие в Grok: Поэтому для длинных диалогов и многошаговых агентов предпочитайте цепочку Responses API:
Различия между endpoint описаны в обзоре endpoint на странице обзора Grok.

О x-grok-conv-id

Лучшие практики xAI рекомендуют отправлять заголовок x-grok-conv-id (UUID или ID сеанса) в каждом запросе, чтобы повысить процент попаданий. Мы провели симметричный A/B на APIYI — несколько независимых префиксов с заголовком и без него, по несколько повторных использований каждого — и не увидели заметной разницы между двумя группами. Отправлять его не вредно, но не рассчитывайте на него для повышения процента попаданий.

Процент попаданий и чего ожидать

Попадания в кэш не гарантированы. В документации xAI указано, что записи могут быть потеряны из-за давления на память, перезапуска сервиса или маршрутизации запроса на другой сервер.В тестах большинство запросов попадали в кэш, когда стабильный префикс повторно использовался в плотной серии, но наблюдается реальный джиттер, и он возникает выше по цепочке — со стороны вызывающего его ничто не контролирует. Планируйте бюджет по цене без кэша и считайте попадания бонусом.
И ещё один момент, который стоит сказать прямо: ценность кэширования — в стоимости, а не в скорости. Измеренное время до первого token отличалось всего на несколько сотен миллисекунд между попаданиями и промахами — не ожидайте, что кэширование сделает запросы с большим context window быстрыми.

Частые подводные камни

Краткое сравнение с другими каналами

Чтобы узнать о поддержке кэширования на всей платформе, см. FAQ по тарификации кэша.
Все на этой странице было измерено на grok-4.6 (2026-08-19). xAI утверждает, что все языковые модели Grok поддерживают кэширование префикса; мы не проводили бенчмарки остальных по отдельности, поэтому воспринимайте такие детали, как дискретность блоков и поведение при коротких prompt, как то, что нужно подтверждать на вашей собственной нагрузке.Если тарификация, которую вы видите для данного префикса, явно расходится с тем, что описано здесь, обратитесь в поддержку, указав request-id из заголовков ответа.

Краткое резюме

1. Полностью автоматически

Никаких маркеров, никакой платы за запись. Выполните условия, и это будет кэшироваться; повторное использование во второй раз — это чистая экономия.

2. Только добавление

Сопоставление выполняется побайтно с начала сообщений; изменение истории делает его недействительным, а попадания округляются вниз до 128 tokens.

3. Связывайте длинные разговоры

Многоходовой чат повторно использует только исходный статический префикс; responses + previous_response_id увеличивает попадания с каждым ходом.

4. Не рассчитывайте на попадания

Попадания не гарантированы. Планируйте бюджет по цене без кэша и воспринимайте скидку как бонус.

Связанные ссылки