INTEGRITY Документация

Кэширование промптов

Кэширование промптов, также называемое кэшированием префиксов, представляет собой оптимизацию производительности, которая позволяет Workers AI быстрее отвечать на запросы с промптами, использующими общие входные данные. Оно сокращает время до получения первого токена (TTFT) и повышает пропускную способность в токенах в секунду (TPS), используя повторно уже вычисленные входные тензоры вместо их пересчёта с нуля.

Кешированные входные токены оплачиваются со скидкой по сравнению с обычными входными токенами. Workers AI по умолчанию включает кеширование префиксов для отдельных моделей. Подробности о совместимости и стоимости приведены на странице каждой страница модели.

Как это работает

При обработке запроса LLM проходит через два этапа:

  1. Этап предзаполнения : обрабатывает входные токены (системные промпты, определения инструментов, история диалога).
  2. Этап вывода : генерирует выходные токены.

При кэшировании префиксов Workers AI сохраняет вычисленные входные тензоры, полученные на этапе prefill. В последующих запросах с тем же префиксом модель пропускает prefill для уже закэшированной части и обрабатывает только новые входные токены. Это существенно экономит вычислительное время, особенно для агентных рабочих нагрузок, где последовательные запросы используют значительный объём общего контекста.

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

Заголовок привязки сессии

Кэширование префиксов работает только тогда, когда запрос направляется на тот же экземпляр модели, где хранятся закэшированные тензоры. Чтобы повысить частоту попаданий в кэш, отправляйте x-session-affinity заголовок с уникальным идентификатором сессии или агента. Это направляет запросы с одинаковым идентификатором на один и тот же экземпляр модели, повышая вероятность попадания в кэш префиксов.

REST API

curl -X POST \
  "https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run/@cf/moonshotai/kimi-k2.5" \
  -H "Authorization: Bearer {api_token}" \
  -H "Content-Type: application/json" \
  -H "x-session-affinity: ses_12345678" \
  -d '{
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "What is prefix caching and why does it matter?"
      }
    ],
    "max_tokens": 2400,
    "stream": true
  }'

Привязка Workers AI

const response = await env.AI.run(
	"@cf/moonshotai/kimi-k2.5",
	{
		messages: [
			{ role: "system", content: "You are a helpful assistant." },
			{ role: "user", content: "Explain prefix caching." },
		],
	},
	{
		extraHeaders: {
			"x-session-affinity": "ses_12345678",
		},
	},
);

Структурирование промптов для кэширования

Кэширование префиксов сопоставляет точную последовательность токенов от начала промпта. Даже одно отличие в токене делает кэш недействительным начиная с этого места.

Чтобы увеличить количество попаданий в кэш:

Мониторинг токенов из кэша

Workers AI отображает количество закэшированных токенов в ответе usage объект. Используйте его, чтобы убедиться, что кэширование префиксов работает, и отслеживать экономию затрат. Первый запрос обычно выполняется без кэша, поэтому ожидается, что при первом обращении кэшированные токены не возвращаются. Из-за размера блока входные данные должны быть достаточно большими, чтобы попасть в кэш. Кэшированные токены оплачиваются по более низкой ставке, чем обычные входные токены, которые учитываются в общем количестве нейронов.