- Temperatureは出力のランダム性を調整するパラメータで、低いと決定論寄り、高いと多様で創造的な文章になります
- Top-kは候補を上位k個に絞り、Top-pは累積確率で候補を切る手法で、フィルタリングの考え方が異なります
- 用途別の推奨値やOpenAI・Anthropic・Geminiのパラメータ差異、設定時の注意点まで体系的に整理します
なぜ出力を制御できるのか
ChatGPTやClaudeのような大規模言語モデル(Large Language Model、以下LLM)は、文章を1単語ずつ予測しながら生成します。正確には「トークン」と呼ばれる単語の断片単位ですが、ここでは単語と考えても差し支えありません。
LLMは次に来る単語を1つに決め打ちしているわけではありません。「次に来そうな単語」それぞれに確率を割り当て、その確率分布から1つを選んでいます。たとえば「今日の天気は」という入力に対して、「晴れ」が40%、「雨」が25%、「曇り」が20%といった具合に候補が並びます。
この「確率分布からどう1単語を選ぶか」を決めるのが、サンプリングパラメータです。TemperatureやTop-p、Top-kを調整すると、同じ入力でも堅実で無難な出力になったり、意外性のある多彩な出力になったりします。パラメータの意味を理解すると、事実回答・コード生成・創作といった目的に応じて出力の質を安定させられます。

Temperatureの役割
Temperature(温度)は、出力のランダム性を調整する最も基本的なパラメータです。確率分布の「メリハリ」を変えると考えると分かりやすいでしょう。
値を低くすると、確率が高い単語がさらに選ばれやすくなり、確率の低い単語はほとんど選ばれなくなります。結果として毎回ほぼ同じ、決定論的な出力に近づきます。逆に値を高くすると分布が平らになり、確率の低い単語にもチャンスが回ってきます。多様で創造的な反面、文脈から外れた単語が混じるリスクも増えます。
多くのAPIでTemperatureの既定値は1.0です。OpenAIやGoogleでは0から2まで、Anthropicでは0から1までと、上限は提供元によって異なります。事実に基づく質問応答なら0から0.3程度、詩やアイデア出しのような創作なら0.9以上、というのが目安になります。なお、Temperatureを0にしても出力が完全に固定されるとは限らない点は覚えておくとよいでしょう。計算処理の都合でわずかなばらつきが残る場合があります。
Top-pとTop-kの違い
TemperatureがランダムさのSpanを調整するのに対し、Top-pとTop-kは「そもそも選択肢に入れる候補を絞り込む」パラメータです。確率の低いおかしな単語を候補から除外し、暴走を防ぐ役割を担います。
Top-kの考え方
Top-kは、確率が高い順に上位k個の候補だけを残し、それ以外を切り捨てる手法です。たとえばk=5なら、確率の高い5単語の中からのみ次の単語を選びます。図1で言えば、ロングテール部分の低確率な候補をまとめて除外するイメージです。
シンプルで分かりやすい一方、常に固定個数で切るため融通が利きにくい面もあります。候補が実質2〜3個しかない場面でも無理に5個を残したり、逆に有力候補が多い場面で5個に絞りすぎたりすることがあります。
Top-pの考え方
Top-p(Nucleus Sampling、核サンプリング)は、確率が高い順に候補を足し上げ、累積確率が指定値に達したところで打ち切る手法です。たとえばp=0.9なら、確率を合計して90%に届くまでの候補だけを残します。
この方式の利点は、状況に応じて候補数が自動で伸縮することです。有力候補が1つに集中していれば候補は少なく、多くの単語が拮抗していれば候補は多く残ります。文脈の状況を反映して柔軟に絞り込めるため、Top-kより扱いやすいとされ、実務ではTop-pが使われる場面が多く見られます。

パラメータの適用順序
これらのパラメータは、それぞれ独立に働くのではなく、順番に適用されます。多くの実装では、まずTemperatureで確率分布のメリハリを調整し、次にTop-kで候補を上位k個に絞り、最後にTop-pで累積確率による絞り込みをかけ、残った候補から最終的に1単語を選びます。
順序を意識すると、パラメータの組み合わせで何が起きるか予想しやすくなります。たとえばTemperatureを高くして分布を平らにしても、その後のTop-pで候補を厳しく絞れば、極端に外れた単語は排除されます。ただし具体的な適用順序はライブラリや提供元の実装に依存するため、厳密な挙動は使用するAPIのドキュメントで確認するのが確実です。

用途別のおすすめ設定
実際にどんな値を使えばよいか、代表的な用途ごとの目安を表にまとめます。あくまで出発点であり、実際の出力を見ながら微調整するのが基本です。
用途 | Temperature | Top-p | 狙い |
|---|---|---|---|
事実回答・要約 | 0〜0.3 | 1.0(既定) | 正確さと再現性を優先 |
コード生成 | 0〜0.2 | 1.0 | ぶれない安定した出力 |
一般的な対話 | 0.7前後 | 0.9〜1.0 | 自然さと多様性の両立 |
創作・アイデア出し | 0.9〜1.2 | 0.95 | 意外性と幅を重視 |
社内の問い合わせ対応や専門文書の要約など、正確さが問われる用途ではTemperatureを低く保つのが定石です。実際に企業でLLMの正答率を高める取り組みでは、パラメータ調整に加えて検索と組み合わせる工夫が重ねられており、塩野義製薬が正答率を50%から90%に改善した事例のように、設定と設計を組み合わせて精度を底上げしています。
その他の制御パラメータ
サンプリングの3つ以外にも、出力を整えるパラメータがあります。目的に応じて併用すると制御の幅が広がります。
- 最大トークン数: 生成する長さの上限を決め、冗長な回答やコストの増加を抑えます
- 停止シーケンス: 指定した文字列が現れたら生成を止め、回答の構造や長さを制御します
- 頻度ペナルティ: すでに多く登場した単語ほど出にくくし、同じ表現の繰り返しを減らします
- 存在ペナルティ: 一度でも登場した単語に一律のペナルティをかけ、話題の多様性を促します
頻度ペナルティと存在ペナルティは似た働きをするため、両方を同時に強くいじると効果が読みにくくなります。TemperatureとTop-pの関係も同様で、一般には片方を固定してもう片方だけを調整するのがすすめられます。両方を同時に動かすと、どちらが効いているのか切り分けにくくなるためです。
主要APIのパラメータ差異
同じ「Temperature」でも、提供元によって範囲や既定値、扱えるパラメータが異なります。API乗り換えや複数モデルの比較を行う際は、この違いを押さえておくと設定の移植がスムーズです。
提供元 | Temperature | Top-p / Top-k | ペナルティ系 |
|---|---|---|---|
OpenAI | 0〜2(既定1.0) | top_pあり、top_kなし | 頻度・存在ペナルティあり |
Anthropic(Claude) | 0〜1(既定1.0) | top_p・top_kあり(上級者向け) | なし |
Google(Gemini) | 0〜2(モデル依存) | topP・topKあり | 頻度・存在ペナルティあり |
Anthropicの公式ドキュメントでは、top_pとtop_kは上級者向けの機能と位置づけられ、通常はTemperatureの調整で十分とされています。またextended thinking(拡張思考)を有効にした場合など、モデルの動作モードによってはサンプリングパラメータの指定に制限がかかることがあります。対応状況はモデルの更新で変わり得るため、最新の仕様は必ず各提供元の公式ドキュメントで確認してください。
設定時のよくある誤解
最後に、つまずきやすいポイントを整理します。まず「Temperatureを0にすれば必ず同じ答えが返る」という思い込みです。前述の通り、計算上のばらつきで完全な再現は保証されません。厳密な再現性が必要なテストでは、この点を前提に検証設計を組む必要があります。
次に「値を上げれば賢くなる」という誤解です。Temperatureやランダム性は賢さではなく多様性のパラメータであり、上げすぎると文脈から外れた出力が増えます。事実性が求められる場面ではむしろ低めが有利です。
そして「全パラメータを同時に細かく調整する」やり方も避けたいところです。まずTemperatureだけを動かして狙いに近づけ、必要ならTop-pを補助的に触る、という順で進めると、どの設定が出力にどう効いているかを見極めやすくなります。パラメータは一度で正解を当てるものではなく、実際の出力を観察しながら少しずつ寄せていくものだと考えると、扱いやすくなるはずです。