何が起きているのか?
大規模言語モデルに Prompt を送ると、何が起きるのでしょうか?
モデルはどのように結果を返すのでしょうか?
結果が異なることがあるのはなぜでしょうか?
ここではまず、Token(トークン)と確率という二つの重要な概念を知る必要があります。
この章では先に Token を取り上げます。
文の続きを作る実験
今はほかのことを忘れて、次の文を一緒に見てください。
もし突然あなたが
この文を短い一文として完成させるなら、どう書きますか?
少し立ち止まって、考えてみてください。
張三と李四が、それぞれ次のように答えたとします。
張三:もし突然あなたがくしゃみをしたら
李四:もし突然あなたが猫になったら
二人とも「もし突然あなたが」から短い一文を作るという条件を満たしていますが、答えは同じではありません。
なぜでしょうか?
一つの文には、合理的な続きが一つしかないとは限らないからです。すでに見た内容、知っている言葉、そのときの選択によって、次に何を書くかが変わります。
文をいくつかのまとまりとして見る
私たちが話したり文章を書いたりするとき、文全体を一度に考え終えているとは限りません。先へ進みながら、次に何を書くかを選ぶことがあります。
たとえば、同じ文でも区切り方は変わります。
この、文章を、書いている、とき、私も、一文字ずつ、考えている
この文章を、書いているとき、私も、一文字、ずつ考えている
意図的に区切りを制御したのではなく、いったん止まりたいと感じた場所に読点を入れました。二回の区切り方は完全には一致しません。
ここでは、読点で区切られた部分を一つずつの「印」として見てみましょう。すでに何が書かれているかによって、次のまとまりの候補が変わります。
張三にもう一度書いてもらう
張三にもう一度書いてもらうと、次のように書くかもしれません。
もし突然あなたがここに現れたら
もちろん、前回と同じ答えを返す可能性もあります。
私たちは張三ではないので、どれを選ぶかは分かりません。ただし、張三が使えるのは、自分が知っている文字、言葉、表現です。知らなければ、間違えたり「それらしい作り話」をしたりするかもしれません。
では、この流れをまず三段階で見てもよいでしょうか?
- ある程度の語彙と文を知っている。
- すでにある内容から、次に何を続けられるかを判断する。
- 続きが複数ある場合は、その中から一つを選ぶ。
ここで少し立ち止まって考えてください。普段、話したり書いたりするときにも、似た感覚はないでしょうか?
三つの小さな練習
すぐ下へ進まず、次の三問を紙に書くか画面へ入力してみてください。自分がどのように少しずつ文を続けるかにも注目します。
句読点も一文字として、次の文を 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 です。デコードすると元の文字列に戻ります。このテストは公式テストファイルで確認できます。
これは指定したエンコーディングと文字列だけの結果であり、ほかのモデルやエンコーディングでも同じになるという意味ではありません。
説明を読むだけで終わらせず、実際の分割を自分で試してみましょう。
- 現在使っているサービスの公式 Tokenizer またはカウントツールを開く。
- テスト日、サービス名、モデル名、ツールに表示されるエンコーディング名を記録する。
I love GPT pmt.と我愛 GPT pmt。を別々に入力する。- ツールが実際に示した分割、Token 数、表示される場合は Token ID も記録する。
- モデルやエンコーディングを切り替えられる場合は、別の選択肢でもう一度試す。
結果には毎回、モデル、エンコーディング、日付を一緒に残します。後で結果が変わったとき、文字が変わったのか、モデル、語彙、ツールが更新されたのかを区別できます。
簡単に言えば、「漢字を割る」という表現は、人には一文字に見える漢字が、常に一つの 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 をどのように決めるのでしょうか?
同じ文でも、異なる続きが生成されることがあるのはなぜでしょうか?
次は、確率とサンプリングについて学びます。
前の章: 初めての対話