ガイド一覧へ戻る
トラブルシューティング·2026年9月23日·読了6分

「Unsupported value: 'temperature' does not support … with this model」— 推論モデルでは代わりに effort と verbosity を使用

推論モデルへのリクエストから、temperature と top_p、さらに logprobs と top_logprobs も削除してください。OpenAI のモデルガイダンスでは、GPT-5.1、5.2、5.4、および GPT-6 Sol と Luna で、reasoning effort が none の場合に限りサンプリングが許可されています。gpt-5、gpt-5-mini、gpt-5-nano はどの設定でも拒否し、GPT-6 Astra には使用できる none 設定がありません。代わりに reasoning effort、verbosity、プロンプトで出力を調整します。

最終確認日:。

推論モデルへのリクエストから、temperature と top_p、さらに logprobs と top_logprobs も削除してください。OpenAI のモデルガイダンスでは、GPT-5.1、5.2、5.4、および GPT-6 Sol と Luna で、reasoning effort が none の場合に限りサンプリングが許可されています。gpt-5、gpt-5-mini、gpt-5-nano はどの設定でも拒否し、GPT-6 Astra には使用できる none 設定がありません。代わりに reasoning effort、verbosity、プロンプトで出力を調整します。

エラー

response (HTTP 400)
{
  "error": {
    "message": "Unsupported value: 'temperature' does not support 0.2 with this model. Only the default (1) value is supported.",
    "type": "invalid_request_error",
    "param": "temperature",
    "code": "unsupported_value"
  }
}

# 0.2 is whatever your code sent; reports show 0 and 0.7 too.
# Some models reject the field at any value instead:
#   "Unsupported parameter: 'temperature' is not supported with this model."
#   "Unsupported parameter: 'top_p' is not supported with this model."
#   (code "unsupported_parameter")

原因と対処法の概要

原因対処法
none を超える reasoning effort で実行される推論モデルリクエストから temperature、top_p、logprobs、top_logprobs を削除してください。
none 設定がないモデル — gpt-5、gpt-5-mini、gpt-5-nano、GPT-6 Astraサンプリングパラメーターは決して送信せず、effort と verbosity で調整してください。
設定した覚えのないスタック内のデフォルト値 (LangChain では 0.7、Cline では 0)リクエスト送信前に、モデルごとにデフォルト値を上書きまたは削除してください。
安全策としてデフォルト値 1 を送信する代わりにフィールドを省略してください。モデルによっては、どの値でもパラメーターを拒否します。

サンプリングパラメーターを削除する

これは新しい値を設定するのではなく、削除する操作です。推論モデルの呼び出しでは temperature と top_p を完全に省略し、同じ規則が適用される logprobs と top_logprobs も省略してください。モデルの処理量を変えたい場合、残された調整項目は reasoning effort です。

fix.py
from openai import OpenAI

client = OpenAI(base_url="https://api.kunavo.com/v1", api_key="sk-kn-...")
msgs = [{"role": "user", "content": "Summarize this diff as three changelog bullets."}]

# Before — sampling parameters on a reasoning model
resp = client.chat.completions.create(
    model="gpt-6-astra", temperature=0.2, top_p=0.9, messages=msgs)

# After — removed; reasoning effort is the control that remains
resp = client.chat.completions.create(
    model="gpt-6-astra", reasoning_effort="low", messages=msgs)

サンプリングを受け付けるモデルを確認する

OpenAI はモデルファミリーごとに規則を示しており、reasoning effort によって変わります。これは2026年9月23日時点で読んだモデルガイダンスです。GPT-5.5 と GPT-5.6 のページではこの規則が再記載されていないため、その沈黙を許可ではなくテストすべき理由として扱ってください。o-series の行はドキュメントではなくエラーレポートに基づいています。

sampling parameters by model
gpt-5, gpt-5-mini, gpt-5-nano   error, whatever the reasoning setting
GPT-5.1, GPT-5.2, GPT-5.4       accepted only with reasoning effort "none"
GPT-6 Sol, GPT-6 Luna           remove them unless reasoning effort is "none"
GPT-6 Astra                     remove them: Astra has no "none" effort
GPT-5.5, GPT-5.6                not stated on their guidance pages
o1-preview, o3-mini             rejected (reported errors, not docs)

置き換えられた制御項目で調整する

OpenAI のガイダンスは、推論が有効な場合の代替として3つを挙げています。推論の深さ (reasoning.effort。値はモデル依存で、none と minimal から xhigh と max まで)、出力の詳細度 (text.verbosity: low、medium、high。デフォルトは medium)、出力長 (max_output_tokens。推論トークンと表示トークンの両方を数える) です。Chat Completions では最初の2つを reasoning_effort と verbosity と表記します。temperature 0 に相当するサンプリングレベルの代替はガイダンスにありません。出力を再現可能にするために使っていた場合は、Structured Outputs でスキーマを、残りをプロンプトで指定して形式を固定してください。

steer.py
# client as in fix.py above
resp = client.responses.create(
    model="gpt-5-6-sol",
    input="Summarize this diff as three changelog bullets.",
    reasoning={"effort": "low"},   # how much it thinks
    text={"verbosity": "low"},     # how much it says
    max_output_tokens=2000,        # hard cap, reasoning tokens included
)
print(resp.output_text)

規則を1つのヘルパーにまとめる

すべての呼び出し箇所で分岐すると、次のモデルファミリーが登場するたびに再編集することになります。送信しようとしているモデルと effort に基づいて、サンプリングパラメーターを一度だけフィルタリングしてください。effort none をサポートするモデルで none を指定した場合は、パラメーターがそのまま通過します。

sampling.py
SAMPLING = ("temperature", "top_p", "logprobs", "top_logprobs")
REASONING = ("gpt-5", "gpt-6", "o1", "o3", "o4")  # extend as you adopt models

def sampling_params(model: str, effort: str | None, **params) -> dict:
    """Keep sampling parameters only where they are accepted: effort "none"."""
    if model.startswith(REASONING) and effort != "none":
        return {k: v for k, v in params.items() if k not in SAMPLING}
    return params

effort = "low"  # client and msgs as in fix.py above
resp = client.chat.completions.create(
    model="gpt-5-6-terra",
    messages=msgs,
    reasoning_effort=effort,
    **sampling_params("gpt-5-6-terra", effort, temperature=0.2, top_p=0.9),
)

Kunavo経由で呼び出している場合

Kunavo は、どちらのエンドポイントでも GPT モデルの temperature や top_p を削除または書き換えません。/v1/chat/completions では Responses の上流向けにリクエストを再構築します。temperature と top_p は変更せずコピーされ、reasoning_effort は reasoning.effort に、どちらのトークン上限表記も max_output_tokens になります。一方、この対応表にないフィールド(verbosity、logprobs、top_logprobs、seed、stop など)は一切転送されないため、verbosity は /v1/responses で設定してください。そこでは text.verbosity を含め、サンプリングと text のフィールドが送信どおりに完全に通過します。モデルが値を拒否した場合、400 レスポンスには Kunavo のエンベロープ内にメッセージが一字一句含まれます (type upstream_error、code upstream_400)。そのため code "unsupported_value" ではなく、ステータスまたはメッセージで照合してください。失敗した呼び出しは課金されません。temperature を設定した呼び出しが成功しても、その値が適用されたことの証明にはなりません。Kunavo が temperature、top_p、top_k を自ら削除するのは、Anthropic が削除した6つの Claude モデル(claude-fable-5-1、claude-fable-5、claude-opus-5、claude-opus-4-8、claude-opus-4-7、claude-sonnet-5)の場合だけで、すべてのエンドポイントで行われます。 同じ移行のもう一方、max_tokens と max_completion_tokens の違いについては、 max_tokens ガイド.

よくある質問

GPT-5 で temperature を設定できますか?

gpt-5、gpt-5-mini、gpt-5-nano では設定できません。OpenAI によると、これを含むリクエストはエラーになります。GPT-5.1、5.2、5.4 は reasoning effort が none の場合に限り temperature、top_p、logprobs を受け付けます。GPT-6 のガイダンスでは、reasoning effort が none でない場合は常にこれらを削除するよう示されています。

推論モデルでは temperature の代わりに何を使いますか?

モデルがどれだけ考えるかには reasoning effort、どれだけ話すかには text.verbosity(Chat Completions では verbosity)、ハード上限には max_output_tokens を使います。Kunavo 経由では /v1/responses で verbosity を設定してください。chat エンドポイントは GPT モデルへ転送しません。再現可能な構造には Structured Outputs と、プロンプト内の明示的な形式規則を使用してください。

temperature=1 を送ればよいですか?

省略してください。Unsupported value メッセージは、それを生成したモデルではデフォルトの 1 が受け入れられることを示しますが、他のモデルはどの値でもパラメーターを拒否します("Unsupported parameter: 'temperature' is not supported with this model")。OpenAI のガイダンスもフィールドを削除するよう求めています。

コードで temperature を設定していないのに、なぜこのエラーが出ますか?

スタック内の何かが設定しています。jupyter-ai ユーザーの o1-preview 呼び出しには、jupyter-ai の下で使われる LangChain の ChatOpenAI クラスのデフォルト値である 0.7 が含まれていました。また、Cline の貢献者は、GPT-5 ユーザーが遭遇した 0 はハードコードされたデフォルト値だと説明しています。SDK やフレームワークが実際にネットワーク経由で送信している内容を確認し、モデルごとに上書きまたは削除してください。

Kunavo が temperature を削除してくれますか?

GPT モデルでは削除しません。Kunavo は /v1/chat/completions と /v1/responses の両方で、temperature と top_p を送信どおりに転送します。Anthropic が削除した6つの Claude モデルでは、temperature、top_p、top_k を削除します。

関連ガイド

エラーの詳しい意味はエラーリファレンスをご覧ください。キーは新規登録と認証ガイドから1分で取得できます。