Кэширование длинных префиксов
Контроль затрат с помощью кэширования подсказок
«Кэширование длинных префиксов» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.
Зачем существует кэширование префикса
Каждый длинный промпт требует затрат на предварительную обработку: его токены нужно закодировать до начала генерации. Когда один и тот же длинный префикс повторяется во множестве вызовов — системный промпт, спецификация инструмента, большой справочный документ — кэширование промпта позволяет провайдеру повторно использовать уже вычисленное состояние внимания вместо его повторного вычисления.
- Попадания в кэш значительно сокращают задержку и стоимость входных данных.
- Экономия растёт вместе с размером префикса и частотой его повторного использования.
Кэширование привязано к префиксу
Кэши используют для ключа точное совпадение префикса токенов от начала промпта. Кэшируемый фрагмент продолжается от начала до первой точки расхождения. Измените что-либо в начале — и всё после этого места не попадёт в кэш.
Следствие: для максимального числа попаданий сначала размещайте наиболее стабильное содержимое, а наиболее изменчивое — в конце.
# Cache reuse covers: [identical prefix .... first difference)
# One early edit invalidates the whole downstream cache.Упорядочивайте по стабильности
Расположите содержимое от самого стабильного к самому изменчивому: неизменяемые системные правила и определения инструментов, затем большие стабильные справочные материалы, затем стабильный в рамках сеанса контекст, а в конце — изменчивые входные данные и вопрос для конкретного запроса.
- Стабильное → в начало (можно кэшировать).
- Изменчивое → в конец (только эта часть вычисляется заново).
Именно этот принцип упорядочивания обеспечивает большинство преимуществ кэширования.
prompt = [
SYSTEM_RULES, # never changes
TOOL_SPECS, # rarely changes
REFERENCE_CORPUS, # stable for the session
USER_TURN # changes every call -> keep last
]Точки разрыва кэша
Некоторые провайдеры позволяют отмечать явные точки разрыва кэша. Размещайте их в конце каждого стабильного сегмента, чтобы система могла кэшировать содержимое до этой точки. Отмечайте как кэшируемый самый большой стабильный блок — справочный корпус или длинный системный промпт.
Даже без явных маркеров соблюдайте порядок стабильности в структуре, чтобы неявное сопоставление префиксов всё равно помогало.
blocks = [
{'text': SYSTEM_RULES, 'cache': True},
{'text': REFERENCE_CORPUS, 'cache': True}, # big win
{'text': user_turn} # uncached
]Остерегайтесь скрытого дрейфа префикса
Незаметные непреднамеренные изменения молча нарушают кэширование: временная метка в системном промпте, идентификатор конкретного запроса, добавленный в начале, переупорядоченные определения инструментов или недетерминированный порядок ключей JSON. Каждое такое изменение сдвигает префикс и вынуждает полностью пересчитывать его.
Проверьте префикс на наличие всего, что меняется между вызовами, и переместите это после кэшируемой области.
# BAD: dynamic value early -> kills cache
# system = 'Session ' + str(uuid4()) + ' rules: ...'
# GOOD: keep system static; put the id in the tail user turn.TTL и время жизни кэша
Срок действия кэша истекает через заданное провайдером время жизни; при каждом попадании в кэш этот срок часто продлевается. При слишком редких вызовах промахи холодного кэша повторяются. Для прерывистой высокочастотной нагрузки кэширование окупается, а при редких разрозненных вызовах кэш может истечь между использованиями.
Сопоставляйте характер трафика с TTL и рассмотрите возможность отправки поддерживающих активность запросов для ценных префиксов.
Экономическая модель кэширования
Обычно кэширование немного увеличивает стоимость записи записи в кэш и значительно снижает стоимость её чтения. Экономика кэширования благоприятствует повторному использованию: затраты на одну запись, распределённые между множеством чтений, дают большую чистую экономию; однократное использование, при котором выполняется только запись, может обойтись немного дороже.
- Высокая доля повторного использования → активно используйте кэш.
- Префиксы для однократного использования → кэширование может не окупиться.
def worth_caching(prefix_tokens, expected_reuses, write_mult, read_mult):
no_cache = expected_reuses
cached = write_mult + read_mult * (expected_reuses - 1)
return cached < no_cache # in normalized prefix-cost unitsПроектирование стабильных блоков системы
Сделайте системный промпт и спецификации инструментов детерминированными и зафиксируйте их версии. Сортируйте определения инструментов в каноническом порядке, не встраивайте изменяющиеся данные и меняйте их только в рамках запланированных выпусков. Стабильный системный блок становится долго живущей записью кэша с большим числом попаданий, общей для всех запросов.
Рассматривайте кэшированный префикс как артефакт с версией, а не как строку, которую можно небрежно менять.
TOOLS = sorted(tool_defs, key=lambda t: t['name']) # canonical order
SYSTEM_VERSION = 'v3' # change deliberately, not per requestКэширование в многошаговых агентах
В циклах агента растущий диалог естественным образом становится кэшем: каждый шаг расширяет префикс, который повторно используется на следующем шаге. Добавляйте новые шаги в конец и никогда не переписывайте предыдущие, чтобы прежний кэш оставался действительным.
Если необходимо сократить диалог, делайте это так, чтобы для последующих шагов создавался новый стабильный префикс, а старые префиксы не изменялись многократно.
Измерение эффективности кэширования
Добавьте измерение. Большинство провайдеров сообщают число кэшированных и некэшированных входных токенов для каждого вызова. Отслеживайте долю попаданий в кэш и, если она мала, проверьте префикс на наличие дрейфа. Ухудшение этой доли обычно указывает на недавно добавленное изменяющееся значение в начале промпта.
- Записывайте соотношение кэшированных входных токенов к общему числу входных токенов.
- Настройте оповещение, если после развёртывания доля попаданий в кэш снижается.
hit_rate = usage['cache_read_input_tokens'] / max(1, usage['input_tokens'])
assert hit_rate > 0.6, 'prefix drift suspected'Структура промпта с учётом кэширования
Чтобы контролировать стоимость длинных префиксов, располагайте содержимое по степени стабильности, отмечайте самый большой стабильный блок как точку кэширования, устраняйте скрытый дрейф, фиксируйте версии системных блоков и блоков инструментов, используйте только добавление в циклах агентов и отслеживайте долю попаданий в кэш. Цель — один большой пригодный для повторного использования префикс и небольшой изменяющийся хвост, пересчитываемый при каждом вызове.
Быстрая проверка
Вы повторно используете корпус справочных материалов объёмом 100 тыс. токенов в тысячах ежедневных запросов, но доля попаданий в кэш близка к нулю.
Итоги: кэширование длинных префиксов
Кэширование промптов повторно использует предварительное заполнение для точного стабильного префикса, резко сокращая задержку и стоимость входных данных при частом повторном использовании. Располагайте сначала наиболее стабильное содержимое, отмечайте большой стабильный блок как точку кэширования и переносите всю изменчивость в конец. Устраняйте скрытый дрейф, фиксируйте версии системных блоков и блоков инструментов, используйте только добавление в циклах агентов и отслеживайте долю попаданий в кэш, чтобы ухудшение показателя указывало на недавно добавленное изменяющееся значение в начале.
Изучай AI Prompt Engineering с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 53
- Уроки
- 199
Часто задаваемые вопросы
Урок «Кэширование длинных префиксов» бесплатный?
Да — полный текст урока «Кэширование длинных префиксов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.
Чему я научусь в уроке «Кэширование длинных префиксов»?
Контроль затрат с помощью кэширования подсказок Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Prompt Engineering?
Предыдущий опыт не требуется. AI Prompt Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Кэширование длинных префиксов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Prompt Engineering?
Да. Каждый урок AI Prompt Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Контекстные окна на миллион токенов
- Потеря информации в середине
- Структурирование огромных подсказок
- Кэширование длинных префиксов