INTEGRITY Dokumentace

Cachování promptů

Cachování promptů (nazývané také cachování prefixů) je optimalizace výkonu, díky které Workers AI reaguje na požadavky se sdílenými vstupy rychleji. Snižuje dobu do prvního tokenu (TTFT) a zvyšuje propustnost v tokenech za sekundu (TPS) tím, že opakovaně využívá již vypočtené vstupní tenzory místo jejich zpracování od začátku.

Vstupní tokeny z cache jsou účtovány se zvýhodněnou sazbou oproti běžným vstupním tokenům. Workers AI ve výchozím nastavení umožňuje u vybraných modelů cachování prefixů. Podrobnosti o kompatibilitě a cenách najdete na stránce každého stránka modelu.

Jak to funguje

Když LLM zpracovává požadavek, prochází dvěma fázemi:

  1. Fáze prefill: zpracovává vstupní tokeny (systémové prompty, definice nástrojů, historie konverzace).
  2. Výstupní fáze: generuje výstupní tokeny.

Díky prefix cachingu Workers AI ukládá vypočtené vstupní tenzory z fáze prefill. U následujících požadavků se stejným prefixem model přeskočí prefill pro uloženou část a zpracuje pouze nové vstupní tokeny. To výrazně šetří výpočetní čas, zejména u agentních úloh, kde po sobě jdoucí požadavky sdílejí velké množství kontextu.

Když kódovací agent odešle nový prompt, obvykle spolu s ním znovu odesílá i všechny předchozí prompty, definice nástrojů a historii konverzace. Rozdíl mezi po sobě jdoucími požadavky přitom často tvoří jen pár nových řádků. Prefix caching díky tomu eliminuje zbytečné opakované zpracování (prefill) celého sdíleného kontextu.

Hlavička afinity relace

Prefix caching funguje pouze tehdy, pokud je požadavek směrován na stejnou instanci modelu, která uchovává cachované tenzory. Chcete-li maximalizovat míru zásahů do cache, zašlete x-session-affinity hlavičku s jedinečným identifikátorem vaší relace nebo agenta. Tím se požadavky se stejným identifikátorem směrují na stejnou instanci modelu, což zvyšuje pravděpodobnost zásahu do prefixové cache.

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
  }'

Vazba 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",
		},
	},
);

Strukturování promptů pro cachování

Prefix caching porovnává přesnou sekvenci tokenů od začátku promptu. Jediný rozdílný token od daného místa dál cache znehodnotí.

Chcete-li maximalizovat počet zásahů do cache:

Sledování tokenů z cache

Workers AI zobrazuje počty tokenů z cache v odpovědi usage objekt. Pomocí něj ověříte, že prefixová cache funguje, a sledujete úsporu nákladů. První požadavek bývá obvykle studený, takže se očekává, že se při prvním zásahu nevrátí žádné cachované tokeny. Vstupy musí být kvůli velikosti bloku dostatečně velké, aby mohly být uloženy do cache. Cachované tokeny se účtují nižší sazbou než běžné vstupní tokeny, které se započítávají do počtu vašich neuronů.