← PC・IT用語集へ戻る

温度(生成AI)

Temperature
ai beginner
生成AIが次の言葉を選ぶときのばらつきを調整する数値。
温度(生成AI) (Temperature)

概要(サマリー)

温度(生成AI)とは、LLMが次の言葉を選ぶときのばらつきを調整する数値である。

同じプロンプトでも、低い温度では似た答えに寄り、高い温度では意外な言葉が混ざりやすくなる。名前は物理の温度から借りたもので、熱さとは関係ない。くじ引きで、当たりやすい札ばかり引くか、外れそうな札も混ぜて引くか、の加減だと考えると分かりやすい。OpenAIのChat Completionsでは、0から2の範囲で、初期値は1である。高い例として0.8、低い例として0.2が案内されている。

温度を下げても、事実が正しくなるわけではない。選ぶ言葉が安定するだけで、材料が間違っていれば同じ誤りを繰り返しやすい。

詳細解説

次の言葉をどう選ぶか

モデルは、文章を一度に完成させるのではなく、次のトークンを順に選んでいく。各時点で、続きの候補に確率が付く。

温度はこの確率の散らばりを変える。低いと、確率の高い候補へ寄り、同じ依頼への返答が似てくる。高いと、確率の低い候補も出やすくなり、表現が揺れる。

OpenAIは、温度と top_p を同時に変えないことを勧めている。top_p は、上位の候補だけを残してその中から選ぶ別の調整である。両方を動かすと、どちらが結果を変えたのか分かりにくい。

値の目安

用途で向きが変わる。

  • コード、抽出、分類: 低めにする。形式を崩したくないときに向く
  • 下書き、案出し、言い換え: 高めにする。同じ言い回しの繰り返しを避けたいときに向く
  • 初期値のまま: まず動かし、揺れが問題になってから下げる

0にしても、実装やモデルによっては毎回完全に同じ文字列になるとは限らない。同じ結果を保証する設定、とは考えないほうがよい。

推論の量を決める設定とは別のつまみである。指定できる範囲はAPIとモデルで違うことがあるので、使うモデルの説明で確認する。

低い温度でも作り話は残る

温度は「知っていることの正しさ」を上げるつまみではない。ハルシネーションは、もっともらしい続きを作る性質から起きる。温度を下げると、そのもっともらしい続きへ安定して寄ることがある。

事実が要るときは、資料を渡す、分からないときは分からないと答える指示を書く、出力の形式を決める、といった別の手段を使う。温度はその補助である。

コードで指定する位置

チャットAPIでは、依頼本文ではなく、呼び出しのパラメータとして渡す。

response = client.chat.completions.create(
    model="使用するモデル名",
    temperature=0.2,
    messages=[
        {"role": "user", "content": "次の文から日付だけを YYYY-MM-DD で抜き出してください。本文は足さないでください。"}
    ],
)

temperature=0.2 は、日付の抜き出しのように正解の形が狭い作業向けの例である。物語の続きを書かせるなら、これより高い値を試す。

AIコーディングとの関係

同じ指示なのに、直すたびに関数名や構成が変わることがある。原因のひとつが温度である。再現したいレビューや、テスト用の固定した下書きでは、低めを指定する。

アイデアの候補が欲しいときは、高い温度で複数案を出させ、採用する案を人が選ぶ。生成されたコードの正しさは、温度では判定できない。テストと差分の確認は残る。

AIコーディングツールの画面に温度の欄がないこともある。その場合、ツール側が固定している。揺れを減らしたいなら、温度を探すより、入出力の見本、触ってよいファイル、完了条件を依頼文へ書いたほうが効く。

よくある勘違い

0にすれば正しい答えになる?

正しさではなく、選ばれる言葉の安定さである。低い温度でも、根拠のない文章を自信たっぷりに返すことがある。

高いほど頭が良い?

多様な表現が出やすくなるだけである。手順が決まっている作業では、高い温度は形式の崩れや脱線の原因になる。

推論の努力設定と同じ?

別である。温度は次の言葉の散らばりである。推論にどれだけ計算を使うかは、モデルが別に持つ設定である。

どのモデルでも0から2?

OpenAIのChat Completionsでは0から2と説明されている。別のAPIでは範囲が違うことがある。使うモデルの説明で確認する。

まとめ

  • 温度は、次のトークンを選ぶときのばらつきを変える数値である
  • OpenAIのChat Completionsでは0から2で、高いほどランダムに寄りやすい
  • コードや抽出は低め、案出しは高め、が扱いやすい目安である
  • 温度を下げても、事実の正しさまでは保証されない
  • 温度と top_p は、どちらか一方を動かすほうが結果を追いやすい

情報ソース

より詳しくAIに聞いてみよう

  • 温度を、くじ引きのたとえで中学生向けに説明してください。
  • temperature と top_p の違いを、初心者向けに整理してください。
  • コード生成と小説の下書きで、温度を変える理由を具体例で教えてください。
  • 温度を0にしても毎回同じ出力にならないことがある理由を説明してください。
  • AIにJSONだけを返させたいとき、温度以外に指定すると安定する条件を挙げてください。