Compteur de tokens LLM
Comptez les tokens que coûte votre texte selon l’encodage réel d’un modèle, dans votre navigateur. Rien n’est envoyé, et aucun nombre ici n’est une estimation.
Rien de ce que vous collez ici ne quitte ce navigateur. Le vocabulaire de l’encodage que vous choisissez est téléchargé une fois depuis ce site, et le comptage tourne dans un Web Worker de cet onglet : ouvrez votre propre panneau réseau et regardez, aucune requête ne transporte votre texte.
Choisissez le modèle que vous visez vraiment. Un modèle utilise un encodage, plusieurs modèles en partagent un, et un comptage appartient à l’encodage et non au nom.
o200k_baseCollez ou saisissez quelque chose ci-dessus et le nombre exact de tokens apparaîtra ici.
Ce qu’est vraiment un token
Un modèle de langage ne lit pas votre texte comme des lettres ni comme des mots. Avant toute autre chose, le texte est découpé en tokens, et un token est une séquence d’octets pour laquelle le modèle a un seul numéro. Certains tokens sont vraiment des mots entiers. Beaucoup sont un mot accompagné de l’espace qui le précède, et c’est pourquoi le même mot peut coûter un montant différent selon ce qui vient avant lui. D’autres sont un suffixe, un signe de ponctuation, une indentation, ou un fragment qui ne fait partie de rien qu’un lecteur saurait nommer. Le découpage est fait par une table construite en comptant quelles séquences apparaissent ensemble le plus souvent dans un vaste ensemble de textes, et rien en elle n’a été conçu pour coïncider avec la façon dont qui que ce soit écrit.
- Un token est une séquence d’octets et non une séquence de caractères. La distinction paraît pédante jusqu’au moment où vous écrivez hors de l’alphabet latin, où elle est tout le sujet.
- Un mot anglais courant est en général un token. Un mot rare, un nom, un code produit ou une faute de frappe en font plusieurs, parce que la table n’a pas d’entrée pour l’ensemble et doit le reconstruire à partir de morceaux plus courts.
- Les blancs ne sont pas gratuits. L’indentation, les lignes vides et les espaces à l’intérieur d’un tableau collé sont tous des octets, et ils sont tous comptés. Un prompt qui a l’air soigné peut coûter nettement plus que le même prompt écrit à plat.
- Le comptage dépend des octets exacts et de rien d’autre. Deux textes qui paraissent identiques à l’écran mais diffèrent par un caractère invisible — une espace insécable, une marque d’ordre des octets, une apostrophe d’une autre sorte — sont des textes différents et peuvent aboutir à des nombres différents.
C’est pourquoi la règle empirique que tout le monde répète — diviser les caractères par quatre — n’est pas une règle du tout. C’est une moyenne sur un type de texte dans une langue, et elle se trompe dans le sens qui coûte de l’argent dès l’instant où votre texte est du code, un tableau, une liste d’identifiants, ou écrit dans autre chose que l’anglais. Le nombre affiché sur cette page n’est pas cette moyenne. C’est le découpage réel, fait par la table réelle, dans votre navigateur.
C’est l’encodage qui fait le comptage
La table et les règles de fusion portent ensemble le nom d’encodage, et cet encodage a un nom à lui. C’est ce nom qui vaut la peine d’être retenu, car le comptage lui appartient et n’appartient à aucun modèle : plusieurs modèles partagent un même encodage, et un modèle remplacé par un plus récent garde très souvent l’encodage de son prédécesseur. Quand cette page vous montre un nombre, elle vous montre l’encodage sous lequel il a été calculé, juste à côté du modèle que vous avez choisi.
- Un modèle utilise un encodage. La correspondance va de plusieurs vers un, donc savoir quel encodage utilise votre modèle vous apprend plus que de connaître le modèle lui-même.
- Un encodage a un nom publié à lui, comme o200k_base, et ce nom désigne la même table partout où vous le rencontrez. Un comptage effectué sous un encodage sur cette page et un comptage effectué sous le même encodage ailleurs concordent, et c’est cela qui rend vérifiable un comptage accompagné de son encodage.
- Un comptage n’a de sens qu’accompagné de son encodage. Un nombre cité avec un nom de modèle et sans encodage est un nombre que vous ne pouvez pas vérifier, et c’est ce que vous donnent la plupart des pages sur le sujet.
La conséquence pratique est de celles qui surprennent : passer d’un modèle à un autre qui partage le même encodage ne bouge pas le nombre du tout, et c’est l’outil qui a raison, pas l’outil qui est cassé. Pour voir un comptage changer, il faut changer d’encodage et non de nom de modèle.
Pourquoi un texte qui n’est pas en anglais coûte plus cher
Voici la partie qu’aucune page écrite en partant de l’anglais ne vous dira, et c’est la raison d’être de celle-ci. Les encodages en usage travaillent au niveau de l’octet : ils portent sur les octets UTF-8 de votre texte et non sur ses caractères. Une lettre latine fait un octet. Une lettre hébraïque, arabe, grecque ou cyrillique en fait deux. Un caractère chinois, japonais ou coréen en fait trois. Un emoji en fait quatre, et un drapeau ou une famille assemblée en fait plusieurs à la suite. Ainsi, avant même qu’une table soit consultée, la même phrase représente déjà deux ou trois fois plus d’octets dans une langue que dans une autre.
- Les tables ont été construites en comptant les séquences dans un corpus très majoritairement anglais, si bien que les mots anglais ont obtenu des entrées et que ceux des autres langues n’en ont souvent pas eu. Une langue sans entrée pour ses propres mots courants se retrouve épelée en fragments.
- Cela s’ajoute au coût en octets au lieu de le remplacer. Un mot qu’il faut assembler à partir de trois fragments, chacun de deux ou trois octets, coûte cher deux fois.
- L’effet n’est pas uniforme parmi les langues qui ne sont pas l’anglais. Une écriture dont les séquences fréquentes figurent dans la table s’en tire bien mieux qu’une écriture à peine représentée, et le seul moyen de savoir où se situe la vôtre est de coller votre propre texte et de regarder.
- C’est pourquoi un budget établi en anglais ne se transpose pas. Si l’on vous a dit qu’une fenêtre de contexte contient un certain nombre de pages, ce chiffre a presque certainement été mesuré en anglais, et votre propre langue ne l’atteindra pas.
Rien de tout cela n’est un défaut que vous pourriez contourner en écrivant autrement, et ce n’est pas non plus une raison d’écrire en anglais. C’est un coût que vous devriez pouvoir voir avant de vous y engager, et c’est tout le travail du nombre ci-dessus.
Un caractère peut être coupé entre plusieurs tokens
Parce qu’un token est une séquence d’octets et qu’un caractère hors de l’alphabet latin fait plusieurs octets, un caractère isolé est régulièrement coupé en deux : ses premiers octets tombent dans un token et ses derniers dans le suivant. Aucun de ces deux tokens n’est du texte à lui seul. Les afficher comme s’ils l’étaient, c’est ce qui produit la rangée de caractères de remplacement que vous avez peut-être vue sur d’autres pages promettant de vous montrer vos tokens, et cela détruit exactement la compréhension que l’image devait donner.
Ce site dessine donc un segment à la place : la plus courte séquence de tokens consécutifs dont les octets donnent du texte complet. En général c’est un seul token. Là où un caractère a été coupé, c’en est deux ou plus — jusqu’à quatre, pour un caractère de quatre octets coupé octet par octet — et le segment est dessiné en entier avec le nombre de tokens qu’il contient indiqué à côté, de sorte que vous voyez la coupure au lieu d’y perdre le caractère. Le comptage n’en est jamais affecté. La coupure tient à la manière dont les octets ont été découpés, et le total reste le total.
Lire l’image de votre propre texte
Sous le comptage, votre texte est dessiné une seconde fois, avec ses limites visibles. Chaque bloc de cette image est un segment, les blocs se suivent dans l’ordre où vous les avez écrits, et rien n’est omis ni raccourci : ce que vous regardez est donc votre propre texte et non une liste de fragments qui en auraient été extraits. C’est la question à laquelle le nombre ne peut pas répondre : non pas ce que coûte l’ensemble, mais quelles en sont les parties chères.
- Un bloc sans nombre dessus est un token unique, et c’est le cas ordinaire. Il est laissé sans marque à dessein : un chiffre sur chaque bloc serait un mur de chiffres par-dessus vos propres phrases et enterrerait les blocs qui méritent qu’on les regarde. C’est la limite qui se lit, et c’est l’ombrage qui fait finir un bloc et commencer le suivant.
- Un bloc portant un petit nombre est un segment de plus d’un token, et c’est là qu’un caractère a été coupé par une limite. Le caractère est toujours là, dessiné en entier, avec à côté le nombre de tokens qu’il a coûté — une coupure se montre donc comme un coût et non comme un dommage infligé à votre texte. Un emoji ou un caractère d’une écriture ancienne peut atteindre quatre.
- Les espaces, les sauts de ligne et l’indentation sont dessinés comme tout le reste, parce qu’ils sont comptés comme tout le reste. Une série de blocs par-dessus ce qui a l’air de n’être rien du tout est ce qu’il y a de moins coûteux à corriger dans un long prompt, et elle est invisible tant que vous ne pouvez pas la voir.
- Changer de modèle refaçonne l’image chaque fois que cela change l’encodage, et la laisse exactement telle quelle dans le cas contraire. C’est le même fait que montre le nombre, sous une forme où vous pouvez voir où tombe la différence plutôt que seulement qu’il y en a une.
Un texte très long n’est dessiné que jusqu’à un certain point, et là où le dessin s’arrête, la page indique combien de blocs elle a dessinés sur combien. Le comptage n’est jamais limité de la même façon : il porte sur tout ce que vous avez collé, quelle que soit la longueur, et rien de l’image ne l’atteint. La limite existe parce qu’un navigateur met en page chaque bloc un par un et qu’un document entier en ferait plus qu’aucune page ne pourrait utilement en montrer — ce que vous perdez au-delà de ce point est donc l’image du reste, jamais la réponse à son sujet.
Pourquoi certains modèles ne portent ici aucun nombre
Tous les modèles ne peuvent pas être comptés dans votre navigateur, et l’honnêteté consiste à dire lesquels et pourquoi plutôt qu’à vous montrer un nombre deviné. Un modèle peut se trouver dans trois états sur cette page, et ils sont distingués à l’écran au lieu d’être confondus.
- Son encodage est publié et ce site le sert. Vous obtenez un comptage exact, calculé ici, sur la vraie table.
- Son encodage est publié et ce site ne le sert pas. La ligne nomme l’encodage et dit pourquoi — le plus souvent parce que personne, parmi ceux qui publient le fichier, n’indique de licence permettant à un tiers de le republier. La table existe ; le refus est le nôtre, et la ligne le dit.
- Son encodage n’a jamais été publié. Il n’y a pas de table à servir ni de table à refuser, donc aucune page où que ce soit ne peut compter ce modèle dans votre navigateur, quoi qu’elle prétende. La ligne le dit, et ne porte ni nombre, ni estimation, ni plage.
C’est sur cette dernière ligne que la plupart des pages sur le sujet trichent en silence : elles font passer votre texte par la table d’un autre modèle et présentent le résultat comme s’il s’agissait d’une mesure. Ce n’est pas seulement imprécis, c’est biaisé, et c’est biaisé le plus fort exactement sur le texte dont le budget est le plus difficile à établir — le code, et tout ce qui n’est pas écrit en anglais. Le comptage exact pour un tel modèle vient du service de comptage de tokens de son propre fabricant, et ce service exige une clé d’API qu’une page tournant entièrement dans votre navigateur n’a aucun moyen de détenir et ne devrait jamais vous réclamer. Se tourner vers ce service est la réponse honnête, et c’est celle que cette page vous donne au lieu d’un nombre.
Convertir vous-même un comptage en coût
Cette page n’indique aucun prix, et c’est délibéré : un prix se périme plus vite que tout le reste sur ce sujet, et un prix périmé ne rend pas une page incomplète, il la rend fausse. Ce qui ne se périme pas, c’est le calcul ; le voici, et vous pouvez l’appliquer à ce que la page du fournisseur indique aujourd’hui.
- Les fournisseurs annoncent un tarif par million de tokens. Prenez le comptage de cette page, divisez-le par un million et multipliez par ce tarif. C’est le coût d’un seul envoi du texte.
- L’entrée et la sortie sont facturées séparément, et la sortie est en général la plus chère des deux. Cette page compte ce que vous envoyez. Elle ne peut pas compter une réponse qui n’existe pas encore, donc tout coût que vous en tirez est un plancher et jamais un total.
- Une conversation renvoie son historique. Si votre texte est un message système qui accompagne chaque tour, multipliez par le nombre de tours que vous prévoyez, puis encore par le nombre d’utilisateurs, avant de décider si le raccourcir vaut un après-midi.
Le même comptage répond à l’autre question que les gens apportent ici, celle de savoir si un texte tiendra. Cela non plus, cette page ne vous le dira pas, parce qu’une fenêtre de contexte est un chiffre qui bouge et qu’une promesse de tenir est une promesse qu’aucun outil qui n’est pas le modèle lui-même ne peut honorer. Ce qu’elle vous donne, c’est le nombre à comparer au chiffre que le fournisseur publie.
Rien de ce que vous collez ne quitte votre navigateur
Le comptage se fait dans la page que vous avez déjà chargée. La table de l’encodage que vous avez choisi est téléchargée une fois depuis ce site — c’est le téléchargement d’un fichier et non l’envoi de votre texte — et tout ce qui suit tourne sur votre propre machine, dans un fil d’exécution séparé pour qu’un long document ne fige pas l’onglet. Ouvrez le panneau réseau de votre navigateur et regardez pendant que vous tapez : aucune requête ne sort en emportant ce que vous avez écrit.
C’est ce qui permet de coller sans risque justement ce que vous voulez vraiment compter — le prompt d’un client, un message système interne, un morceau de document privé — plutôt qu’une version expurgée qui aurait de toute façon donné un autre nombre. Rien n’est stocké non plus : rechargez la page et le champ est vide, il n’y a pas d’historique et rien à supprimer ensuite.
Questions fréquentes
- Un token, est-ce la même chose qu’un mot ?
- Non, et raisonner comme si c’en était un est la façon la plus courante de se tromper dans un budget. Un mot anglais fréquent est souvent un token unique, mais un mot rare, un nom ou une faute de frappe en font plusieurs, un mot emporte le plus souvent l’espace qui le précède dans le même token, et la ponctuation et l’indentation sont comptées comme tout le reste. Hors de l’anglais, l’écart est bien plus grand, parce qu’un token est une séquence d’octets et qu’un seul caractère fait souvent deux, trois ou quatre octets avant même qu’une table soit consultée.
- Puis-je simplement diviser le nombre de caractères par quatre ?
- Seulement si vous écrivez de la prose anglaise et que cela ne vous dérange pas de vous tromper largement. Ce chiffre est une moyenne sur un type de texte dans une langue. Le code source, les tableaux, les listes d’identifiants et tout ce qui est écrit dans une autre écriture le mettent en défaut, et le mettent en défaut dans le sens qui coûte plus cher et non moins. Le nombre affiché sur cette page est le vrai découpage fait par la vraie table, il n’y a donc aucune raison d’estimer quand vous pouvez mesurer.
- Pourquoi le comptage ne change-t-il pas quand je change de modèle ?
- Parce que ces deux modèles utilisent le même encodage, et que c’est l’encodage qui fait le comptage. C’est normal et non un défaut : un modèle plus récent hérite très souvent de la table de son prédécesseur, et plusieurs modèles d’un même fabricant en partagent une seule. L’encodage est affiché à côté du comptage exactement pour cette raison — si le nom ne change pas quand vous changez de modèle, le nombre ne changera pas non plus.
- Pourquoi ma langue coûte-t-elle tellement plus de tokens que l’anglais ?
- Deux raisons qui se cumulent. Les encodages travaillent sur les octets UTF-8, et une lettre hors de l’alphabet latin fait deux, trois ou quatre octets là où une lettre latine en fait un. Et les tables ont été construites en comptant les séquences dans un corpus très majoritairement anglais, si bien que les mots anglais ont des entrées à eux tandis que ceux des autres langues sont souvent assemblés à partir de fragments. Un mot fait de trois fragments de trois octets chacun coûte cher deux fois. Collez votre propre texte ci-dessus et vous verrez où se situe réellement votre langue.
- Pourquoi n’y a-t-il aucun nombre pour l’un des modèles de la liste ?
- Parce que son encodage n’a jamais été publié : il n’existe donc aucune table qui permette à cette page — ni à aucune autre page tournant dans votre navigateur — de compter. Une page qui vous montre un nombre pour un tel modèle fait passer votre texte par la table d’un autre modèle et présente une supposition comme une mesure. Cette supposition sous-estime, et elle sous-estime le plus sur le code et sur le texte qui n’est pas en anglais, c’est-à-dire précisément là où vous aviez besoin qu’elle soit juste.
- D’où vient alors le comptage exact pour ce modèle ?
- Du service de comptage de tokens du fabricant du modèle lui-même. C’est la seule source qui puisse être exacte, parce que seul le fabricant a la table. Il exige une clé d’API, qu’une page tournant entièrement dans votre navigateur n’a aucun moyen de détenir et ne doit jamais vous réclamer — l’honnêteté, pour cette page, consiste donc à vous dire où aller plutôt qu’à inventer un nombre. Si vous appelez déjà ce modèle depuis votre propre code, la clé que vous y employez répondra aussi à cette question.
- Les espaces, les sauts de ligne et l’indentation comptent-ils ?
- Oui, tous, et ils peuvent totaliser plus qu’on ne l’imagine. Le code indenté, les lignes vides entre les paragraphes et le remplissage à l’intérieur d’un tableau collé sont tous des octets, et les encodages ont bel et bien des tokens pour plusieurs espaces d’un coup, si bien que le coût n’est pas d’un token par espace — mais ce n’est pas rien non plus. Si vous rognez un long message système, le reformater vaut la peine d’être mesuré avant de commencer à couper des phrases.
- Mon texte est-il envoyé à un serveur ?
- Non. La table de l’encodage que vous avez choisi est téléchargée une fois depuis ce site, et après cela chaque comptage est calculé dans votre propre navigateur, dans un fil d’exécution séparé. Ouvrez votre panneau réseau et regardez pendant que vous tapez : aucune requête n’emporte ce que vous avez écrit. Rien n’est stocké non plus, si bien que recharger la page laisse un champ vide et rien à supprimer.
- Cet outil me dira-t-il ce que coûte mon prompt, ou si celui-ci tient ?
- Ni l’un ni l’autre, et les deux refus sont délibérés. Un prix serait périmé en quelques mois et rien ici ne pourrait s’en apercevoir : ce guide enseigne donc le calcul à la place et laisse le tarif à la page du fournisseur. Une fenêtre de contexte est un chiffre mouvant du même genre, et savoir si un texte tient dépend en outre de la réponse, que cette page ne peut pas voir. Ce que vous obtenez, c’est l’unique nombre par lequel les deux questions commencent, calculé exactement.
Outils connexes
- Longueur de texte
Compte les caractères, les mots et les lignes — compatible Unicode.
- Testeur de regex
Testez des expressions régulières — correspondance, remplacement, découpage.
- Comparateur de textes
Comparez deux textes — chaque ligne et chaque mot modifiés.
- Inspecteur de caractères Unicode
Voyez exactement de quels caractères un texte est fait.