[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-it-llm-prompt-caching-measure-costs":3},{"id":4,"title":5,"author":6,"body":7,"cover":337,"description":338,"draft":339,"extension":340,"locale":341,"meta":342,"navigation":343,"path":344,"publishedAt":345,"seo":346,"seoTitle":347,"slug":348,"stem":349,"tags":350,"__hash__":352},"blog\u002Fit\u002Fblog\u002Fllm-prompt-caching-measure-costs.md","Prompt caching: struttura dei prompt e misura del risparmio","Manuel Tardivo",{"type":8,"value":9,"toc":324},"minimark",[10,31,36,47,54,71,75,104,108,149,156,160,168,240,253,261,280,284,295,299,306,310],[11,12,13,14,18,19,22,23,30],"p",{},"Diversi provider (OpenAI, Anthropic, Google, …) offrono o hanno offerto ",[15,16,17],"strong",{},"sconti o conteggi separati"," per prefissi di prompt riutilizzati—spesso chiamati “prompt caching”, “context caching”, o prezzi ridotti per block ripetuti. ",[15,20,21],{},"Le regole cambiano spesso",": questa guida tratta il metodo di misura, non cifre aggiornate. Apri sempre la ",[24,25,29],"a",{"href":26,"rel":27},"https:\u002F\u002Fopenai.com\u002Fapi\u002Fpricing\u002F",[28],"nofollow","pagina pricing"," e la doc “caching” del vendor attivo.",[32,33,35],"h2",{"id":34},"cosa-vuol-dire-cache-hit-lato-provider","Cosa vuol dire “cache hit” lato provider",[11,37,38,39,42,43,46],{},"In genere: un ",[15,40,41],{},"prefisso deterministico"," (system instructions lunghe, manuale tool, corpus RAG statico) che il provider ha già visto di recente viene fatturato con tariffe diverse dal testo “nuovo” inviato nel turno corrente. ",[15,44,45],{},"Non"," è una cache HTTP tua: è infra del vendor.",[11,48,49,50,53],{},"Fallimenti tipici ",[15,51,52],{},"false negative"," (l’hit non avviene):",[55,56,57,65,68],"ul",{},[58,59,60,61,64],"li",{},"Cambi anche ",[15,62,63],{},"un byte"," nello system prompt stabile (timestamp, UUID per richiesta).",[58,66,67],{},"Ordini diversamente chunk identici.",[58,69,70],{},"Usi modelli o endpoint dove la feature non è abilitata (verifica doc).",[32,72,74],{"id":73},"struttura-stabile-del-prompt","Struttura stabile del prompt",[76,77,78,89,96],"ol",{},[58,79,80,81,84,85,88],{},"Metti il ",[15,82,83],{},"massimo testo riutilizzabile"," nel ",[15,86,87],{},"system"," (o prefisso fisso) partendo da template immutabili.",[58,90,91,92,95],{},"Sposta variabili utente (domanda, file upload digest) ",[15,93,94],{},"dopo"," il blocco stabile—molti sistemi confrontano prefissi.",[58,97,98,99,103],{},"Evita stringhe dinamiche nel system (",[100,101,102],"code",{},"new Date()"," salvo necessità).",[32,105,107],{"id":106},"protocollo-di-misura-ab","Protocollo di misura (A\u002FB)",[76,109,110,120,130],{},[58,111,112,115,116,119],{},[15,113,114],{},"Baseline",": N richieste (es. 200) con payload reale ",[15,117,118],{},"senza"," tentativo di caching (o con system minimale).",[58,121,122,125,126,129],{},[15,123,124],{},"Cached",": stesse N richieste dopo aver ",[15,127,128],{},"pre-scaldato"," inviando almeno una richiesta identica per stabilire prefisso (se richiesto dal vendor).",[58,131,132,133,136,137,140,141,144,145,148],{},"Registra da ",[100,134,135],{},"usage"," (o dashboard billing export): ",[15,138,139],{},"input tokens totali",", eventuale breakdown ",[100,142,143],{},"cached_prompt_tokens"," se esposto, ",[15,146,147],{},"costo stimato"," con listino corrente.",[11,150,151,152,155],{},"Confronta ",[15,153,154],{},"media e p95"," del costo per richiesta, non solo la media—code con retry possono sporcare.",[32,157,159],{"id":158},"openai-numeri-e-telemetria-fonte-cookbook-guide-api","OpenAI: numeri e telemetria (fonte cookbook + guide API)",[11,161,162,163,167],{},"Il cookbook ufficiale ",[164,165,166],"em",{},"Prompt Caching 201"," riassume meccanismi verificabili:",[55,169,170,181,192,201,221],{},[58,171,172,173,176,177,180],{},"Hit affidabile solo se il ",[15,174,175],{},"prefisso byte-per-byte"," coincide con una richiesta recente; include system, tool definitions, ",[15,178,179],{},"schede structured output","—non solo testo libero.",[58,182,183,184,187,188,191],{},"Soglia pratica spesso citata: prompt ",[15,185,186],{},"≥ 1024 token",", cache in blocchi da ",[15,189,190],{},"128 token"," sul prefisso (dettaglio da ricontrollare quando OpenAI aggiorna la doc).",[58,193,194,195,200],{},"La risposta riporta ",[15,196,197],{},[100,198,199],{},"usage.prompt_tokens_details.cached_tokens"," (Chat\u002FResponses) per sapere quanti input token sono stati serviti dalla cache—misura lì, non stimando caratteri.",[58,202,203,204,209,210,215,216,220],{},"Parametro opzionale ",[15,205,206],{},[100,207,208],{},"prompt_cache_key"," (se abilitato nel tuo endpoint) migliora affinità di routing per traffico che condivide grandi prefissi—vedi ",[24,211,214],{"href":212,"rel":213},"https:\u002F\u002Fdevelopers.openai.com\u002Fdocs\u002Fguides\u002Fprompt-caching",[28],"guida Prompt caching"," e il cookbook ",[24,217,166],{"href":218,"rel":219},"https:\u002F\u002Fdevelopers.openai.com\u002Fcookbook\u002Fexamples\u002Fprompt_caching_201",[28],".",[58,222,223,224,227,228,231,232,235,236,220],{},"Il discount sul listino ",[15,225,226],{},"dipende dal modello"," (es. esempi tabellari nel cookbook: fino ~50% su ",[100,229,230],{},"gpt-4o"," cached input, fino ~90% sulle famiglie ",[100,233,234],{},"gpt-5.x"," mostrate lì)—rivalida sempre su ",[24,237,239],{"href":26,"rel":238},[28],"Pricing",[11,241,242,245,246,252],{},[15,243,244],{},"Engineering tip"," dal cookbook: spostare timestamp\u002Fdebug ",[15,247,248,249],{},"in ",[100,250,251],{},"metadata"," invece che nel system prompt stabile per non invalidare involontariamente la cache.",[32,254,256,257,260],{"id":255},"anthropic-cache_control-e-policy","Anthropic: ",[100,258,259],{},"cache_control"," e policy",[11,262,263,264,271,272,275,276,279],{},"Per Claude, la doc ",[24,265,268],{"href":266,"rel":267},"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fbuild-with-claude\u002Fprompt-caching",[28],[164,269,270],{},"Prompt caching"," descrive breakpoint espliciti (",[100,273,274],{},"cache_control: { type: \"ephemeral\" }",") o modalità automatica sulle conversazioni lunghe—TTL e prezzi sono listati lato Anthropic e differiscono da OpenAI. Valuta ",[15,277,278],{},"Zero Data Retention"," vs caching con il tuo account manager se applicabile.",[32,281,283],{"id":282},"ordini-di-grandezza","Ordini di grandezza",[11,285,286,287,290,291,294],{},"Il risparmio dichiarato dai vendor per workload ad alta ripetizione può essere ",[15,288,289],{},"moltiplicativo"," sul solo input statico; se il tuo prompt è per lo più domanda utente unica, ",[15,292,293],{},"non aspettarti miracoli",". Misura sempre.",[32,296,298],{"id":297},"privacy-e-invalidazione","Privacy e invalidazione",[11,300,301,302,305],{},"Contenuti sensibili nel prefisso cache condiviso multi-tenant possono essere problema compliance: verifica ",[15,303,304],{},"isolamento"," del tenant e retention dichiarata dal vendor.",[32,307,309],{"id":308},"sintesi","Sintesi",[11,311,312,315,316,319,320,323],{},[15,313,314],{},"Congela il prefisso",", metti variabilità in coda, ",[15,317,318],{},"misura prima\u002Fdopo"," con token effettivi dalla risposta API. Le percentuali marketing non sostituiscono ",[100,321,322],{},"usage.prompt_tokens_details"," (o equivalente) nei log.",{"title":325,"searchDepth":326,"depth":326,"links":327},"",2,[328,329,330,331,332,334,335,336],{"id":34,"depth":326,"text":35},{"id":73,"depth":326,"text":74},{"id":106,"depth":326,"text":107},{"id":158,"depth":326,"text":159},{"id":255,"depth":326,"text":333},"Anthropic: cache_control e policy",{"id":282,"depth":326,"text":283},{"id":297,"depth":326,"text":298},{"id":308,"depth":326,"text":309},"\u002Fblog\u002F24_llm_prompt_caching_measure_costs_1x.webp","Come impacchettare system e user prompt dove il provider fa caching, e un protocollo per stimare il risparmio sui token senza cifre inventate.",false,"md","it",{},true,"\u002Fit\u002Fblog\u002Fllm-prompt-caching-measure-costs","2026-06-07",{"title":5,"description":338},"Prompt caching: struttura e misura costi","llm-prompt-caching-measure-costs","it\u002Fblog\u002Fllm-prompt-caching-measure-costs",[351],"mvp","PwnUGEf314XqLlakOGv-EEMbNnvFzCBXGUehoywZT4k"]