生成AIの出力が 「毎回ブレる」、または 「固すぎて面白くない」——
そんなときに効くのが、次の3つのパラメータです。
temperaturetopPtopK
これらは 生成AIが「次に来る単語」をどう選ぶかを制御するもので、
出力の安定性・創造性・正確性を直接左右します。
この記事では、
✅ 直感で理解
✅ 具体例で仕組みが腑に落ちる
✅ 実務用途別におすすめ値が分かる
…という流れで、プロダクション運用でも使えるレベルまで整理します。
TL;DR(覚えるならこれだけ)
- temperature:ランダム性(冒険度)
- topK:候補を「上位K個」に絞る(固定数)
- topP:候補を「確率の合計がPになるまで」絞る(可変数)
temperature は「どれだけ冒険するか」
topP / topK は「そもそも候補をどこまで許すか」
1. そもそも生成AIはどう文章を作っているのか?
生成AIは文章を一気に生成しているわけではなく、基本的に
1単語ずつ「次に来る単語の候補」を確率で持ち、そこから1つ選び続けている
という仕組みです。
例えば、次の単語候補がこうだったとします:
| 候補 | 確率 |
|---|---|
| 「です」 | 0.40 |
| 「だ」 | 0.25 |
| 「になります」 | 0.15 |
| 「ですね」 | 0.10 |
| 「だよ」 | 0.05 |
| 「っす」 | 0.03 |
| 「である」 | 0.02 |
このとき、
「どこまで候補を許すか」「どれくらいランダムに選ぶか」
を制御するのが temperature / topP / topK です。
2. temperature(テンパラチャ)とは?
✅ temperature = ランダム性(冒険度)
- 低いほど:堅い・安全・再現性が高い
- 高いほど:表現が変わる・発想が広がる・脱線もしやすい
感覚値
-
0.0:ほぼ毎回同じ(超安定) -
0.2:安定しつつ柔軟 -
0.7:自然で柔らかい文 -
1.0+:創造性は出るが正確性が落ちやすい
例:「MVCを説明して」
-
temperature = 0.0:毎回似た構成・似た文 -
temperature = 0.9:例え話が増えたり、言い回しが大きく変わる
3. topK とは?
✅ topK = 「上位K個」しか選ばない(固定)
先ほどの候補表でいうと:
-
topK = 1→ 「です」しか選ばない -
topK = 3→ 「です / だ / になります」から選ぶ -
topK = 10→ 上位10候補まで許可
特徴
- Kが小さいほど:安定(でも単調になりやすい)
- Kが大きいほど:多様性(でも変な語彙も混ざりやすい)
4. topP とは?(核サンプリング / Nucleus Sampling)
✅ topP = 「確率の合計がPに達するまで」候補を許す(可変)
候補を確率が高い順に足していき、合計が P を超えたところまでが選択対象になります。
例:topP = 0.9 の場合(上の表)
- 「です」0.40 → 合計 0.40
- 「だ」0.25 → 合計 0.65
- 「になります」0.15 → 合計 0.80
- 「ですね」0.10 → 合計 0.90 ✅
→ ここまでの4候補から選ばれる
topPの特徴
- 候補数が状況によって変わる(可変)
- 文脈が明確なほど候補は少なく、曖昧なほど多くなる
- 実運用では topKより扱いやすいケースが多い
5. topK と topP の違いを一言で
- topK:個数で切る(固定)
- topP:確率で切る(可変)
6. 3つの関係(混乱しやすいので整理)
多くの実装では概念的に以下の順で効きます:
-
topK / topPで「候補集合」を絞る -
temperatureで確率分布の差をなめらかにする - その中からランダムに1つ選ぶ
temperatureが効く直感
- temperature ↑:低確率の候補も選ばれやすくなる
- temperature ↓:高確率の候補に寄る
7. よくある失敗パターンと対策(重要)
❌ 失敗1:temperatureを上げたら嘘が増えた
創造性は上がるが、正確性が落ちることがある。
✅ 対策:事実系タスクは 0.0〜0.3 に固定
❌ 失敗2:topPを高くしすぎて文章がブレる
topP = 0.95〜0.99 は候補が増えすぎてブレやすい。
✅ 対策:0.8〜0.95あたりが扱いやすい
❌ 失敗3:topKが大きすぎて変な表現が混ざる
候補が多すぎると脱線や不自然さが増える。
✅ 対策:topKは 20〜50 が扱いやすい(用途次第)
8. 用途別おすすめ設定(実務で一番効く)
✅ (A) JSON固定・仕様書・コード生成(安定性最優先)
- temperature:0.0〜0.2
- topP:0.8〜0.9
- topK:10〜40
狙い:フォーマット崩れを減らし、再現性を上げる
✅ (B) 要約・議事録・動画チャプター(安定+読みやすさ)
- temperature:0.2〜0.4
- topP:0.9
- topK:20〜50
狙い:読みやすさとブレのバランス
✅ (C) 企画・コピー・アイデア出し(創造性優先)
- temperature:0.7〜1.0
- topP:0.95
- topK:50〜100
狙い:アイデアの多様性を最大化
9. google.genai での設定例(Python)
google.genai SDKでは config に指定します:
from google import genai
client = genai.Client()
res = client.models.generate_content(
model="models/gemini-2.5-flash",
contents="MVCを初心者向けに説明して",
config={
"temperature": 0.2,
"top_p": 0.9,
"top_k": 40,
}
)
print(res.text)
10. 最後に:覚え方(超シンプル)
- temperature:勇気(冒険度)
- topK:候補を人数で制限
- topP:候補を確率(面積)で制限
Appendix:topPの「P」とtopKの「K」は何の略?
✅ topP の「P」 = Probability(確率)
topP は Nucleus Sampling(核サンプリング)とも呼ばれ、
「確率合計が P になるまで候補を集める」という意味です。
✅ topK の「K」 = “K個” を表す数学・統計上の記号
統計や機械学習では「上位K個」「K近傍」などで K=個数を表すのが一般的です。
推奨
実務で安定しやすい推奨セットはこれです:
- temperature = 0.2
- topP = 0.9
- topK = 40
まとめ
- temperature:ランダム性(冒険度)
- topK:上位K個(固定)
- topP:確率の合計Pまで(可変)
- 実務では topPの方が扱いやすいことが多い
- 安定運用は
temperature低め + topP低め + topK中程度