Riduci il consumo di token (e i costi)
Paghi per ogni token in ingresso e per ogni token in uscita. La buona notizia: la maggior parte dei carichi di lavoro reali porta con sé peso morto — system prompt gonfi, contesto rinviato di continuo, risposte prolisse, il modello sbagliato per un compito facile. Eliminalo e il conto cala senza intaccare la qualità. Questa pagina è il toolkit per power user, ordinato grossomodo per leva.
- Dove i token si disperdono davvero — input vs output vs contesto riutilizzato
- Lo stile stringato / 'caveman': cosa risparmia davvero, e dove si ritorce contro
- Prompt caching e batching per risparmi strutturali a parità di dollaro
- Dimensionare correttamente il modello (Haiku per i compiti economici) e l'output strutturato al posto della prosa
- Misurare prima di andare in produzione con l'endpoint di conteggio dei token
Prima di tutto, trova dove finiscono i token
Prima di ottimizzare, suddividi la spesa in tre secchi — ognuno ha un rimedio diverso:
I rimedi si allineano in modo pulito: metti in cache il contesto riutilizzato, sfoltisci l'input, accorcia l'output, dimensiona correttamente il modello e raggruppa in batch ciò che non è urgente.
Lo stile stringato / "caveman" (risparmi sull'output)
La mossa virale è dire a Claude di eliminare il riempitivo e rispondere a frammenti — resa popolare dalla skill open-source per Claude Code caveman (con licenza MIT, di Julius Brussee), il cui slogan è "why use many token when few token do trick". Impone frasi brevi, verbi all'infinito e zero convenevoli.
La conclusione onesta dai test indipendenti: lo stile non costa nulla sul contenuto (codice, termini tecnici, JSON restano esatti) ma i risparmi dipendono interamente dalla tua baseline. Se i tuoi prompt dicono già "sii conciso", gran parte del guadagno è già incassata. Le riduzioni grosse (40–65%) si vedono nelle risposte ricche di spiegazioni; l'estrazione strutturata si muove a malapena.
Blocco di istruzioni snello — incollalo nel tuo system prompt
Answer terse. Cut filler, hedging, and pleasantries. Drop articles (a/an/the) and softeners (just, really, basically, actually). No preamble, no restating the question, no "happy to help." Fragments are fine. Keep technical terms and code blocks exact. Pattern per point: [thing] [action] [reason]. Next step if any.
- Metti la regola stringata una sola volta nel system prompt, non in ogni turno dell'utente — ripeterla ti fa ripagare il costo dell'input a ogni chiamata.
- Non comprimere mai codice, identificatori, JSON o numeri. Comprimi solo la prosa.
- 'Be concise. Return JSON only.' è di per sé circa il 60% del risparmio di output ottenibile — scrivilo prima di ricorrere a trucchi più sofisticati.
- Lo stile stringato riduce solo l'OUTPUT. Non fa nulla per un system prompt da 20k token che rinvii a ogni chiamata — quello è un problema di input/caching.
- Sui task con extended thinking, i token di ragionamento non sono toccati; riduci solo la risposta finale visibile.
Comprimi l'output dei tool prima che rientri nel contesto (RTK)
Caveman riduce ciò che Claude scrive. La perdita speculare nelle sessioni agentiche è ciò che Claude rilegge: ogni git status, npm test, ls -la o log di build che un coding agent esegue viene incanalato — header, barre di progresso e tutto il resto — dritto nella finestra di contesto come token di input al turno successivo. In una sessione lunga di Claude Code quel rumore di osservazione spesso supera il system prompt.
rtk ("Rust Token Killer", Apache-2.0, presente in homebrew-core) è un proxy CLI mirato esattamente a questo. rtk init -g installa un hook PreToolUse di Claude Code sul tool Bash (rtk hook claude) che riscrive in modo trasparente ogni comando in rtk <command> e comprime il suo output — eliminando header e rumore visivo, raggruppando righe simili, deduplicando le ripetizioni con contatori e troncando la ridondanza — prima che raggiunga il modello.
Installa RTK e collega l'hook globale (macOS)
brew install rtk # see the repo for cargo / other installers rtk init -g --hook-only # PreToolUse(Bash) hook only, no RTK.md file # undo anytime: rtk init -g --uninstall
Il flag --hook-only conta per il budget dei token: il rtk init di default scrive anche un file di istruzioni RTK.md che viene caricato in ogni sessione — un costo di input fisso che in parte combatte i risparmi. Hook-only mantiene la compressione dell'output e non aggiunge nulla al prefisso. Riavvia Claude Code dopo rtk init -g perché l'hook venga caricato.
- RTK e caveman sono complementari, non ridondanti: caveman comprime l'OUTPUT del modello, RTK comprime l'INPUT dei risultati dei tool (le osservazioni reimmesse a ogni turno). Impilarli copre entrambe le direzioni.
- L'hook scatta a ogni chiamata Bash e riscrive in modo trasparente — non cambi il modo in cui scrivi i prompt.
- Misura con la bolletta reale, non con il README. Se le tue sessioni sono povere di comandi shell, RTK ha poco da comprimere — il suo guadagno scala con quanto è rumoroso l'output dei tuoi tool.
Metti in cache il prefisso riutilizzato (risparmi sull'input)
Se molte chiamate condividono un grande blocco immutabile — un system prompt lungo, un catalogo di tool, un documento di riferimento — il prompt caching lo elabora una volta e lo riutilizza a una frazione del prezzo dell'input a ogni chiamata successiva. È il singolo cambiamento strutturale a più alta leva per i carichi di lavoro di chat e agent, perché ripaga a ogni turno.
L'unica regola: il prefisso in cache deve essere identico byte per byte tra le chiamate. Un timestamp vagante o una lista di tool riordinata vicino all'inizio fa silenziosamente crollare a zero il tuo hit rate. La meccanica completa, lo snippet cache_control da copiaincollare e come verificare gli hit si trovano in Prompt Caching e ottimizzazione dei costi.
- Sposta il system prompt, i tool e i documenti in cima; tieni alla fine il turno mutevole dell'utente.
- Allega cache_control all'ultimo blocco stabile in modo che l'intero prefisso venga messo in cache. Vedi lo snippet nella nostra pagina sul prompt caching.
- Leggi cache_read_input_tokens dal campo usage della risposta — maggiore di zero significa che stai risparmiando; zero su chiamate ripetute significa che c'è un invalidatore silenzioso.
Sfoltisci il contesto che invii
La cache riutilizza il contesto a basso costo, ma il token più economico è quello che non invii mai. Verifica cosa c'è davvero nella finestra:
- Sfoltisci il system prompt. I blocchi di istruzioni lunghi accumulano scorie. Taglia gli esempi che non si guadagnano più i loro token; tieni un esempio forte invece di cinque mediocri.
- Recupera, non scaricare. Invece di incollare un intero documento, recupera solo i passaggi pertinenti (RAG). Inviare un PDF di 50 pagine per rispondere a una sola domanda è lo spreco più comune.
- Compatta le sessioni lunghe. Quando una conversazione cresce, sostituisci i turni vecchi con un breve riepilogo progressivo invece di trascinarti dietro ogni messaggio per sempre. La cronologia è fatta di token di input che ripaghi a ogni chiamata.
- Dimensiona correttamente il catalogo dei tool. Ogni definizione di tool è fatta di token di input a ogni richiesta. Esponi solo i tool di cui il compito attuale ha bisogno.
- Comprimi i file di memoria statici.
CLAUDE.mde le note di memoria sono input riutilizzato che ripaghi a ogni sessione. Riscriverli in prosa "caveman" stringata (per esempio con il comandocaveman-compressdel plugincaveman) taglia una fetta — ma aspettati cifre a singola cifra su file già snelli: una passata pratica su unCLAUDE.mdcompatto di ~350 parole ha tagliato solo circa il 10%. La leva è reale ma piccola; non sacrificare la chiarezza delle istruzioni nella tua configurazione globale per inseguirla.
Dimensiona correttamente il modello
Non pagare le tariffe di Opus per un compito da Haiku. Classificazione, estrazione, formattazione semplice e routing di solito girano benissimo sul modello più piccolo a una frazione del prezzo per token. Riserva i modelli più grandi per i ragionamenti davvero difficili e valuta il routing: un modello economico gestisce la maggioranza facile, scalando solo i casi difficili. Vedi Scegliere un modello e Token, contesto e prezzi per i compromessi.
Preferisci l'output strutturato alla prosa
Chiedere JSON (o un altro schema stretto) invece di un paragrafo esplicativo taglia i token di output e elimina le congetture di parsing a valle. Dire a Claude di restituire solo un oggetto compatto come {"label": ..., "score": ...} genera una frazione dei token di una risposta chiacchierona — e salti del tutto il preambolo "Ecco il risultato:". Dettagli in Output strutturato.
Raggruppa in batch ciò che non è urgente
Per il lavoro offline in cui non ti serve una risposta in pochi secondi — eval, classificazione di massa, etichettatura di dataset, riassunto di un archivio — la Message Batches API di Anthropic esegue le richieste in modo asincrono con uno sconto del 50% sia sui token di input che di output, con risultati restituiti tipicamente entro 24 ore.
Combina questo con il caching e un modello dimensionato correttamente e lo sconto complessivo su un grande lavoro offline è drastico.
Misura — non tirare a indovinare
Ottimizza contro i numeri, non contro le sensazioni. L'endpoint di conteggio dei token di Anthropic restituisce il conteggio esatto dei token di input per una richiesta prima di inviarla — stessa forma di una chiamata Messages, ed è gratuito (con rate limit). Usalo per confrontare un prompt gonfio con uno sfoltito, per prendere decisioni di routing del modello e per tenere i prompt entro la finestra di contesto.
Conta i token prima di inviare (SDK Python)
import anthropic
client = anthropic.Anthropic()
resp = client.messages.count_tokens(
model="claude-opus-4-8",
system="You are a scientist",
messages=[{"role": "user", "content": "Hello, Claude"}],
)
print(resp.input_tokens) # exact input count, no charge for counting- Non usare il tokenizer di un altro modello (es. tiktoken) — i conteggi differiscono per famiglia di modelli. Usa l'endpoint di Anthropic.
- I tokenizer più recenti possono produrre circa il 30% di token in più per lo stesso testo rispetto ai modelli più vecchi — riconta quando migri, non riutilizzare vecchie stime.
- Leggi input_tokens, cache_read_input_tokens e output_tokens dal campo usage della risposta per confermare che i risparmi siano arrivati in produzione.
Vedi Token, contesto e prezzi per le regole di conteggio e la formula di stima dei costi.
Un prima/dopo, dall'inizio alla fine
Un assistente di triage del supporto esegue lo stesso system prompt da 4.000 token + catalogo di tool su ogni ticket e scrive una risposta chiacchierona da 600 token.
- ~4.000 token di input rinviati a prezzo pieno a ogni chiamata + ~600 token di output prolisso, su un modello grande. Niente in cache, sincrono, risposte in prosa.
- Segna il blocco system+tools da 4.000 token con cache_control. Dopo la prima chiamata viene servito come cache read a una frazione del prezzo dell'input.
- Sposta il triage su un modello piccolo ed esigi solo JSON ({"category", "priority", "reply"}). L'output scende da ~600 token di prosa a ~120.
- I riempimenti notturni dei ticket passano per la Batches API allo sconto del 50% invece che per chiamate sincrone.
Ogni leva è moltiplicativa: input in cache × modello più piccolo × output più stringato × sconto batch si compone in una riduzione totale ampia — mentre la qualità della risposta su questo compito facile resta invariata. Misura ogni passo con count_tokens così puoi dimostrare il guadagno invece di darlo per scontato.
Mettiti alla prova
0/4- Suddividi la spesa in input, output e contesto riutilizzato — ogni secchio ha un rimedio diverso.
- Lo stile stringato/'caveman' taglia solo l'output; i guadagni sono grossi sulla prosa, piccoli sui task strutturati già concisi.
- Metti in cache il prefisso stabile (identico byte per byte) per risparmi sull'input a parità di dollaro a ogni chiamata.
- Sfoltisci il contesto, dimensiona correttamente il modello e preferisci JSON alla prosa — guadagni economici e cumulativi.
- Raggruppa in batch il lavoro non urgente per uno sconto del 50%, e misura sempre con count_tokens invece di tirare a indovinare.
Fonti e approfondimenti
- JuliusBrussee/caveman — la skill open-source "caveman" per Claude Code (MIT, di Julius Brussee); dichiara una riduzione media dei token di output di circa il 65%.
- "I Benchmarked the Viral 'Caveman' Prompt…" — DEV Community — benchmark indipendente che rileva circa il 9–21% sui task strutturati e un'alternativa più snella di 6 righe.
- rtk-ai/rtk — proxy CLI "Rust Token Killer" (Apache-2.0, in homebrew-core); comprime l'output dei comandi di dev tramite un hook PreToolUse su Bash; dichiara 60–90% sui comandi comuni.
- RTK Hook Increases Claude Code Costs by 18% — rtk-ai/rtk #582 — controevidenza che l'hook può aumentare il costo totale in alcuni setup; misura prima di fidarti della cifra di copertina.
- Token counting — documentazione Anthropic — l'endpoint
count_tokense le note sul tokenizer per modello. - Prompt caching — documentazione Anthropic — meccanica della cache, idoneità e prezzi.
- Introducing the Message Batches API — Anthropic — elaborazione asincrona con uno sconto del 50%.
- Pricing — documentazione Anthropic — tariffe attuali per token per modello.