← Cloudflare Workers AI / workers-ai / features
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:
- Fáze prefill: zpracovává vstupní tokeny (systémové prompty, definice nástrojů, historie konverzace).
- 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:
- Statický obsah umístěte jako první. Systémové prompty, definice nástrojů a sdílené instrukce by měly být na začátku promptu. Obsah specifický pro uživatele nebo dynamický obsah (časová razítka, dotazy uživatele) umístěte na konec.
- Nepoužívejte časová razítka v systémových promptech. Pokud na začátek systémového promptu vložíte časové razítko, změní se prefix při každém požadavku, čímž se mezipaměť zcela znehodnotí. Je-li časový kontext potřeba, přidejte ho raději do uživatelské zprávy.
- Znovu využívejte definice nástrojů napříč požadavky. U agentů volajících funkce jsou nástroje součástí prefixu promptu. Když definice nástrojů zůstávají v rámci jedné relace mezi požadavky konzistentní, zvyšuje se opětovné využití mezipaměti.
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ů.