Почему доля попаданий в кэш AI-агента рушится: GPT, Claude и аудируемые gateway

Руководство с первичными источниками о сбоях кэша у сторонних агентов, механизмах GPT и Claude, воспроизводимом измерении и компенсации Modelflare.

Кэширование в AI-агенте — не флажок в настройках. Это контракт протокола, маршрутизации и учёта. В статье объясняется, почему агент третьей стороны может иметь очень низкую долю попаданий, хотя upstream-модель поддерживает prompt caching, чем отличаются механизмы GPT и Claude и что должен гарантировать проверяемый gateway.

Решение в одном предложении

Не помещайте production-агента, чувствительного к кэшу, за агентом или gateway третьей стороны, который не показывает нативное использование кэша, не сохраняет стабильный префикс, не поддерживает привязку модели и маршрута, не раскрывает TTL и знаменатель и не сверяет результат с долговечным ledger. «Поддерживает кэш» — это описание функции; измеренная доля попаданий для допустимого трафика — эксплуатационный факт.

Это не утверждение, что каждый сторонний агент обязательно ломается. Публичные документы не позволяют доказать общий процент для поставщика без фиксированного корпуса, модели, окна наблюдения и доказательств использования на уровне запроса. Более точный вывод таков: непрозрачный слой преобразования создаёт несколько независимых точек разрыва и способен превратить действующий кэш провайдера в почти всегда холодный путь. Для production-трафика, экономика которого зависит от кэша, отсутствие доказательств уже является причиной отказаться от пути.

Сначала определите знаменатель

Провайдер обычно сообщает три разных корзины. R — токены, прочитанные из кэша, W — записанные токены, U — входные токены, обработанные без повторного использования. Для префиксов, имеющих право на кэш, сопоставимая доля попаданий равна:

eligible_hit_rate = R / (R + W)

Для всего входа, отправленного модели, доля повторного использования равна:

input_reuse_share = R / (R + W + U)

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

Стабильный префикс входит в повторно используемый кэш, а меняющееся состояние агента обходит его

Доказательством являются поля провайдера, а не зелёный значок в интерфейсе агента:

Сигнал Поле OpenAI Поле Claude Что подтверждает
Повторно использованный префикс input_tokens_details.cached_tokens cache_read_input_tokens Токены из совпавшей записи
Новая запись кэша input_tokens_details.cache_write_tokens cache_creation_input_tokens Токены для создания или продления записи
Неиспользованный вход input_tokens - input_tokens_details.cached_tokens - input_tokens_details.cache_write_tokens (выводить осторожно) input_tokens после breakpoint Вход за пределами префикса; семантика различается
Корреляция ID запроса, модель и маршрут ID запроса, модель и маршрут Какая попытка провайдера создала usage

Синтетический пример, не telemetry Modelflare: R=720,000, W=80,000, U=200,000 дают допустимую долю 720,000 / 800,000 = 90%, но долю повторного использования всего входа 720,000 / 1,000,000 = 72%. Публикация одного числа скрывает знаменатель.

input_tokens_details.cache_write_tokens=0 не доказывает отсутствие кэша: чтение существующей записи не создаёт новую. Если сторонний ответ не содержит поле usage, это тоже не ноль, а сбой наблюдаемости, который нужно пометить как неаудируемый.

Почему путь агента теряет попадания при поддержке кэша моделью

Причина обычно находится между приложением и провайдером. Наиболее частые точки разрыва:

  • Динамические байты приходят слишком рано. Временная метка, ID запроса, пользователь, эксперимент или меняющаяся текущая дата изменяют префикс до повторно используемых инструкций.
  • Инструменты сериализуются заново. Добавление, удаление, перестановка или недетерминированная сериализация схемы инструмента меняет точный префикс; даже порядок JSON-ключей может дать miss.
  • Fallback меняет идентичность кэша. Балансировка между alias модели, регионами, организациями или credentials не использует одну общую запись.
  • Адаптер отбрасывает нативные настройки. Удаление cache_control, prompt_cache_key, retention или usage превращает возможность в невидимый best effort.
  • Промпт короче порога. Короткий ход агента может быть корректным, но не иметь права на кэширование.
  • Пройдено окно TTL. Пятиминутная запись Claude или зависящее от модели хранение OpenAI может истечь во время паузы человека.
  • Гонка параллельного прогрева. Первые одновременные запросы могут прийти до того, как первый ответ сделает запись доступной.
  • История переписывается. Суммаризация, compact, truncation или другая сериализация меняет префикс вместо добавления в конец.

Три формы запроса показывают, как чтения, записи и вход без кэша создают разные знаменатели

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

GPT и Claude используют похожую идею, но разную семантику

Обе системы требуют точного совпадения повторно используемого префикса, однако управление и учёт различаются. Таблица основана на официальных руководствах, проверенных 2026-08-25; имена моделей, минимумы и retention могут измениться.

Измерение Prompt caching OpenAI Prompt caching Claude
Единица повторного использования Полный отрендеренный префикс контекста: инструкции, инструменты, история и мультимодальные части Упорядоченный префикс до breakpoint cache_control: инструменты, system, сообщения
Минимальная длина Текущий гайд указывает 1 024 видимых токена для GPT-5.6+ и обычно 2 048 для старых моделей Зависит от модели, примерно 512–4 096 токенов; более короткие промпты не кэшируются
Управление Неявный кэш; явные breakpoints и стабильный prompt_cache_key на поддерживаемых моделях Автоматический кэш верхнего уровня или breakpoints блоков; до четырёх и lookback на 20 блоков
Хранение GPT-5.6+ поддерживает TTL 30 минут; старые модели имеют режимы с типичными окнами провайдера По умолчанию пять минут с обновлением при использовании; один час опционально и дороже при записи
Цена В текущем гайде GPT-5.6+: запись 1,25×, чтение 0,1× базового input Запись на пять минут 1,25×, на час 2×; чтение 0,1×
Доказательство usage input_tokens_details.cached_tokens и, если возвращается, input_tokens_details.cache_write_tokens cache_read_input_tokens, cache_creation_input_tokens и input_tokens после breakpoint
Частая инвалидация Изменение модели, инструментов или настроек, переполнение машины или изменение до breakpoint Изменение модели, system, инструментов или сообщений; отсутствует предыдущее сообщение или parallel warm-up miss

OpenAI отмечает, что записи находятся на отдельных машинах: prompt_cache_key помогает группировать и маршрутизировать, но не закрепляет машину и не гарантирует hit. Claude документирует точное совпадение, изоляцию на уровне workspace и диагностику tools_changed и messages_changed. Gateway, скрывающий эти различия, не может честно превратить документы провайдера в одну общую гарантию.

Мультипликаторы объясняют эффект. Для указанной модели OpenAI запись с последующим чтением стоит примерно 1.25 + 0.10 = 1.35× единицы input без кэша; десять полностью повторно использованных запросов — 1.25 + 9×0.10 = 2.15×, а не 10×. Это официальные иллюстративные расчёты, не счёт Modelflare и не гарантия для каждой модели.

Налог адаптера измерим

Используйте матрицу отказов, а не скриншот. Зафиксируйте промпт, модель, credentials и скорость; меняйте одну переменную и сохраняйте исходный объект usage.

Контролируемое изменение Ожидаемый сигнал Что может скрыть непрозрачный агент Вывод для выпуска
Добавить только ход пользователя R растёт после первого W Переписанную историю или новый маршрут Префикс сохранён
Добавить timestamp в system prompt R падает до нуля или появляется новый W Какие байты изменились Динамический префикс ломает кэш
Переставить свойство инструмента tools_changed или новая запись Поведение сериализатора Схема должна быть детерминированной
Разделить поток между alias или машинами R ниже и нестабильнее Выбранный маршрут и ключ Нет affinity
Ждать дольше документированного TTL Новая запись после истечения Время истечения и режим retention Паузы человека измерять отдельно
Параллельно отправить два одинаковых первых запроса Записать может один или оба Гонку прогрева и порядок попыток Холодный burst не показывает ёмкость

Сохраняйте ID запроса, режим streaming, время первого события, точную модель, маршрут, поля кэша и UTC timestamp. Редактируйте промпты, ключи и клиентские данные. Если gateway возвращает только нормализованную сумму input, пометьте запуск неаудируемым; отсутствующие измерения не являются выдуманными нулями.

Воспроизводимая запись аудита

Ниже приведён небольшой синтетический формат. Оболочка нейтральна, а usage сохраняет нативные поля. Это не benchmark.

{"request_id":"demo-001","timestamp":"2026-08-25T02:00:00Z","model":"MODEL_ID","route":"route-a","stream":true,"usage":{"input_tokens":1000000,"input_tokens_details":{"cached_tokens":0,"cache_write_tokens":1000000}}}
{"request_id":"demo-002","timestamp":"2026-08-25T02:00:03Z","model":"MODEL_ID","route":"route-a","stream":true,"usage":{"input_tokens":1000000,"input_tokens_details":{"cached_tokens":720000,"cache_write_tokens":80000}}}

Проведите минимум пять фаз: последовательный прогрев, диалог с добавлением, изменение dynamic system, изменение порядка инструментов и повтор после интервала TTL. Сохраняйте нативные поля чтения/записи каждого провайдера и сравнивайте R/(R+W) и R/(R+W+U) по фазе, маршруту, модели и UTC-дню. Одного смешанного числа недостаточно для production-решения.

Что гарантирует Modelflare и чего не гарантирует

Публичная страница статуса Modelflare сейчас описывает OpenAI Cache Hit Rate Guarantee. Для допустимых запросов, которые удовлетворяют требованиям кэша OpenAI и создают действительный кэш, дневная доля считается по календарному дню UTC. Если она ниже применимого уровня, разница компенсируется и показывается в Dashboard → Token Usage Analysis. Публичные уровни сейчас: 65%, 75% и 85%.

Три публичных уровня гарантии повышаются с 65 до 85 процентов

Граница намеренная:

  • Гарантия относится к допустимому действительному OpenAI-трафику, а не к коротким или постоянно меняющимся запросам, которые не проходят условия.
  • Она не превращает меняющиеся модель, schema инструмента, маршрут или TTL в повторно используемый префикс.
  • Расчёт выполняется по UTC-дню, а кредит отражается в документированном интерфейсе аккаунта; это не обещание hit для каждого запроса.
  • Нативные usage и расчёт eligibility остаются обязательными. Явный знаменатель делает компенсацию проверяемой.

Так отличается аудируемое обещание сервиса от слогана стороннего агента: первое называет популяцию, окно, порог и место кредита.

Преимущество цены и легитимность эксплуатации — разные доказательства

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

Публичные материалы о доверии и правовые документы называют Havenbyte LLC оператором и описывают работу как базирующуюся в США. В них Stripe указан как платёжный процессор для платежей, счетов, возвратов и антифрод-контролей. Это сигналы ответственности и хранения, но не заявление о регистрации в конкретном штате или сертификации.

Рекомендация для production-агентов

Выбирайте стороннего агента только после прохождения списка:

  • Он передаёт нативные настройки кэша и возвращает нативные чтения и записи.
  • Он сохраняет байты стабильного префикса инструкций и инструментов и добавляет динамическое состояние после него.
  • Он показывает модель, маршрут, границу организации/региона, режим TTL и ID запроса.
  • Он отдельно записывает последовательный и параллельный прогрев.
  • Он письменно определяет допустимый трафик, знаменатель, окно UTC, порог и компенсацию.
  • Он позволяет экспортировать доказательства по запросам без раскрытия ключей и клиентского содержимого.

Если любой ответ «нет», не используйте путь для workload, чья экономика зависит от повторного использования. Проведите эксперимент через прямой путь провайдера или выберите аудируемый gateway вроде Modelflare и используйте тот же корпус. См. также надёжную маршрутизацию AI API, учёт затрат AI API, цены и trust.

Источники и дата проверки

Эти первичные источники проверены 2026-08-25. Они описывают контракты провайдеров и текущую публичную политику Modelflare, но не доказывают универсальную долю попаданий неназванного стороннего агента.

FAQ: Низкая доля стороннего агента всегда означает мошенничество?

Нет. Причиной могут быть короткие промпты, меняющиеся префиксы, распределённые маршруты, истёкший TTL или отсутствующие поля. До контролируемого теста правильный вывод — «не воспроизводится» или «неаудируемо».

FAQ: Можно ли сравнить Claude и GPT одним числом?

Только после нормализации знаменателя и сохранения нативных полей. Сравнивайте один корпус и одну фазу, а не смешанное число панели.

FAQ: Компенсация отменяет необходимость стабильного префикса?

Нет. Компенсация ограничивает финансовый риск допустимого OpenAI-трафика с кэшем; она не делает недопустимый запрос повторно используемым и не исправляет агента, который переписывает префикс.