Home Fondamenti Token Modelli AI Deep Learning Tecniche RAG RAG Avanzato MCP Orchestrazione Prompt Engineering Usare l'AI ChipsBot News

Cos’è un Token

Il concetto che tutti danno per scontato ma che determina costi, limiti e comportamento di ogni modello AI. Se lavori con LLM, devi capire i token.

La definizione (quella vera)

Un token è l’unità atomica di testo che un modello linguistico vede, elabora e produce. Non è una parola. Non è un carattere. È qualcosa nel mezzo: un pezzo di testo statisticamente frequente, determinato dall’algoritmo di tokenizzazione usato durante l’addestramento.

La regola pratica più usata è questa: 1 token ≈ 4 caratteri in inglese, ovvero circa ¾ di parola. In italiano e nelle altre lingue romanze il rapporto è leggermente peggiore: le parole tendono ad essere più lunghe e il vocabolario del tokenizzatore è sbilanciato sull’inglese.

Regola pratica rapida
100 token ≈ 75 parole in inglese ≈ 60–65 parole in italiano.
1 pagina A4 di testo ≈ 400–600 token.
1 romanzo medio (∼80.000 parole) ≈ 110.000 token.

Come funziona la tokenizzazione

I modelli moderni usano principalmente Byte Pair Encoding (BPE) o varianti simili (SentencePiece, WordPiece). L’idea di base: partendo dai singoli byte, si fondono iterativamente le coppie di simboli più frequenti nel corpus di addestramento, finché non si raggiunge la dimensione del vocabolario desiderata (tipicamente 32.000–200.000 token).

Il risultato è che parole comuni diventano un singolo token, mentre parole rare o costruzioni insolite vengono spezzate in più pezzi.

Esempi concreti

Vediamo come GPT-4 (tokenizzatore cl100k_base) divide alcune frasi:

"Ciao mondo"          → ["Ci", "ao", " mondo"]          = 3 token
"Hello world"         → ["Hello", " world"]             = 2 token
"tokenizzazione"      → ["token", "iz", "zazione"]      = 3 token
"tokenization"        → ["token", "ization"]            = 2 token
"ChatGPT"             → ["Chat", "G", "PT"]             = 3 token
"API"                 → ["API"]                         = 1 token
"12345"               → ["123", "45"]                   = 2 token
"2026"                → ["2026"]                        = 1 token
"https://example.com" → ["https", "://", "example", ".com"] = 4 token

Nota il divario italiano vs inglese: tokenizzazione costa 3 token, tokenization solo 2. Su testi lunghi in italiano puoi aspettarti un 15–20% di token in più rispetto alla versione inglese equivalente.

Spazi e punteggiatura

Dettaglio che sorprende molti: lo spazio inizia spesso il token successivo, non finisce quello precedente. “ mondo” (con spazio) è un token diverso da “mondo” (senza spazio). Questo ha implicazioni per il prompt engineering: formattazione, bullet point e spaziatura influenzano il conteggio dei token.

La context window: tutto è token

Quando senti parlare di “context window da 200.000 token” (Claude 3) o “1 milione di token” (Gemini 1.5 Pro), si parla esattamente di questo: quanti token il modello può tenere in “mente” contemporaneamente, sommando input e output.

La context window include tutto:

  • Il system prompt (le istruzioni iniziali)
  • La cronologia della conversazione
  • I documenti che hai incollato
  • Il codice che hai allegato
  • La risposta che il modello sta generando
Cosa succede quando si supera la context window?
Il modello non “va in crash”: la maggior parte degli SDK lancia un errore prima di inviare la richiesta. Se non gestisci il limite, ricevi un errore context_length_exceeded dall’API. Le interfacce chat come ChatGPT gestiscono questo automaticamente tronando o riassumendo la storia, ma l’utente spesso non se ne accorge — il modello semplicemente “dimentica” le parti più vecchie.

Context window a confronto (2026)

Modello Context window Equivale a
GPT-4o 128.000 token ∼200 pagine di testo
Claude 3.5 Sonnet 200.000 token ∼300 pagine di testo
Gemini 1.5 Pro 1.000.000 token ∼1.500 pagine / 45 ore audio
Llama 3.1 (70B) 128.000 token ∼200 pagine di testo
Mistral Large 128.000 token ∼200 pagine di testo

Token = denaro

Ogni chiamata API viene fatturata in token. Il prezzo si esprime in dollari per milione di token (MTok) e distingue sempre tra token di input (quello che mandi) e token di output (quello che il modello genera).

I token di output costano sistematicamente di più — spesso 3–5 volte — perché la generazione è computazionalmente più pesante del semplice processamento dell’input.

Prezzi indicativi (aprile 2026)

Modello Input ($/MTok) Output ($/MTok) Fascia
GPT-4o mini $0,15 $0,60 Economico
Claude 3.5 Haiku $0,80 $4,00 Economico
GPT-4o $2,50 $10,00 Mid-range
Claude 3.5 Sonnet $3,00 $15,00 Mid-range
Claude 3 Opus $15,00 $75,00 Premium
GPT-4.5 $75,00 $150,00 Premium
Esempio pratico di costo
Un chatbot che gestisce 1.000 conversazioni al giorno, ognuna da 500 token di input e 300 token di output, su Claude 3.5 Sonnet:

Input: 1.000 × 500 = 500.000 token = $1,50/giorno
Output: 1.000 × 300 = 300.000 token = $4,50/giorno
Totale: ∼$6/giorno, ∼$180/mese

Con GPT-4o mini lo stesso traffico costerebbe ∼$0,26/giorno.

Prompt caching: pagare meno per contesti ripetuti

Anthropic (Claude) e OpenAI offrono entrambi una funzione di prompt caching: se la parte iniziale del tuo prompt è identica tra chiamate consecutive (es. un system prompt lungo o un documento di riferimento), il provider la mette in cache e te la fa pagare a una frazione del prezzo normale.

  • Anthropic: cache write $3,75/MTok, cache read $0,30/MTok (su Sonnet). Un risparmio dell’85–90% sulle parti cachate.
  • OpenAI: sconto automatico del 50% sui prompt >1.024 token che iniziano con una parte già vista nelle ultime 5–10 minuti.

Per sistemi RAG o chatbot con un system prompt fisso lungo, il caching è quasi sempre conveniente da implementare.

Come contare i token prima di inviare

Non devi aspettare la risposta dell’API per sapere quanti token hai. Ogni provider espone un modo per contare in anticipo:

# Python — OpenAI (tiktoken)
import tiktoken
enc = tiktoken.encoding_for_model("gpt-4o")
tokens = enc.encode("Il mio testo da contare")
print(len(tokens))  # numero di token

# Python — Anthropic
import anthropic
client = anthropic.Anthropic()
response = client.messages.count_tokens(
    model="claude-3-5-sonnet-20241022",
    messages=[{"role": "user", "content": "Il mio testo"}]
)
print(response.input_tokens)

Librerie utili:

  • tiktoken (OpenAI, open source) — conta token per modelli GPT localmente, senza chiamate API
  • tokenizers (Hugging Face) — supporta praticamente ogni modello open source
  • anthropic SDKcount_tokens() nativo, chiama l’API ma è gratuito

Come ottimizzare l’uso dei token

Ridurre i token non significa solo risparmiare denaro: prompt più corti e densi spesso producono risposte migliori, perché il modello ha meno “rumore” da cui distrarsi.

Ottimizzare l’input

  • Rimuovi le ripetizioni: non ripetere le istruzioni tre volte sperando che il modello le segua meglio — non funziona così.
  • Usa formati compatti: JSON minificato, Markdown invece di HTML, liste invece di paragrafi discorsivi per dati strutturati.
  • Taglia il contesto irrilevante: in un sistema RAG, seleziona solo i chunk davvero pertinenti invece di allegare tutto il documento.
  • Preferisci l’inglese per istruzioni tecniche: le istruzioni di sistema in inglese costano meno token e spesso producono risultati equivalenti o migliori.

Controllare l’output

  • Imposta max_tokens: senza limite, i modelli tendono a essere verbosi. Settare un tetto riduce i costi e spesso migliora la qualità (forza sintesi).
  • Chiedi esplicitamente risposte brevi: “Rispondi in massimo 3 frasi” è un’istruzione che i modelli seguono bene.
  • Usa output strutturato (JSON mode): se ti serve solo un JSON, chiedere solo quello elimina tutto il testo di contorno.

Token in streaming

La maggior parte delle API supporta la generazione in streaming: i token arrivano uno alla volta man mano che vengono generati, invece di aspettare la risposta completa. Questo non riduce i costi (paghi gli stessi token), ma migliora drasticamente la perceived latency: l’utente vede la risposta apparire in tempo reale invece di aspettare 10–30 secondi per una risposta lunga.

Token non testuali: immagini e audio

I modelli multimodali come GPT-4o e Claude 3 gestiscono anche immagini e audio, ma questi vengono anch’essi convertiti in “token visivi” prima di essere processati.

Per le immagini, la regola dipende dalla risoluzione:

  • OpenAI (GPT-4o): un’immagine 1080×1080px in modalità “high” = ∼765 token; in modalità “low” = 85 token fissi.
  • Anthropic (Claude): un’immagine 1568×1568px = ∼1.600 token; la risoluzione viene scalata automaticamente.

Implicazione pratica: mandare screenshot ad alta risoluzione a ripetizione in una conversazione visiva può diventare sorprendentemente costoso. Ridimensionare le immagini prima di inviarle è quasi sempre una buona idea.

Prossimi passi

Ora che hai capito i token, puoi approfondire come vengono usati nei contesti reali:

  • Confronta i modelli tenendo conto del costo per token e della context window
  • Prompt Engineering — tecniche per ottenere più risultato con meno token
  • RAG — come gestire la selezione dei chunk per non sprecare la context window
  • Usare l’AI — quando il costo in token rende l’AI non conveniente rispetto ad alternative più semplici