AI Prompt Engineering · Урок

Кэширование длинных префиксов

Контроль затрат с помощью кэширования подсказок

Урок 4 из 413 шагов

«Кэширование длинных префиксов» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Контекстные окна на миллион токенов
  2. Потеря информации в середине
  3. Структурирование огромных подсказок
  4. Кэширование длинных префиксов
← Назад к AI Prompt Engineering