この記事の音声は準備中です。
音声の一覧・再生リストへLLM はどうやってテキストを生成するか
この記事の目的
LLM の出力が「次の 1 トークンの予測を繰り返した積み上げ」であることを理解し、温度(temperature)などの推論パラメータを設計判断として扱えるようになります。あわせて、実務で毎日直面する性質 — 出力が毎回揺れる・ストリーミングLLM の応答を生成と同時に逐次受信・表示する方式。Agent の体感品質を左右する基本技術。できる・出力が長いほど遅く高い — がすべてこの 1 つの仕組みから導けることを掴みます。
対象読者
- LLM API は使えるが、パラメータを「おまじない」のまま使っているエンジニア
- 非決定性・出力切断など LLM 特有の挙動を、仕組みから説明できるようになりたい人
前提知識
- LLM API(チャット補完 API)を呼び出した経験(このライブラリ共通の前提)
- ライブラリ内の前提ドキュメントはありません — 本記事が 10 章(LLM 基礎)の最初の 1 本です
本文
概要: たった 1 つのループ
本記事が扱う自己回帰型 LLM の基本動作は、「これまでのトークンを条件に次の 1 トークンの確率分布を計算し、そこから 1 つ選んで末尾に足す」を、停止条件まで繰り返すことです。これを自己回帰生成(autoregressive generation)と呼びます。実装ではキャッシュや投機的デコーディング下書きモデルの複数トークンを本命モデルでまとめて検証する推論高速化。貪欲法では一致する接頭辞を採用し、確率的生成では受理確率と棄却時の補正分布を用いる。これらを正しく実装し、同じ生成条件を適用する方式では本命の分布を保てる。速度改善は下書きの受理率と検証費用に依存する。を使う場合もあります。トークン(token)はモデルが扱うテキストの単位です(詳細はトークナイザとトークン経済)。
図を元の大きさで表示
図の中をスクロールして読めます。キーボードでは図の領域へ Tab で移動し、矢印キーを使います。読み終わったら、この見出しをもう一度選ぶと閉じます。
長い推論も、コードも、丁寧な謝罪文も、モデルにとってはすべて「次の 1 トークン」の連続です。この単純さを知っていることが、以降のすべての実務判断の土台になります。
次トークン予測という実体
モデル本体は、状態を持たない関数です — 「ここまでのトークン列」を受け取り、「語彙中の各トークンが次に来る確率」を返します。知識も推論らしき振る舞いも、この形式の中に押し込まれています。ここから 2 つの実務的な帰結が出ます。
- 自分の出力が、以降の生成の入力になる: 生成の途中経過は文脈として確定し、モデルはそれを「取り消せません」。序盤で方向を誤ると後半も引きずられます。逆に、結論の前に考察を書かせると精度が変わるのは、書いた考察が次トークンの予測条件に加わるからです(プランニングと推論)
- 「途中でやめて考え直す」は起きない: 見かけ上の自己修正(「すみません、訂正します」)も、確定済みの文脈の上に続きを生成しているだけです。やり直しをさせたければ、呼び出し側が文脈を作り直す必要があります
サンプリングと温度
確率分布から次の 1 トークンを「選ぶ」方法がサンプリングで、ここに主要な推論パラメータが集まっています。
| 方法・パラメータ | 意味 | 実務での使いどころ |
|---|---|---|
| 貪欲法(最大確率を常に選ぶ) | 揺らぎ最小。反復・単調に陥ることがある | 温度 0 指定が近い挙動 |
| 温度(temperature) | 分布の尖り具合。低いほど高確率トークンに集中、高いほど平坦化 | 設定を受け付けるモデルでは分類・抽出は低め、多様性は中〜高を評価候補にする |
| top-p(累積確率での足切り) | 確率上位から累積が指定値に達する候補集合を作り、そこからサンプリング | 候補の裾を切る調整。安全性や正確性を保証する設定ではない |
温度設定を受け付けるモデルでは、後続をコードで処理する分類・抽出は低温度、多様性に価値がある出力は高めを評価候補にします。一部の最新モデルは temperature / top_p / top_k の非既定値を 400 エラーで拒否します。低温度の推奨は採用モデルの仕様を確認してから適用し、非対応モデルでは設定を省略してプロンプト・構造化出力LLM の出力を JSON Schema などの機械可読なスキーマに従わせる技術。後続の処理がコードである出力(分類・抽出・スコア)に使う。と評価で扱います。
「同じ入力で違う出力」になる理由
LLM の非決定性には 2 つの層があります。
- サンプリングの確率性: 温度が 0 より大きければ、同じ分布からでも選ばれるトークンは毎回変わりえます。これは意図された挙動です
- 実装レベルの揺らぎ: 温度を 0 にしても、並列計算の丸め誤差やサービス側の実装要因により、完全に同一の出力は一般に保証されません。確率が拮抗した 2 つのトークンは、ごくわずかな計算差で入れ替わり、その 1 トークンの違いが以降の生成を分岐させます
「1 回通ったテスト」だけでは品質を保証できません。 評価を複数ケース・複数回で設計します(Agent 評価の基礎)。自由文の回帰テストプロンプト・ツール・モデルの変更で既存の品質が壊れていないかを、評価データセットの再実行と前回比較で検知するテスト。では意味や要件への適合も評価します。一方、分類ラベル・集計値・必須のツール引数は完全一致を成功条件にでき、その成功率を複数回の実行で測ります(回帰テストと CI 組み込み)。
停止とストリーミング
生成の停止には、例えば次の種類があります。API ではツール要求・拒否・継続可能な停止なども別に表現されるため、採用先の停止理由に対応づけます。
- 自然停止: モデルが「応答の終わり」を意味するトークンを選ぶ
- 停止シーケンス: 開発者が指定した文字列が現れたら打ち切る
- 上限打ち切り: 最大出力トークン数(max_tokens)に達して強制終了する
上限で打ち切られると、JSON の構文が壊れたり、構文は有効でも必要な結果が欠けたりします。停止理由(finish reason)と出力の検証をせず後続へ流すと、不完全な結果を成功扱いしかねません(構造化出力、Agent ループ)。
また、1 トークンずつ順に確定していく仕組みだからこそ、生成と同時に配信するストリーミングが自然に成立します(ストリーミングと Agent の UX 実装パターン)。生成時間とコストは出力トークン数にほぼ比例するため、「出力を短く設計する」ことがレイテンシとコストの双方に効く最適化になります(レイテンシ最適化、コスト管理)。
この理解が効く場面
- 構造化出力: スキーマ強制は「その位置で選べるトークンを制約する」仕組みで実現されるのが主流です。だから形式は保証できても、内容の正しさは保証されません(構造化出力)
- 評価設計: 非決定性が仕様だと分かっていれば、単発の成否ではなく分布(合格率・ばらつき)で品質を測る設計になります(Agent 評価の基礎)
- レイテンシ・コスト: 出力長比例の構造を知っていれば、「不要な説明を書かせない」「要約を返させる」といった出力側の設計が最初の最適化になります
- パラメータの設計: 温度・top-p を「試して良かった値」ではなく「タスクの性質から選んだ値」として文書化できます
実務での注意点
アンチパターン
- 自由文の表現まで温度 0 で固定されると期待する → 意味が同じ言い換えでも回帰失敗になる → 自由文は意味や要件で評価し、分類ラベル等の一致が必要な出力とは基準を分ける
- 1 回のデモ成功で品質を判断する → サンプリングの揺らぎで次の実行は失敗しうる → 複数ケース・複数回の評価で分布を見る
- 停止理由を確認せず出力を後続処理に流す → 上限打ち切りの壊れた JSON・尻切れ応答が静かに下流を壊す → finish reason のチェックをコードに入れる
- 分類・抽出タスクを高めの温度のまま運用する → 同じ入力への判定が揺れて信頼を失う → 設定可能なモデルでは低温度を評価し、非対応モデルでは設定を省略して複数回評価する
チェックリスト
- 応答の停止理由(自然停止/打ち切り)をコードで確認している
- 採用モデルが温度・サンプリング設定を受け付けるか確認し、対応する設定だけを記録している
- 非決定性を前提にした評価(複数ケース・複数回・合格率)がある
- 出力トークン数がレイテンシ・コスト要件に収まるよう出力側を設計した
関連トピック
- トークナイザとトークン経済 — 生成の単位「トークン」の実体(次に読む 1 本)
- 構造化出力 — デコード制約の実務(形式保証と内容保証の違い)
- Agent 評価の基礎 — 非決定性を前提にした評価設計
- ストリーミングと Agent の UX 実装パターン — 逐次生成を UX に活かす側
- レイテンシ最適化 — 出力長比例の構造への対処
- プランニングと推論 — 「考察を書かせると精度が変わる」の実務側
- マルチモーダルモデルの仕組み(数式なしの直感) — 画像・音声入力も次トークン予測の枠組みに載る応用
- 推論の内部機構(サンプリング・KV キャッシュ・量子化) — サンプリングの数理・推論高速化の学術的な詳解(本記事のさらに深く)
参考資料
-
Claude API parameter deprecations — 非既定サンプリング設定の拒否(アクセス日: 2026-10-03)
-
Attention Is All You Need — 自己回帰デコーダーと次トークンの出力分布(アクセス日: 2026-09-10)
-
The Curious Case of Neural Text Degeneration — デコード方法による生成品質の違いと nucleus sampling(top-p)(アクセス日: 2026-09-10)
-
Handling stop reasons(Anthropic) — 正常終了・上限・拒否・継続の具体的な API 契約(アクセス日: 2026-09-10)
TODO・未確認事項
なし