⚡ Кэширование промптов в LLM: Понятное объяснение
Оригинал статьи: Prompt caching in LLMs, clearly explained
Краткий обзор
Регулярная обработка длинного контекста «съедает» бюджет и увеличивает задержку. Prompt Caching решает это, сохраняя состояние статических частей промпта (инструкции, инструменты). Это дает 90% скидку на токены и мгновенный отклик в длинных сессиях.
🛑 Проблема: Избыточные вычисления
В стандартном сценарии работы LLM (особенно в чатах или с агентами) вы отправляете историю диалога и инструкции в каждом новом запросе.
Проблема в том, что модель заново вычисляет векторы для всей этой истории при каждом «ходе», даже если 90% текста не изменилось. Это приводит к двум последствиям:
- Высокая стоимость: Вы платите полную цену за токены, которые модель уже «видела».
- Задержка (Latency): Модели нужно время на «префиксную обработку» (prefill), прежде чем она начнет генерировать первый токен ответа.
✅ Решение: Prompt Caching
Prompt Caching позволяет модели повторно использовать математическое состояние (KV-кэш) для статической части вашего промпта.
Вместо того чтобы пересчитывать всё заново, сервер просто «вспоминает» вычисления для начального блока текста. Это радикально ускоряет старт генерации и снижает затраты.
Как это устроено технически:
Инференс LLM делится на две фазы:
- Prefill Phase (Фаза предварительного заполнения): Обработка входного промпта. Эта фаза ограничена вычислительной мощностью (compute-bound).
- Decode Phase (Фаза декодирования): Генерация токенов по одному. Эта фаза ограничена пропускной способностью памяти (memory-bound).
🖼️ Ссылка на схему фаз инференса
🛠 Механизм работы
Когда вы отправляете промпт, сервер разбивает его на токены и вычисляет хэш для префикса.
- Если хэш префикса совпадает с тем, что уже хранится в кэше — происходит Cache Hit.
- Система подгружает готовые пары Ключ-Значение (KV pairs) из памяти и сразу переходит к генерации ответа.
Это переводит сложность обработки входа с на практически мгновенное извлечение из памяти.
🖼️ Ссылка на визуализацию работы KV-кэша
💰 Экономический эффект
Использование кэширования меняет правила игры в стоимости эксплуатации ИИ. На примере моделей Anthropic:
- Чтение из кэша (Cache Read): стоит в 10 раз дешевле, чем обычный ввод токенов.
- Запись в кэш (Cache Write): стоит на ~25% дороже базы (наценка за хранение состояния).
Кейс Claude Code
Представьте 30-минутную сессию кодинга, где вы постоянно дополняете контекст.
- Без кэша: Стоимость сессии составила бы $6.00.
- С кэшем: Итоговый счет — $1.15.
- Результат: Экономия более 80% при мгновенном отклике.
🏗 Золотое правило архитектуры промпта
Кэширование работает только для префикса (начала промпта). Любое изменение в середине текста делает весь последующий кэш невалидным.
❌ Ошибки, ломающие кэш:
- Помещение динамических данных (дата, время, имя пользователя) в начало системного промпта.
- Изменение порядка инструментов (tools) в списке.
- Добавление новых инструкций в середину блока.
✅ Идеальная структура промпта:
Для максимальной эффективности располагайте данные в строгом порядке от самых статичных к самым динамичным:
- Системные инструкции (почти никогда не меняются).
- Определения инструментов / MCP (меняются редко).
- Справочные материалы / Документация (статичны в рамках сессии).
- История диалога и текущий запрос (динамическая часть — всегда в конце).
🖼️ Ссылка на инфографику правильной структуры промпта
🔗 Связи
Теги: promptcaching translation llmops optimization avichawla