プロンプトエンジニアリング · Token

Token とは?

文の続きを作る実験を通じて Token、Tokenizer、Token ID を理解し、Token 数がモデルやエンコーディングによって変わる理由を学びます。

何が起きているのか?

大規模言語モデルに Prompt を送ると、何が起きるのでしょうか?

モデルはどのように結果を返すのでしょうか?

結果が異なることがあるのはなぜでしょうか?

ここではまず、Token(トークン)と確率という二つの重要な概念を知る必要があります。

この章では先に Token を取り上げます。

文の続きを作る実験

今はほかのことを忘れて、次の文を一緒に見てください。

もし突然あなたが

この文を短い一文として完成させるなら、どう書きますか?

少し立ち止まって、考えてみてください。

張三と李四が、それぞれ次のように答えたとします。

張三:もし突然あなたがくしゃみをしたら
李四:もし突然あなたが猫になったら

二人とも「もし突然あなたが」から短い一文を作るという条件を満たしていますが、答えは同じではありません。

なぜでしょうか?

一つの文には、合理的な続きが一つしかないとは限らないからです。すでに見た内容、知っている言葉、そのときの選択によって、次に何を書くかが変わります。

文をいくつかのまとまりとして見る

私たちが話したり文章を書いたりするとき、文全体を一度に考え終えているとは限りません。先へ進みながら、次に何を書くかを選ぶことがあります。

たとえば、同じ文でも区切り方は変わります。

この、文章を、書いている、とき、私も、一文字ずつ、考えている
この文章を、書いているとき、私も、一文字、ずつ考えている

意図的に区切りを制御したのではなく、いったん止まりたいと感じた場所に読点を入れました。二回の区切り方は完全には一致しません。

ここでは、読点で区切られた部分を一つずつの「印」として見てみましょう。すでに何が書かれているかによって、次のまとまりの候補が変わります。

張三にもう一度書いてもらう

張三にもう一度書いてもらうと、次のように書くかもしれません。

もし突然あなたがここに現れたら

もちろん、前回と同じ答えを返す可能性もあります。

私たちは張三ではないので、どれを選ぶかは分かりません。ただし、張三が使えるのは、自分が知っている文字、言葉、表現です。知らなければ、間違えたり「それらしい作り話」をしたりするかもしれません。

では、この流れをまず三段階で見てもよいでしょうか?

  1. ある程度の語彙と文を知っている。
  2. すでにある内容から、次に何を続けられるかを判断する。
  3. 続きが複数ある場合は、その中から一つを選ぶ。

ここで少し立ち止まって考えてください。普段、話したり書いたりするときにも、似た感覚はないでしょうか?

三つの小さな練習

すぐ下へ進まず、次の三問を紙に書くか画面へ入力してみてください。自分がどのように少しずつ文を続けるかにも注目します。

句読点も一文字として、次の文を 20 文字程度まで続けてください。
私の故郷は、
次の文を完成させてください。
今日、私は gptpmt で……
次の形を使って一文を作ってください。
なぜなら……だから……

書けましたか?

この実験から、文章を生成するとき、前にある内容が後に続く可能性のある内容に影響する、という感覚をつかめます。

ただし、これはあくまで比喩です。大規模言語モデルが Token を処理する方法は、人間の脳が実際に考え、話す仕組みと同じではありません。

Token とは?

モデルは、私たちが考える「文字数」や「単語数」のまま文章全体を処理するわけではありません。

テキストはモデルに入る前に、そのモデルに対応した Tokenizer(トークナイザー)を通り、一連の Token に変換されます。モデルはその Token を処理し、新しい Token を順に生成した後、私たちが目にする文字へ変換します。

一つの Token は、次のような単位になる可能性があります。

  • 一つの単語全体
  • 単語の一部分
  • 漢字や文字の一部分
  • 空白と文字の組み合わせ
  • 句読点やその他のバイト列

したがって、Token 数は文字数とも単語数とも一致しません。

たとえば、次の文を見てください。

I love prompt engineering.
私はプロンプトエンジニアリングが好きです。

この二つの文が何個の Token に分かれるかは、文字数だけでは分かりません。テキストがまったく同じでも、モデルやエンコーディングが変われば、分割方法や Token 数も変わる可能性があります。

一部のモデルの Tokenizer は、BPE(Byte Pair Encoding、バイト対符号化)やその派生方式を使用しますが、別の方式を採用するモデルもあります。モデルによって語彙やエンコーディング方式が異なるため、一つのツール、一枚のスクリーンショット、一回のテスト結果を、すべてのモデルに共通する固定ルールとして扱うことはできません。

言語が変わると「勝手が違う」Tokenizer

まず、次の英語を見てください。

I love GPT pmt.

ここには、文字、空白、単語、句読点があります。Tokenizer は必ずしも完全な単語ごとに分割しません。I が単独の Token になったり、先頭の空白が後ろの文字と組み合わされたり、GPT がさらに小さな部分へ分かれたりする場合があります。

なぜでしょうか?

Tokenizer は、国語の授業で考える「文字」や「単語」ではなく、自分の語彙とエンコーディング規則に従ってテキストを分割するからです。

では、中国語はどうでしょうか?

漢字一文字が、そのまま一つの Token に対応するのでしょうか?

本当にそうでしょうか?

先ほどの GPT が「二つに割れる」ことがあるなら、漢字も「割れる」のでしょうか。たとえば、次の「愛」です。

我愛 GPT pmt。

もちろん、漢字そのものが真ん中から割れるわけではありません。ただし、コンピューターは文字をエンコーディングされた値として保存します。テキストをバイト単位で扱う Tokenizer では、一つの漢字に対応するバイト列が複数の Token に分かれる場合があります。古いツールがその断片を一つずつ表示すると、意味の分からない代替文字に見えることもあります。

まず、再現できる実例を一つ見てみましょう。2026-08-31 時点の OpenAI 公式 tiktoken テストでは、cl100k_base で hello world をエンコードすると [15339, 1917] となり、合計 2 Token です。デコードすると元の文字列に戻ります。このテストは公式テストファイルで確認できます。

これは指定したエンコーディングと文字列だけの結果であり、ほかのモデルやエンコーディングでも同じになるという意味ではありません。

説明を読むだけで終わらせず、実際の分割を自分で試してみましょう。

  1. 現在使っているサービスの公式 Tokenizer またはカウントツールを開く。
  2. テスト日、サービス名、モデル名、ツールに表示されるエンコーディング名を記録する。
  3. I love GPT pmt. と 我愛 GPT pmt。 を別々に入力する。
  4. ツールが実際に示した分割、Token 数、表示される場合は Token ID も記録する。
  5. モデルやエンコーディングを切り替えられる場合は、別の選択肢でもう一度試す。

結果には毎回、モデル、エンコーディング、日付を一緒に残します。後で結果が変わったとき、文字が変わったのか、モデル、語彙、ツールが更新されたのかを区別できます。

簡単に言えば、「漢字を割る」という表現は、人には一文字に見える漢字が、常に一つの Token だけに対応するとは限らないことを覚えるための比喩です。

ただし、これもすべてのモデルに共通する固定ルールではありません。モデル、語彙、エンコーディングが変われば、同じ漢字が一つの Token になることも、複数になることもあります。中国語が英語より常に多くの Token を使うとも限りません。正確な数を知るには、対象モデルに対応したツールで実際に確認してください。

Token ID とは?

Tokenizer は各 Token を語彙内の整数識別子に対応づけます。この数値が Token ID です。

テキスト:こんにちは
Token:[こん][にちは]
Token ID:[サンプル ID 1][サンプル ID 2]

上記は概念を説明するためだけの例で、実在するモデルの分割結果を示すものではありません。

Token ID は、モデルの語彙に付けられた番号のようなものです。モデルやエンコーディングが変われば、同じテキストの Token ID がまったく異なる場合があります。また、単語の重要度、事実の信頼性、モデルの確信度を表すものでもありません。

Token を知る必要があるのはなぜか?

まず、モデルが一度に処理できる内容には容量の上限があります。入力、会話履歴、ツールの説明、出力のすべてが Token を使用します。

次に、「500 字の日本語を書く」という要件と、「生成する Token の上限」を指定することは同じではありません。業務上、厳密な文字数が必要なら、モデルが生成した後に再度確認する必要があります。

最後に、多くの API は、入力と出力に使われた Token を記録します。具体的な計測方法はサービスやモデルによって変わるため、実際の API ドキュメントとレスポンスの usage データを確認してください。

正確な数が必要なときは、「漢字一文字は何 Token」といった固定式を使わないでください。実際に利用するモデルを確認してから、そのサービスに対応した Tokenizer または計数 API を使います。

OpenAI の利用者は、公式の Tokenizer でテキストの分割を確認できます。ほかのサービスでは、それぞれの公式ツールとドキュメントを使ってください。

冒頭の問いに戻る

一連の Token を受け取ったモデルは、次の Token をどのように決めるのでしょうか?

同じ文でも、異なる続きが生成されることがあるのはなぜでしょうか?

次は、確率とサンプリングについて学びます。

前の章: 初めての対話

次の章: 確率、サンプリング、Temperature

Luffy Liu
Luffy Liu

Independent product builder · AI, agents and real workflows.