Contatore di token LLM

Conta i token che il tuo testo costa secondo la codifica reale di un modello, nel tuo browser. Niente viene caricato e nessun numero qui è una stima.

Niente di ciò che incolli qui esce da questo browser. Il vocabolario della codifica che scegli viene scaricato una volta da questo sito, e il conteggio gira in un Web Worker in questa scheda: apri il tuo pannello di rete e guarda, nessuna richiesta porta con sé il tuo testo.

Scegli il modello a cui punti davvero. Un modello usa una codifica, più modelli ne condividono una, e un conteggio appartiene alla codifica e non al nome.

Codificao200k_base
Il tuo testo

Incolla o scrivi qualcosa qui sopra e il conteggio esatto dei token comparirà qui.

Che cos’è davvero un token

Un modello linguistico non legge il tuo testo come lettere né come parole. Prima di qualsiasi altra cosa il testo viene tagliato in token, e un token è una sequenza di byte per cui il modello ha un solo numero. Alcuni token sono davvero parole intere. Molti sono una parola insieme allo spazio che la precede, ed è per questo che la stessa parola può costare cifre diverse a seconda di che cosa viene prima. Altri sono un suffisso, un segno di punteggiatura, un rientro o un frammento che non fa parte di nulla che un lettore saprebbe nominare. Il taglio lo fa una tabella costruita contando quali sequenze compaiono insieme più spesso in un vasto insieme di testi, e nulla in essa è stato progettato per combaciare con il modo in cui chiunque scriva.

  • Un token è una sequenza di byte e non una sequenza di caratteri. La distinzione sembra una pedanteria finché non scrivi fuori dall’alfabeto latino, dove è tutto.
  • Una parola inglese comune di solito è un token. Una rara, un nome, un codice di prodotto o un refuso sono più di uno, perché la tabella non ha una voce per l’intero e deve ricostruirlo con pezzi più corti.
  • Gli spazi bianchi non sono gratis. L’indentazione, le righe vuote e gli spazi dentro una tabella incollata sono tutti byte, e vengono tutti contati. Un prompt che sembra ordinato può costare sensibilmente più dello stesso prompt scritto tutto di seguito.
  • Il conteggio dipende dai byte esatti e da nient’altro. Due testi che sullo schermo sembrano identici ma differiscono per un carattere invisibile — uno spazio unificatore, un contrassegno di ordine dei byte, un apostrofo di altro tipo — sono testi diversi e possono dare numeri diversi.

Ecco perché la regola generale che tutti ripetono — dividere i caratteri per quattro — non è affatto una regola. È una media su un tipo di testo in una lingua, e sbaglia nella direzione che costa denaro nel momento in cui il tuo testo è codice, una tabella, un elenco di identificatori, o è scritto in qualcosa che non sia l’inglese. Il numero su questa pagina non è quella media. È il taglio reale, fatto dalla tabella reale, nel tuo browser.

È la codifica a fare il conteggio

La tabella e le regole di fusione insieme si chiamano codifica, e la codifica ha un nome tutto suo. È quel nome che vale la pena imparare, perché il conteggio appartiene alla codifica e non al modello: più modelli condividono una stessa codifica, e un modello sostituito da uno più recente conserva molto spesso la codifica del suo predecessore. Quando questa pagina ti mostra un numero, ti mostra anche la codifica con cui è stato calcolato, proprio accanto al modello che hai scelto.

  • Un modello usa una codifica. La corrispondenza va da molti a uno, quindi sapere quale codifica usa il tuo modello dice più che sapere qual è il modello.
  • Una codifica ha un nome pubblicato tutto suo, come o200k_base, e quel nome indica la stessa tabella ovunque tu lo incontri. Un conteggio fatto con una codifica su questa pagina e un conteggio fatto con la stessa codifica altrove coincidono, ed è questo a rendere verificabile un conteggio accompagnato dalla sua codifica.
  • Un conteggio ha senso solo con la sua codifica accanto. Un numero citato con un nome di modello e senza codifica è un numero che non puoi controllare, ed è quello che ti danno la maggior parte delle pagine sull’argomento.

La conseguenza pratica sorprende molti: passare da un modello a un altro che condivide la stessa codifica non muove affatto il numero, e questo è lo strumento che ha ragione, non lo strumento rotto. Per vedere cambiare un conteggio devi cambiare codifica, non nome di modello.

Perché il testo che non è in inglese costa di più

Ecco la parte che nessuna pagina scritta partendo dall’inglese ti dirà, ed è il motivo per cui questa esiste. Le codifiche in uso lavorano a livello di byte: agiscono sui byte UTF-8 del tuo testo e non sui suoi caratteri. Una lettera latina è un byte. Una lettera ebraica, araba, greca o cirillica ne vale due. Un carattere cinese, giapponese o coreano ne vale tre. Un emoji ne vale quattro, e una bandiera o una famiglia unita ne valgono parecchi di fila. Così, prima ancora che si consulti una tabella, la stessa frase occupa già due o tre volte più byte in una lingua che in un’altra.

  • Le tabelle sono state costruite contando le sequenze in un corpus in stragrande maggioranza inglese, perciò le parole inglesi hanno ottenuto una voce e quelle di altre lingue spesso no. Una lingua senza una voce per le proprie parole comuni viene compitata in frammenti.
  • Questo si somma al costo in byte invece di sostituirlo. Una parola che va assemblata con tre frammenti, ciascuno di due o tre byte, costa cara due volte.
  • L’effetto non è uniforme fra le lingue che non sono l’inglese. Una scrittura le cui sequenze frequenti stanno nella tabella se la cava molto meglio di una che era appena rappresentata, e l’unico modo di sapere dove si colloca la tua è incollare il tuo testo e guardare.
  • È per questo che un budget calcolato in inglese non si trasferisce. Se ti hanno detto che una finestra di contesto tiene un certo numero di pagine, quella cifra è stata quasi certamente misurata in inglese, e la tua lingua non ci arriverà.

Niente di tutto ciò è un difetto che puoi aggirare scrivendo in un altro modo, e non è nemmeno un motivo per scrivere in inglese. È un costo che dovresti poter vedere prima di assumertelo, ed è tutto il lavoro del numero qui sopra.

Un carattere può essere tagliato fra più token

Poiché un token è una sequenza di byte e un carattere fuori dall’alfabeto latino occupa più byte, un singolo carattere viene tagliato in due con tutta regolarità: i suoi primi byte cadono in un token e gli ultimi in quello dopo. Nessuno di quei due token è testo per conto proprio. Stamparli come se lo fossero è ciò che produce la fila di caratteri di sostituzione che forse hai visto su altre pagine che promettono di mostrarti i tuoi token, e distrugge esattamente la comprensione che l’immagine doveva dare.

Perciò questo sito disegna invece un segmento: la più breve sequenza di token consecutivi i cui byte danno testo completo. Di solito è un token solo. Dove un carattere è stato tagliato sono due o più — fino a quattro, per un carattere di quattro byte tagliato un byte alla volta — e il segmento viene disegnato intero con accanto il numero di token che contiene, così vedi il taglio invece di perderci il carattere. Il conteggio non ne è mai toccato. Il taglio riguarda il modo in cui sono stati divisi i byte, e il totale resta il totale.

Leggere l’immagine del tuo testo

Sotto il conteggio il tuo testo viene disegnato una seconda volta, con i suoi confini in vista. Ogni blocco di quell’immagine è un segmento, i blocchi vanno nell’ordine in cui li hai scritti e nulla viene omesso o accorciato: quello che stai guardando è quindi il tuo testo e non un elenco di frammenti estratti da esso. È la domanda a cui il numero non può rispondere: non quanto costa l’insieme, ma quali parti sono quelle care.

  • Un blocco senza numero sopra è un token singolo, che è il caso ordinario. Resta senza segno di proposito: una cifra su ogni blocco sarebbe un muro di cifre sopra le tue stesse frasi e seppellirebbe i blocchi che vale la pena guardare. È il confine che si legge, ed è l’ombreggiatura a far finire un blocco e cominciare il successivo.
  • Un blocco che porta un numero piccolo è un segmento di più di un token, ed è lì che un carattere è stato tagliato da un confine. Il carattere è ancora lì, disegnato intero, con accanto il numero di token che ha richiesto, così un taglio si presenta come un costo e non come un danno al tuo testo. Un emoji o un carattere di una scrittura antica può arrivare a quattro.
  • Gli spazi, le interruzioni di riga e l’indentazione vengono disegnati come tutto il resto, perché vengono contati come tutto il resto. Un tratto di blocchi sopra ciò che sembra non essere nulla è la cosa meno costosa da sistemare in un prompt lungo, ed è invisibile finché non puoi vederla.
  • Cambiare modello rimodella l’immagine ogni volta che cambia la codifica, e la lascia esattamente com’era ogni volta che non la cambia. È lo stesso fatto che mostra il numero, in una forma in cui puoi vedere dove cade la differenza e non soltanto che ce n’è una.

Un testo molto lungo viene disegnato solo fino a un certo punto, e dove il disegno si ferma la pagina dice quanti blocchi ha disegnato su quanti. Il conteggio non è mai limitato allo stesso modo: riguarda tutto quello che hai incollato, a qualunque lunghezza, e nulla dell’immagine lo raggiunge. Il limite esiste perché un browser impagina ogni blocco uno alla volta e un documento intero ne avrebbe più di quanti una pagina potrebbe utilmente mostrarne, quindi quello che perdi oltre quel punto è l’immagine del resto, mai la risposta su di esso.

Perché alcuni modelli qui non portano nessun numero

Non tutti i modelli si possono contare nel tuo browser, e la cosa onesta è dire quali e perché anziché mostrarti un numero indovinato. Ci sono tre stati in cui un modello può trovarsi su questa pagina, e sullo schermo vengono distinti invece che confusi.

  • La sua codifica è pubblicata e questo sito la serve. Ottieni un conteggio esatto, calcolato qui, sulla tabella vera.
  • La sua codifica è pubblicata e questo sito non la serve. La riga nomina la codifica e dice perché: il più delle volte perché nessuno fra chi pubblica il file dichiara una licenza che permetta a un terzo di ripubblicarlo. La tabella esiste; il rifiuto è nostro, e la riga lo dice.
  • La sua codifica non è mai stata pubblicata. Non c’è tabella da servire né tabella da rifiutare, quindi nessuna pagina, ovunque sia, può contare quel modello nel tuo browser, qualunque cosa dichiari. La riga lo dice, e non porta né numero, né stima, né intervallo.

È su quest’ultima riga che la maggior parte delle pagine sull’argomento barano in silenzio: fanno passare il tuo testo per la tabella di un altro modello e presentano il risultato come se fosse una misura. Non è solo impreciso, è distorto, ed è distorto di più proprio sul testo per cui è più difficile fare un budget: il codice, e tutto ciò che non è scritto in inglese. Il conteggio esatto per un modello simile arriva dal servizio di conteggio dei token del suo produttore, e quel servizio richiede una chiave API che una pagina che gira interamente nel tuo browser non ha modo di custodire e non dovrebbe mai chiederti. Rivolgersi a quel servizio è la risposta onesta, ed è quella che questa pagina ti dà al posto di un numero.

Trasformare da solo un conteggio in un costo

Questa pagina non indica nessun prezzo, ed è voluto: un prezzo invecchia più in fretta di qualunque altra cosa su questo argomento, e un prezzo vecchio non lascia una pagina incompleta, la lascia falsa. Quello che non invecchia è il calcolo, quindi eccolo, e puoi applicarlo a ciò che la pagina del fornitore dice oggi.

  • I fornitori indicano una tariffa per milione di token. Prendi il conteggio di questa pagina, dividilo per un milione e moltiplicalo per quella tariffa. Quello è il costo di un singolo invio del testo.
  • Ingresso e uscita si pagano separatamente, e l’uscita di solito è la più cara delle due. Questa pagina conta ciò che invii. Non può contare una risposta che ancora non esiste, quindi qualunque costo ne ricavi è un minimo e mai un totale.
  • Una conversazione reinvia la propria cronologia. Se il tuo testo è un messaggio di sistema che viaggia a ogni turno, moltiplica per il numero di turni che prevedi, e ancora per il numero di utenti, prima di decidere se accorciarlo vale un pomeriggio.

Lo stesso conteggio risponde all’altra domanda che la gente porta qui, cioè se un testo ci starà. Nemmeno questo te lo dirà questa pagina, perché una finestra di contesto è una cifra che si muove e una promessa sul fatto che ci stia è una promessa che nessuno strumento che non sia il modello stesso può mantenere. Quello che ti dà è il numero da confrontare con qualunque cifra pubblichi il fornitore.

Niente di ciò che incolli esce dal tuo browser

Il conteggio avviene nella pagina che hai già caricato. La tabella della codifica che hai scelto viene scaricata una volta da questo sito — è lo scaricamento di un file, non il caricamento del tuo testo — e tutto quello che segue gira sulla tua macchina, in un thread separato perché un documento lungo non congeli la scheda. Apri il pannello di rete del tuo browser e guarda mentre scrivi: non esce nessuna richiesta che porti con sé quello che hai scritto.

È questo a rendere sicuro incollare proprio ciò che vuoi davvero contare — il prompt di un cliente, un messaggio di sistema interno, un pezzo di un documento riservato — invece di una versione ripulita che avrebbe comunque dato un altro numero. Non viene salvato nulla: ricarica la pagina e il campo è vuoto, non c’è cronologia e non resta niente da cancellare.

Domande frequenti

Un token è la stessa cosa di una parola?
No, e ragionare come se lo fosse è il modo più comune di sbagliare un budget. Una parola inglese frequente è spesso un token singolo, ma una parola rara, un nome o un refuso sono più di uno, una parola porta di solito lo spazio che la precede dentro lo stesso token, e punteggiatura e indentazione vengono contate come tutto il resto. Fuori dall’inglese lo scarto è molto più grande, perché un token è una sequenza di byte e un singolo carattere è spesso due, tre o quattro byte prima ancora che si consulti una tabella.
Posso semplicemente dividere il numero di caratteri per quattro?
Solo se scrivi prosa inglese e non ti dispiace sbagliare di parecchio. Quella cifra è una media su un tipo di testo in una lingua. Il codice sorgente, le tabelle, gli elenchi di identificatori e tutto ciò che usa un’altra scrittura la smentiscono, e la smentiscono nella direzione che costa di più e non di meno. Il numero su questa pagina è il taglio vero fatto dalla tabella vera, quindi non c’è motivo di stimare quando puoi misurare.
Perché il conteggio non cambia quando cambio modello?
Perché quei due modelli usano la stessa codifica, ed è la codifica a fare il conteggio. È normale e non è un guasto: un modello più recente eredita molto spesso la tabella del suo predecessore, e più modelli di uno stesso produttore ne condividono una sola. La codifica compare accanto al conteggio proprio per questo: se il nome non cambia quando cambi modello, non cambierà nemmeno il numero.
Perché la mia lingua costa molti più token dell’inglese?
Due ragioni che si sommano. Le codifiche lavorano sui byte UTF-8, e una lettera fuori dall’alfabeto latino è due, tre o quattro byte dove una latina è uno. E le tabelle sono state costruite contando le sequenze in un corpus in stragrande maggioranza inglese, perciò le parole inglesi hanno voci proprie mentre quelle di altre lingue vengono spesso assemblate con frammenti. Una parola fatta di tre frammenti di tre byte ciascuno costa cara due volte. Incolla qui sopra il tuo testo e vedrai dove si colloca davvero la tua lingua.
Perché per uno dei modelli dell’elenco non c’è nessun numero?
Perché la sua codifica non è mai stata pubblicata, quindi non esiste tabella che permetta a questa pagina — né ad alcun’altra pagina che giri nel tuo browser — di contare. Una pagina che ti mostra un numero per un modello simile sta facendo passare il tuo testo per la tabella di un altro modello e presenta un’ipotesi come una misura. Quell’ipotesi conta per difetto, e conta per difetto soprattutto sul codice e sul testo che non è in inglese, cioè proprio dove ti serviva che fosse giusta.
Da dove arriva allora il conteggio esatto per quel modello?
Dal servizio di conteggio dei token del produttore del modello. È l’unica fonte che possa essere esatta, perché solo il produttore ha la tabella. Richiede una chiave API, che una pagina che gira interamente nel tuo browser non ha modo di custodire e non deve mai chiederti, quindi la cosa onesta che questa pagina può fare è dirti dove andare invece di inventare un numero. Se già chiami quel modello dal tuo codice, la stessa chiave che usi lì risponderà anche a questo.
Gli spazi, le interruzioni di riga e l’indentazione contano?
Sì, tutti, e possono sommarsi a più di quanto la gente si aspetti. Il codice indentato, le righe vuote fra i paragrafi e il riempimento dentro una tabella incollata sono tutti byte, e le codifiche hanno effettivamente token per più spazi in una volta, quindi il costo non è un token per spazio — ma nemmeno è nulla. Se stai accorciando un messaggio di sistema lungo, vale la pena misurare che cosa succede riformattandolo prima di cominciare a togliere frasi.
Il mio testo viene inviato a un server?
No. La tabella della codifica che hai scelto viene scaricata una volta da questo sito, e da lì in poi ogni conteggio è calcolato nel tuo browser, in un thread separato. Apri il tuo pannello di rete e guarda mentre scrivi: nessuna richiesta porta con sé quello che hai scritto. Non viene salvato nulla, quindi ricaricare la pagina lascia un campo vuoto e niente da cancellare.
Questo mi dirà quanto costa il mio prompt, o se ci sta?
Né l’una né l’altra cosa, ed entrambi i rifiuti sono voluti. Un prezzo sarebbe vecchio nel giro di mesi e niente qui potrebbe accorgersene, quindi al suo posto la guida spiega il calcolo e lascia la tariffa alla pagina del fornitore. Una finestra di contesto è una cifra mobile dello stesso tipo, e se un testo ci sta dipende inoltre dalla risposta, che questa pagina non può vedere. Quello che ottieni è l’unico numero da cui partono entrambe le domande, calcolato con esattezza.

Strumenti correlati