3行でいうと
- 温度・top_p・top_kは、次のトークンの選び方を変えるだけで、賢さを変える設定ではない。
- Claudeの新しい世代(Opus 5.5、Sonnet 5.5、Haiku 5.5など)では、既定値以外を送ると400エラーになる。
- OpenAIのGPT-6系では、推論の強さを「なし」以外にすると temperature と top_p は外す。
- Gemini 3.x は、既定値のままにするよう公式が強く勧めている。
この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書や論文を読んでまとめたものです。モデルの名前や仕様は2026年10月8日に確認した内容で、変わることがあります。
先に結論
- この3つは、AIの「性格」を変えるつまみではなく、同じ確率表から次の一語を引くときの「引き方」を変えるつまみです。
- 2026年10月時点の主要APIでは、つまみそのものが外されつつあります。Claudeは新しい世代で、既定値以外の指定をエラーにします。OpenAIのGPT-6系は、推論を使う設定では指定しないよう案内しています。Geminiは、変えないことを勧めています。
- ですから実務では、まず「ばらつきを変えたい」ときの手段が、つまみから別のもの(指示文の書き方、推論の強さ、複数回生成して選ぶ方法)に移っている、と考えるほうが安全です。見立てです。
前提:AIは「確率表」から一語ずつ引いている
AIは、文章を一度に作るのではなく、「次に来るトークン(文字や単語の断片)」を1つずつ決めて並べています。決めるときには、まず語彙の全部(とても多くの候補)に、点数が付きます。この点数をロジット(確率になる前の生の点数)と呼びます。点数を確率に直す計算がソフトマックスです。そのあと、確率表から1つをサンプリング(確率に従って引く)します。
つまみは、この「点数から確率へ」と「確率表から引く」の段階に作用します。
| つまみ | 作用する段階 | 一言でいうと |
|---|---|---|
| 温度(temperature) | 点数を確率に直す前 | 確率表を尖らせる/平らにする |
| top_p(核サンプリング) | 確率表から引く前 | 確率の上位から累積p%までに絞る |
| top_k | 確率表から引く前 | 上位k個までに絞る |
温度:確率表の「尖り具合」
論文(Holtzmanらの「The Curious Case of Neural Text Degeneration」、ICLR 2020)に、温度を入れたソフトマックスの式があります。点数を温度tで割ってからソフトマックスにかけます。論文では、tを0以上1未満にすると、確率の高いものに偏り、確率の低い「すそ野」が薄くなる、と説明されています。
僕らの計算です。例として、5つの候補の点数が 3, 2, 1, 0, -1 だったとします(この数字は説明のための仮のものです)。
| 温度 | 候補1 | 候補2 | 候補3 | 候補4 | 候補5 |
|---|---|---|---|---|---|
| 0.5 | 86.5% | 11.7% | 1.6% | 0.2% | 0.0% |
| 1.0 | 63.6% | 23.4% | 8.6% | 3.2% | 1.2% |
| 2.0 | 42.9% | 26.0% | 15.8% | 9.6% | 5.8% |
温度を下げると、1位の候補にほぼ決まります。温度を上げると、2位以下も引かれやすくなります。温度が0に近いと、毎回ほぼ1位を選ぶ動きになります。ただしAnthropicのAPI文書には、温度を0.0にしても結果は完全には決まらない(毎回同じにはならない)と書かれています。
論文の別の観察も重要です。温度を下げると文章の質は上がりやすい一方、多様さは落ちる、という先行研究が紹介されています。さらに、論文の実験では、温度が0.9より低いと繰り返し(同じ言葉の連続)が大きく増えた、と書かれています。
top_p:確率の上位から「累積p%」まで
top_p(核サンプリング、nucleus sampling)は、確率の高い順に候補を足していき、合計がpを超えたところで打ち切る方法です。残った候補だけで、確率を比率で計算し直して引きます。論文はこの仕組みを、確率の「核(nucleus)」だけから引く方法、と呼んでいます。
僕らの計算です。上の表の温度1.0で、top_p=0.9とすると、63.6%、87.0%(累計)、95.6%(累計)と足して、3個目で0.9を超えます。候補は上位3個に絞られ、4個目と5個目は引かれません。温度2.0なら、4個目まで必要です。つまり、確率表が平らなときは候補が多く、尖っているときは少なくなる。ここがtop_pの特徴です。
OpenAIのAPI文書でも、top_pは「温度の代わりになる方法」と説明され、0.1なら確率の上位10%分だけを見る、と書かれています。同じ文書は、温度とtop_pは「どちらかだけを変えることを勧める(両方ではなく)」としています。
top_k:上位k個までに固定
top_kは、確率の高い順にk個だけ残す方法です。AnthropicのAPI文書では、確率の低い「すそ野」の応答を取り除くためのもので、高度な用途向けと説明されています。
論文は、kを固定する難しさを指摘しています。文脈によって、次の語の候補が何十個も同じように妥当な場合もあれば、1つか2つにほぼ決まる場合もあります。kが小さいと前者でつまらない文章になり、kが大きいと後者で不適切な候補まで入る、という説明です。top_pは、候補の数が状況で増減するので、この点を避けられる、というのが論文の主張です。
論文の比較表(Holtzmanら、人間の文章に近いか)
論文の表1には、デコード(文章の生成方法)ごとの指標があります。数字は論文のものを写したもので、条件は論文の実験に限ります。
| 方法 | 繰り返しの割合 | HUSE(人手と統計を合わせた評価。高いほどよい) |
|---|---|---|
| 人間の文章 | 0.28% | (対象外) |
| 貪欲法(常に1位を選ぶ) | 73.66% | (対象外) |
| 純粋なサンプリング(そのまま引く) | 0.22% | 0.67 |
| 温度0.9 | 0.66% | 0.79 |
| top-k=40 | 0.78% | 0.19 |
| top-k=640 | 0.28% | 0.94 |
| top-k=40と温度0.7を併用 | 8.86% | 0.08 |
| 核サンプリング(p=0.95) | 0.36% | 0.97 |
読み取れること(論文の範囲で)は次のとおりです。
- 常に1位を選ぶと、繰り返しが73.66%と極端に多くなります。
- 低めの温度とtop-kの併用(k=40、温度0.7)は、繰り返しが8.86%に増え、HUSEも低くなっています。
- 核サンプリングは、この表でHUSEが最も高い値でした。
この比較は2019〜2020年のモデルについてのものです。今のAIにそのまま当てはまるかどうかは、この論文からは言えません。
主要APIの現状(2026年10月8日確認)
Anthropic(Claude)
Claude Platform Docsのモデル別の案内では、次のとおりです。
- Claude Fable 5.1、Mythos 5.1、Fable 5、Mythos 5、Mythos Preview、Opus 5.5、Opus 5、Opus 4.8、Opus 4.7、Sonnet 5.5、Sonnet 5、Haiku 5.5 では、
temperature、top_p、top_kに既定値以外を入れると、思考(thinking)を使うかどうかに関係なく、すべてのリクエストで400エラーになります。 - それより古いモデルでは、制限は「思考を有効にしている間」だけです。思考中は temperature と top_k が使えず、top_p は0.95〜1の範囲だけ使えます。
- Messages APIの項目説明は、これらを「非推奨(Deprecated)」としています。Opus 4.6より後に出たモデルは、temperatureは1.0だけ、top_pは0.99以上だけを互換のために受け付け、top_kはどんな値も拒否される、と書かれています。
- Sonnet 5.5とOpus 5.5の移行ガイドにも、非既定値は400エラー、と書かれています。Opus 5.5の移行ガイドは、Python SDK(バージョン1.0以降)にはそもそも定義がなく、渡すと
TypeErrorになる、とも述べています。
古いコードを新しいモデルに切り替えるとき、設定を残したまま送ると、すぐエラーになります。
OpenAI
- Responses APIの項目説明では、temperatureは0〜2、値が高いとランダム、低いと集中・決定的、と書かれています。
- GPT-6系の移行案内(Using GPT-6)には、推論の強さ(reasoning effort)が
none以外のときは、temperature、top_p、top_logprobsを外すように、と書かれています。Chat Completionsではlogprobsも外します。 - 同じ案内によると、GPT-6 AstraとGPT-6.1 Solは
noneを受け付けず、GPT-6 SolとGPT-6 Lunaは受け付けます。つまり、Astra/6.1 Solでは、事実上これらのつまみは使えません(僕らの読みです。ここは一つのページの記述にもとづきます)。
Google(Gemini)
- Gemini APIの「トラブルシューティング」ページに、
temperature、top_p、top_kは変更できるが、Gemini 3.xでは既定値のままにすることを強く勧める、とあります。温度を1.0より下げるなどすると、ループ(同じ出力の繰り返し)や、特に複雑な数学・推論での性能低下のような予期しない動きが出ることがある、という注意です。 - 同じページには、繰り返しが出るときは温度を上げる(0.8以上)とよい、という対処も載っています。
使い分けの考え方(見立てです)
見立てです。以下は、読んだ資料からこの記事は、組み立てた整理で、検証したものではありません。
- まず、使っているモデルがつまみを受け付けるかを確認する。 新しいClaudeやGPT-6系では、そもそも指定しない前提で設計します。
- つまみが使える古いモデルや他の基盤モデルでは、温度かtop_pのどちらか一方だけを変える。 OpenAIの文書がそう勧めています。
- ばらつきを抑えたい用途(分類、抽出、要約の統一)では、つまみより出力の形式を固定するほうが効く場合が多そうです。 構造化出力(出力の形をJSONなどに固定する機能。Claudeの文書にも項目があります)は、そのための手段の候補です。ただし温度を下げても毎回同じ結果にはならない、とAnthropicも書いているので、完全な再現性が必要なら、結果を保存して使い回す設計のほうが確実です。
- ばらつきを増やしたい用途(案出し)では、1回で良い案を求めず、複数回生成して選ぶ。 温度に頼れない場合の代替です。
つまずきやすい点
- 温度0でも毎回同じにならない。 公式がそう書いています。テストの期待値を「完全一致」にしないでください。
- 温度とtop_pを両方動かす。 OpenAIは、どちらか片方だけを変えることを勧めています。
- 古いSDKのコードをそのまま新モデルに移す。 400エラーの原因になります。移行ガイドの「削除する項目」の一覧を確認してください。
- 推論モデルの出力がぶれると感じて、温度で押さえようとする。 設定できない以上、推論の強さ(effort)や指示文の側を見直す必要があります。
気をつけること
- この記事は、実際に使って確かめた記録ではありません。上記は公式文書と論文の記述です。
- OpenAIの「推論が
none以外ならtemperatureとtop_pを外す」は、GPT-6の案内ページ1か所の記述で確認しました。別のページで同じ文言は確認できていません。 - Geminiの温度の範囲や、Gemini側で推論モデルが設定をどう扱うかの細部は、読んだページでは確認できていません。
- 論文の数字は2019〜2020年のモデルの実験です。現在のAIにそのまま当てはまるとは言えません。
- 温度の表は、説明のための仮の点数による僕らの計算で、実際のモデルの確率ではありません。
- モデル名・対象範囲・エラーの条件は更新されます。使う前に、各社の最新の文書を見てください。
出典
- Create a Message(Claude API Reference、Anthropic、2026年10月8日確認)
- Thinking(Claude Platform Docs、Anthropic、2026年10月8日確認)
- Claude Sonnet 5.5 migration guide(Claude Platform Docs、Anthropic、2026年10月8日確認)
- Claude Opus 5.5 migration guide(Claude Platform Docs、Anthropic、2026年10月8日確認)
- Create a response(OpenAI API reference、OpenAI、2026年10月8日確認)
- Using GPT-6(OpenAI API docs、OpenAI、2026年10月8日確認)
- GPT-6.1 Sol(OpenAI API docs、OpenAI、2026年10月8日確認)
- Troubleshooting guide(Gemini API、Google、2026年10月8日確認)
- The Curious Case of Neural Text Degeneration(arXiv:1904.09751、Holtzmanら、ICLR 2020、2026年10月8日確認)
更新履歴
- 2026年10月25日 書き方を直しました。
- 前:運営者が使っていないと読める書き方 → いま:「この記事は、実際に使って確かめた記録ではありません」。公式の資料を読んでまとめた記事で、使い心地は書いていない、という意味に直した
