Сергей Нотевский
Кеширование
English version

Prefix Cache

Как форма промпта, схемы инструментов и маршрутизация определяют, будет ли кеш работать в production.

Глубокий разбор
v0.1
Обновлено 23 мая 2026 г.
Руководители ИИ-платформ
Staff-инженеры
ML Platform-инженеры
prefix-cache
prompt-cache
kv-cache
tools
Хранится только в этом браузере.

Проблема

Кеш может быть включён, но cached_tokens остаётся низким. Часто проблема не в провайдере, а в форме запроса.

Симптомы

  • Временная метка, request ID или поля тенанта появляются в начале.
  • Списки инструментов меняют порядок или содержимое между шагами.
  • Агентские циклы используют короткие динамические промпты, которые становятся дороже после cache miss.
  • Round-robin маршрутизация размазывает прогретые префиксы по репликам.

Ментальная модель

Prefix cache требует три вещи: начало должно совпадать, запрос должен попасть туда, где префикс прогрет, и кеш должен жить достаточно долго для повторного использования.

Архитектура

Стабилизируй системный промпт, схемы инструментов и форматы ответа. Динамические поля перенеси поздно или в метаданные. Используй каноническую сериализацию. По возможности сохраняй историю append-only. Повторяющиеся префиксы направляй через affinity или prefix-aware маршрутизацию.

Метрики

Отслеживай кешированные токены, cache read input tokens, хеш префикса, число инструментов, версию схемы, TTFT, маршрут, реплику, версию промпта, число прогревов и признаки вытеснения кеша.

Компромиссы

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

Agentic tool surface

В агенте нельзя оптимизировать один запрос в отрыве от всей траектории. Динамический отбор tools выглядит дешевле на одном шаге, но если он меняет ранний prefix, агент начинает платить за cache miss на каждом следующем шаге. Сначала стабилизируйте prefix, потом уменьшайте prompt.

ПаттернРискЛучше
Dynamic tools на каждом шагеновый prefix_hashstable tools + masking
Разный порядок toolscache miss без смыслового измененияcanonical order
request_id в schemaуникальный prefixtrace metadata вне prompt
route-specific system promptfragmentationprompt families
tool filtering без проверок качествадешевле, но хуже качествоrouter eval + cache metrics

Self-hosted нюанс

В self-hosted контуре cache hit rate зависит не только от формы промпта, но и от планировщика, sticky routing, числа реплик, разделения prefill/decode и политики прогрева. После scale-out обычный round-robin может снизить кешируемость сильнее, чем изменение промпта.

Анти-паттерны

  • Текущее время в первых системных токенах.
  • Плавающий порядок tools из неупорядоченного реестра.
  • Динамический requestId внутри JSON-схемы.
  • Переписывание начала истории вместо append-only роста.
  • Параллельный fan-out до прогрева общего префикса.
  • Обычный round-robin для длинных общих префиксов.

Чеклист

  • Стабильные инструкции и схемы стоят первыми.
  • Динамические поля находятся поздно или вне кешируемого префикса.
  • Инструменты и форматы ответа сериализуются детерминированно.
  • Логи маршрута агента включают prefix_hash и tools_count.
  • Регрессии кеша поднимают алерт при падении cached tokens и росте TTFT.

Пример

В многошаговом агенте команда уменьшала набор инструментов на каждом шаге. Сырой промпт стал короче, но cached_tokens упали почти до нуля: порядок и состав инструментов начали менять начало запроса. Стабильное объявление инструментов и разрешённые инструменты на уровне маршрута вернули повторное использование кеша без лишнего раскрытия инструментов модели.

Шаблон решения

Для изменения кеша запиши форму промпта до и после, стабильность хеша префикса, распределение кешированных токенов, TTFT, стоимость задачи и влияние на качество.

Связанные главы

On this page