Правила prompt caching

Чему научитесь

Видео 6:41 и текст урока

К концу урока вы сможете:

Видео и текст урока.

Смотреть урок на Skilljar Rules of prompt caching · 6:41

Prompt caching в Claude сохраняет вычислительную работу над вашими сообщениями, чтобы её можно было переиспользовать в следующих запросах. Это делает повторные запросы быстрее и дешевле, но только когда вы снова и снова отправляете одинаковое содержимое.

Claude записывает работу в кеш при первом запросе и читает её при повторном.
Первый запрос записывает работу в кеш, повторный — читает.

Процесс простой: первый запрос записывает работу в кеш, а следующие могут читать из кеша, не обрабатывая то же содержимое заново. Кеш живёт час, поэтому возможность полезна, только если вы повторно отправляете одно и то же в течение этого времени.

Точки кеширования

Кеширование не включается само — нужно вручную добавить точки кеширования (cache breakpoints) к определённым блокам сообщений. Как это работает:

Сообщение пользователя с длинным текстовым блоком и полем cache_control с type ephemeral — точка кеширования.
Длинный текстовый блок с полем cache_control: {"type": "ephemeral"} — это и есть точка кеширования.

Чтобы добавить точку кеширования, нужна полная форма записи текстового блока вместо краткой:

Краткая форма user_message с content «Hi there!» рядом с полной: текстовый блок и cache_control ephemeral.
Краткая форма ("content": "Hi there!") и полная — со списком блоков и cache_control.

В краткой форме негде указать поле кеширования, поэтому нужна развёрнутая форма с полем cache_control, равным {"type": "ephemeral"}.

Как работают точки кеширования

Когда вы ставите точку кеширования в сообщение, Claude кеширует всю работу до этой точки включительно. Содержимое после точки обрабатывается обычно, без кеша.

Работа над блоком «Summarize this» с точкой кеширования кешируется, а над следующим блоком «Focus on» — нет.
Блок «Summarize this» с точкой кеширования попадает в кеш, следующий блок «Focus on» — нет.

Чтобы кеш пригодился в следующих запросах, содержимое до точки должно совпадать полностью. Даже маленькое изменение — например, добавленное слово «please» — делает кеш недействительным, и Claude обработает всё заново.

Точка стоит в последнем сообщении пользователя, поэтому работа над предыдущими сообщениями пользователя и ассистента тоже кешируется.
Точка в последнем сообщении — значит, кешируются и все предыдущие сообщения.

Кеш через несколько сообщений

Точки кеширования действуют через несколько сообщений и типов сообщений. Если поставить точку в более позднем сообщении, все предыдущие (пользователя, ассистента и т. д.) войдут в кешируемое содержимое.

Точка на последнем сообщении «Focus the summary on», Claude читает кеш для всех трёх сообщений.
Точка на сообщении «Focus the summary on» — из кеша читаются все три сообщения.

Это особенно полезно в разговорах, где нужно закешировать весь контекст до определённого момента.

System prompt и инструменты

Точки кеширования можно ставить не только в текстовые блоки, но и в:

Поле cache_control ephemeral в последнем описании инструмента и в блоке system prompt — кешируются оба.
cache_control на последнем инструменте и в блоке system prompt — кешируются оба.

System prompt и описания инструментов — отличные кандидаты для кеша: между запросами они почти не меняются. Чаще всего именно здесь prompt caching даёт наибольшую выгоду.

Порядок кеширования

Внутри Claude обрабатывает части запроса в определённом порядке: сначала инструменты, потом system prompt, потом сообщения. Понимание этого порядка помогает правильно расставлять точки.

Tool 3 — точка кеширования в запросе 1, выше system prompt и сообщений; в запросе 2 только Tool 1–3.
Точка на Tool 3 в запросе 1 кеширует все инструменты, которые идут перед system prompt и сообщениями.

Всего можно поставить до четырёх точек кеширования. Например, закешировать инструменты, а другую точку поставить посреди истории разговора. Это даёт гибкость в том, что кешируется, когда разные части запроса меняются.

Точки в запросе 1 — на tool 3 и на сообщении ассистента; запрос 2 повторяет tools 1–3 и точку на tool 3.
Две точки: на Tool 3 и на сообщении ассистента. Во втором запросе совпадает только часть до точки на Tool 3.

Минимальный размер

Для кеширования есть минимальный порог: содержимое должно быть не меньше 1024 токенов. Считается сумма всех сообщений и блоков, которые вы пытаетесь закешировать, а не отдельные блоки.

Два примера: один блок «Hi there!» не записывается в кеш, а «Hi there!», повторённое 500 раз, кешируется.
Один «Hi there!» не кешируется, а «Hi there!», повторённое 500 раз, — уже да.

Простое сообщение «Hi there!» до порога не дотягивает, но если повторить его 500 раз (или у вас действительно длинный промпт), набирается больше 1024 токенов, и содержимое можно кешировать.

Ключ к эффективному prompt caching — определить, какие части запросов не меняются от вызова к вызову, и расставить точки так, чтобы максимально переиспользовать кеш и как можно реже его сбрасывать.

Дальше

Следующий урок — prompt caching в коде: кеш инструментов и system prompt, поля usage.

Оригинал урока: Rules of prompt caching.