LLMトークン数カウンター

モデルが実際に使うエンコーディングで、テキストのトークン数をブラウザ内で正確に数えます。何もアップロードされず、ここに推定値はひとつもありません。

ここに貼り付けたものはこのブラウザから出ません。選んだエンコーディングの語彙はこのサイトから一度だけ取得され、数える処理自体はこのタブの別スレッドで走ります。ご自身のネットワークパネルを開いて確かめてください。あなたのテキストを運ぶリクエストはひとつもありません。

実際に狙っているモデルを選んでください。モデルはエンコーディングを使い、複数のモデルがひとつを共有します。カウントは名前ではなくエンコーディングに属します。

エンコーディングo200k_base
あなたのテキスト

上に何か貼り付けるか入力すると、正確なトークン数がここに出ます。

トークンとは実際に何なのか

言語モデルは、あなたのテキストを文字としても単語としても読みません。何よりも先に、テキストはトークンに切り分けられます。トークンとは、モデルがひとつの数値を持っているバイトの並びのことです。本当に単語まるごとであるトークンもあります。多くは単語とその前のスペースを合わせたもので、だからこそ同じ単語でも前に何が来るかで費用が変わります。ほかは接尾辞、句読点、インデント、あるいは読み手が名前を挙げられる何かの一部ですらない断片です。切り分けを行うのは、大量のテキストの中でどの並びがいちばん頻繁に一緒に現れるかを数えて作られた表であり、そのどこも、誰かの書き方に合うようには設計されていません。

  • トークンはバイトの並びであって、文字の並びではありません。この区別は些細なこだわりに聞こえますが、ラテン文字の外で書き始めた途端、そこではそれがすべてになります。
  • ありふれた英単語はたいてい 1 トークンです。まれな単語、名前、製品コード、打ち間違いは複数になります。表にはそれ全体の項目がなく、より短い断片から組み立てるほかないからです。
  • 空白は無料ではありません。インデント、空行、貼り付けた表の中のスペースはすべてバイトであり、すべて数えられます。整って見えるプロンプトは、同じ内容を平らに書いたものより目に見えて高くつくことがあります。
  • カウントは正確なバイトだけで決まり、ほかの何にも左右されません。画面上は同一に見えても見えない文字が違う二つのテキスト — ノーブレークスペース、バイトオーダーマーク、種類の違うアポストロフィ — は別のテキストであり、違う数になりえます。

誰もが繰り返す経験則 — 文字数を 4 で割る — が、そもそも規則ではないのはこのためです。それは一つの言語の一種類のテキストにおける一つの平均にすぎず、テキストがコード、表、識別子の一覧、あるいは英語以外で書かれたものになった途端、お金のかかる向きに外れます。このページの数はその平均ではありません。実際の表による実際の切り分けを、ブラウザの中で行った結果です。

数えているのはエンコーディング

表とマージ規則を合わせたものはエンコーディングと呼ばれ、それ自身の名前を持っています。覚える価値があるのはその名前のほうです。カウントはモデルにではなくエンコーディングに属するからです。複数のモデルがひとつのエンコーディングを共有しますし、新しいモデルに置き換えられたモデルは、たいてい先代と同じエンコーディングのままです。このページが数を示すとき、それがどのエンコーディングで計算されたかも、選んだモデルのすぐ隣に示します。

  • モデルはエンコーディングを使います。対応は多対一なので、選んだモデルがどのエンコーディングを使うかを知るほうが、モデルの名前を知るより多くを教えてくれます。
  • エンコーディングには o200k_base のように公開された固有の名前があり、その名前はどこで出会っても同じ表を指します。このページであるエンコーディングで数えたカウントと、ほかのどこかで同じエンコーディングで数えたカウントは一致します。エンコーディングを添えたカウントがそもそも検証できるのは、このためです。
  • カウントに意味があるのは、エンコーディングが添えられているときだけです。モデル名だけを添えてエンコーディングのない数は、検証しようのない数であり、この話題を扱うたいていのページが渡してくるのはそれです。

実際上の帰結は人を驚かせるものです。エンコーディングを共有する二つのモデルを切り替えても、数はまったく動きません。それはツールが壊れているのではなく、正しいということです。カウントが変わるところを見たいなら、変えるべきはモデル名ではなくエンコーディングです。

英語でないテキストが高くつく理由

ここからが、英語を出発点に書かれたページが教えてくれない部分であり、このページが存在する理由です。使われているエンコーディングはバイト単位で動きます。テキストの文字ではなく、その UTF-8 バイトを相手にするのです。ラテン文字は 1 バイト。ヘブライ文字、アラビア文字、ギリシャ文字、キリル文字は 2 バイト。中国語・日本語・韓国語の文字は 3 バイト。絵文字は 4 バイトで、旗や結ばれた家族はそれが何個も続いたものです。ですから表が引かれるより前の段階で、同じ一文が、ある言語では別の言語の二倍も三倍もバイト数を占めているのです。

  • 表は、圧倒的に英語に偏ったコーパスの中で並びを数えて作られました。ですから英単語は項目を得て、ほかの言語の単語はしばしば得られませんでした。そのありふれた単語の項目を持たない言語は、断片に綴り出されます。
  • これはバイトの費用に取って代わるのではなく、その上に重なります。どれもが 2 バイトか 3 バイトの断片三つから組み立てられる単語は、二重に高くつきます。
  • この効果は、英語でない言語のあいだで一様ではありません。頻出の並びが表に入っている文字体系は、ほとんど含まれていなかった文字体系よりずっとうまくやります。あなたの言語がどこに位置するかを知る方法は、あなたのテキストを貼り付けて見ること以外にありません。
  • 英語で立てた見積もりが移し替えられないのは、このためです。コンテキストウィンドウが何ページ分入ると聞かされたなら、その数字はほぼ確実に英語で測られたものであり、あなたの言語はそこまで届きません。

このどれも、書き方を変えて回避できる欠陥ではありませんし、英語で書く理由にもなりません。これは、引き受ける前に見えていてよいはずの費用です。上の数の仕事は、まさにそれだけです。

一つの文字が複数のトークンにまたがって切られる

トークンがバイトの並びであり、ラテン文字の外の文字が数バイトであるために、一つの文字はごくふつうに二つに切られます。前のほうのバイトが一つのトークンに、後ろのほうのバイトが次のトークンに落ちるのです。そのどちらのトークンも、それ単体ではテキストではありません。テキストであるかのように印字することが、トークンを見せると約束するほかのページで目にしたかもしれない置換文字の列を生みます。そしてそれは、その絵が与えるはずだった理解をまさに壊してしまいます。

そこでこのサイトは、代わりにセグメントを描きます。バイトがそろって完全なテキストになる、連続したトークンの最も短い並びのことです。ふつうはトークン一つ分です。文字が切られたところでは二つ以上になり — 4 バイトの文字が 1 バイトずつ切られた場合には四つまで届きます — セグメントは丸ごと描かれ、その中のトークンの数が隣に記されます。ですから、文字を切れ目に失うのではなく、切れ目のほうが見えるのです。カウントはこのどれにも影響されません。切られたことはバイトがどう切り分けられたかについての事実であり、合計は合計のままです。

あなたのテキストの絵の読み方

カウントの下に、あなたのテキストが境界の見える形でもう一度描かれます。その絵のブロックはどれも一つのセグメントで、ブロックは書いた順に並び、省かれたり縮められたりしたものはありません。ですから目にしているのは、そこから抜き出された断片の一覧ではなく、あなた自身のテキストです。それが、数のほうでは答えられない問いです。全体でいくらかかるかではなく、そのどの部分が高いのか、という問いです。

  • 数の付いていないブロックは単一のトークンで、それがふつうの場合です。印を付けないのは意図的です。すべてのブロックに数字を載せれば、書いた文の上に数字の壁ができ、見る価値のあるブロックを埋もれさせてしまいます。読み取るべきは境界であり、一つのブロックを終わらせて次を始めているのは色の濃淡です。
  • 小さな数を載せたブロックは、トークン一つより多いセグメントであり、そこが、文字が境界をまたいで切られたところです。文字はそのまま、丸ごと描かれていて、かかったトークンの数が隣にあります。ですから切れ目は、テキストの傷ではなく費用として現れます。絵文字や古い文字体系の文字は四つまで届くことがあります。
  • スペース、改行、インデントも、ほかのすべてと同じように描かれます。ほかのすべてと同じように数えられるからです。何もないように見えるところに連なるブロックは、長いプロンプトの中でいちばん直しやすい部分であり、目に見えるようになるまでは気づきようがありません。
  • モデルを切り替えると、エンコーディングが変わるときには絵の形も変わり、変わらないときにはまったくそのままです。それは数が示すのと同じ事実を、違いがあるということだけでなく、違いがどこに現れるかまで見える形にしたものです。

とても長いテキストは途中までしか描かれず、絵が止まったところで、ページは全体のうちいくつのブロックを描いたかを伝えます。カウントのほうが同じように制限されることはありません。貼り付けたものすべてが、どんな長さでも対象であり、絵のほうの事情はそこに届きません。制限があるのは、ブラウザがブロックを一つずつ配置していくからで、文書まるごとでは、どのページも役に立つ形では示せないほどの数になるからです。ですからその先で失うのは残りの絵であって、残りについての答えではありません。

ここで数を持たないモデルがある理由

どのモデルもあなたのブラウザの中で数えられるわけではありません。それについて誠実なのは、当て推量の数を見せることではなく、どれがそうで、なぜそうなのかを言うことです。このページでモデルが取りうる状態は三つあり、それらは一緒くたにされるのではなく、画面の上で区別されます。

  • エンコーディングが公開されていて、このサイトがそれを提供している場合は、本物の表に対してここで計算された、正確なカウントが得られます。
  • エンコーディングが公開されていて、このサイトがそれを提供していない場合は、その行がエンコーディングの名前を挙げ、理由を述べます。多くは、そのファイルを公開している誰も、ほかの誰かが再配布してよいというライセンスを示していないからです。表は存在します。拒んでいるのはこちらであり、行はそう述べます。
  • エンコーディングが一度も公開されていない場合は、提供する表も、拒む表もないので、どこのどのページも、何を主張していようと、そのモデルをブラウザ内で数えることはできません。行はそう述べ、数も、推定値も、範囲も載せません。

この話題を扱うたいていのページが黙ってごまかすのは、その最後の行のところです。貼り付けたテキストを別のモデルの表に通し、その結果を測定であるかのように差し出すのです。それは単に不正確なのではなく偏っていて、しかも見積もりのいちばん難しいテキスト — コードと、英語で書かれていないもの — で最も大きく偏ります。そうしたモデルの正確な数は、その作り手自身のトークン計測サービスから得られますが、それには API キーが要ります。完全にブラウザ内で動くページには持ちようがなく、あなたに求めてもいけない鍵です。そのサービスを頼るのが誠実な答えであり、このページは数の代わりにそれを示します。

カウントを自分で費用に換える

このページは価格を書きません。それは意図的です。この話題で何よりも早く古くなるのは価格であり、古い価格はページを不完全にするのではなく、偽にしてしまいます。古くならないのは計算のほうなので、それをここに書きます。今日、提供元自身のページが何と言っていようと、それに当てはめてください。

  • 提供元は 100 万トークンあたりの単価を示します。このページのカウントを取り、100 万で割り、その単価を掛けてください。それが、そのテキストを一度送る費用です。
  • 入力と出力は別々に値付けされ、たいていは出力のほうが高くつきます。このページが数えるのは、あなたが送るものです。まだ存在しない返答を数えることはできないので、ここから割り出した費用はどれも下限であって、合計ではありません。
  • 会話はその履歴を送り直します。そのテキストが毎回のやり取りに付いていくシステムプロンプトなら、見込みのやり取りの回数を掛け、さらに利用者の数を掛けてから、それを短くするのに半日かける価値があるかを決めてください。

同じカウントは、人がここに持ってくるもう一つの問い — そのテキストが収まるかどうか — にも関わります。それについてもこのページは答えません。コンテキストウィンドウは動く数字であり、収まるという約束は、モデル自身でないどんな道具にも守れないからです。ここで得られるのは、提供元が公開している数字が何であれ、それと比べるための数です。

貼り付けたものはブラウザの外に出ない

数える処理は、すでに読み込んだこのページの中で起きます。選んだエンコーディングの表はこのサイトから一度だけ取得され — それはファイルの取得であって、あなたのテキストのアップロードではありません — その後はすべて、長い文書でもタブが固まらないよう別スレッドで、あなた自身のマシン上で走ります。ブラウザのネットワークパネルを開いて、入力しながら見ていてください。書いたものを運ぶリクエストは一つも出ていきません。

だからこそ、本当に数えたいもの — 顧客のプロンプト、社内のシステムメッセージ、非公開の文書の一部 — を、どうせ違う数になったはずの当たり障りのない版ではなく、そのまま貼り付けても安全なのです。保存も行われません。ページを再読み込みすれば欄は空で、履歴もなく、あとから消すものもありません。

よくある質問

トークンは単語と同じものですか?
いいえ。そういう前提で考えることが、見積もりを外すいちばんよくあるやり方です。頻出の英単語はしばしば単一のトークンですが、まれな単語、名前、打ち間違いは複数になりますし、単語はふつうその前のスペースを同じトークンの中に抱えていて、句読点やインデントもほかのすべてと同じように数えられます。英語の外では食い違いはずっと大きくなります。トークンはバイトの並びであり、一つの文字は、どんな表が引かれるより前の段階で、しばしば 2 バイト・3 バイト・4 バイトを占めるからです。
文字数を 4 で割るだけでよいですか?
英語の散文を書いていて、大きく外れても構わない場合にかぎります。あの数字は、一つの言語の一種類のテキストにおける平均です。ソースコード、表、識別子の一覧、そしてほかの文字体系で書かれたものはどれもそれを壊しますし、壊す向きは安くなるほうではなく高くなるほうです。このページの数は本物の表による本物の切り分けなので、測れるときに見積もる理由はありません。
モデルを切り替えてもカウントが変わらないのはなぜですか?
その二つのモデルが同じエンコーディングを使っていて、数えているのはエンコーディングだからです。これは不具合ではなくふつうのことです。新しいモデルは先代の表をそのまま受け継ぐことが非常に多く、一つの作り手の複数のモデルが一つを共有します。カウントの隣にエンコーディングが示されているのは、まさにこのためです。切り替えても名前が変わらないなら、数も変わりません。
私の言語が英語よりずっと多くのトークンを費やすのはなぜですか?
重なり合う二つの理由があります。エンコーディングは UTF-8 バイトを相手にしていて、ラテン文字が 1 バイトのところ、その外の文字は 2 バイト・3 バイト・4 バイトを占めます。そして表は、圧倒的に英語に偏ったコーパスの中で並びを数えて作られたので、英単語にはそれ自身の項目があり、ほかの言語の単語はしばしば断片から組み立てられます。3 バイトの断片三つでできた単語は二重に高くつきます。上にあなたのテキストを貼り付ければ、あなたの言語が実際にどこに位置するかが見えます。
一覧のモデルのうち一つに数がないのはなぜですか?
そのエンコーディングが一度も公開されておらず、このページが — ブラウザ内で動くほかのどのページも — 数える相手にする表がないからです。そうしたモデルに数を見せてくるページは、あなたのテキストを別のモデルの表に通し、当て推量を測定として差し出しています。その当て推量は少なく数えますし、少なく数える度合いは、コードと英語でないテキストでいちばん大きくなります。正確であってほしかったのは、まさにそこです。
では、そのモデルの正確なカウントはどこから来るのですか?
モデルの作り手自身のトークン計測サービスからです。表を持っているのは作り手だけなので、正確でありうるのはそこだけです。それには API キーが要り、完全にブラウザ内で動くページには持ちようがなく、あなたに求めてもいけないものです。ですからこのページにできる誠実なことは、数をでっち上げることではなく、どこへ行けばよいかを伝えることです。すでに手元のコードからそのモデルを呼んでいるなら、そこで使っているのと同じ鍵がこの問いにも答えます。
スペース・改行・インデントも数えられますか?
はい、どれも数えられますし、人が思うより積もります。インデントされたコード、段落のあいだの空行、貼り付けた表の中の余白はすべてバイトです。エンコーディングには複数のスペースをまとめて表す一つのトークンもあるので、費用はスペース一つにつき 1 トークンではありませんが、ゼロでもありません。長いシステムプロンプトを削っているなら、文を切り始める前に、書式を整え直すとどうなるかを測る価値があります。
私のテキストはサーバーに送られますか?
いいえ。選んだエンコーディングの表はこのサイトから一度だけ取得され、その後のカウントはすべて、あなた自身のブラウザの中で、別スレッドで計算されます。ネットワークパネルを開いて、入力しながら見ていてください。書いたものを運ぶリクエストはありません。保存も行われないので、ページを再読み込みすると欄は空で、消すものもありません。
プロンプトの費用や、収まるかどうかを教えてくれますか?
どちらも教えません。そしてどちらの拒みも意図的です。価格は数か月で古くなり、ここにはそれを捕まえられるものが何もないので、このガイドは代わりに計算を教え、単価は提供元自身のページに任せます。コンテキストウィンドウも同じ種類の動く数字ですし、テキストが収まるかどうかは、このページには見えない返答にもよります。得られるのは、どちらの問いもそこから始まる一つの数を、正確に計算したものです。

関連するツール