Одна строка в системном промпте отключает кеш: экономия до 98 % при правильном запросе
Динамический элемент вроде текущей даты в системном промпте ломает кеш‑префиксное дерево, из‑за чего почти весь запрос берётся без кеша, а стоимость токенов возрастает в 10‑31 раз (DeepSeek, OpenAI).
Что случилось?
Исследователи из Habr AI обнаружили, что небольшая строка с меняющимся значением в системном промпте полностью отключает кеш‑механизм большинства провайдеров LLM. Пример – строка Current time: {datetime.now()} в начале системного промпта. Она меняется уже на четвёртом слове, и кеш‑префиксное дерево, построенное по токенам, перестаёт находить совпадения.
Как работает кеш провайдера?
Большинство сервисов (DeepSeek, OpenAI и др.) хранят недавно использованные токены в префиксном дереве. При запросе система сравнивает последовательность токенов с тем, что уже есть в кеше, и если первые N токенов совпадают, они берутся бесплатно. Как только встречается первое расхождение, все последующие токены считаются «новыми» и тарифицируются по полной цене.
Цифры
- DeepSeek: $0.44 / млн токенов без кеша → $0.014 / млн токенов с кешем (экономия ≈ 97 %).
- OpenAI: $4.00 / млн токенов без кеша → $0.40 / млн токенов с кешем (экономия ≈ 90 %).
То есть стоимость токена может вырасти в 10‑31 раз, если кеш отключён.
Почему это важно?
На живых вызовах (production) большинство запросов содержат статическую часть – политику, базу знаний, часто повторяющиеся инструкции. Если в начале промпта добавить даже один динамический токен, все эти тысячи токенов будут тарифицироваться полностью, что быстро приводит к неожиданному росту расходов.
Как избежать?
- Убирайте любые динамические данные из системного промпта (время, случайные числа, ID сессии).
- Переносите их в пользовательский ввод, где они не влияют на кеш.
- При необходимости используйте placeholder‑токены и подставляйте значения позже в отдельном этапе обработки.
Более детальное описание и примеры доступны в оригинальной статье на Habr AI.
Для разработчиков AI‑приложений это напоминание о том, что даже небольшие динамические фрагменты в системных промптах могут полностью разрушить кеш‑экономию. Переносите переменные в пользовательскую часть запроса, проверяйте стоимость запросов в режиме теста и фиксируйте шаблоны промптов без «живых» токенов – иначе расходы могут взлететь в десятки раз.
