返回指南
疑難排解·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 系列的列項來自錯誤回報,而非文件。

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 的指南指出,啟用推理時有三種替代方案:推理深度(reasoning.effort,其值依模型而定,範圍從 none 和 minimal 到 xhigh 和 max)、輸出詳細程度(text.verbosity:low、medium 或 high,預設為 medium),以及輸出長度(max_output_tokens,會同時計算推理 token 與可見 token)。Chat Completions 將前兩者寫作 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)

將規則放進一個輔助函式

在每個呼叫點分支處理,會讓下一個模型系列變成另一輪修改。請依即將傳送的模型與 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,兩種 token 上限欄位名稱都轉為 max_output_tokens;而不在該對應關係中的欄位(包括 verbosity、logprobs、top_logprobs、seed 和 stop)完全不會轉送,因此請透過 /v1/responses 設定 verbosity。在該端點上,你的取樣欄位和文字欄位會完全依照傳送內容通過,包括 text.verbosity。如果模型拒絕某個值,400 回應會在 Kunavo 的封裝中逐字攜帶其訊息(type upstream_error、code upstream_400),因此請根據狀態或訊息比對,而不是根據 code "unsupported_value";失敗的呼叫不會計費。某次設定 temperature 後成功的呼叫,不能證明該值確實已套用。Kunavo 只會在 Anthropic 移除這些參數的六個 Claude 模型上自行移除 temperature、top_p 和 top_k——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;OpenAI 的 GPT-6 指南則表示,只要 reasoning effort 不是 none,就應移除它們。

推理模型用什麼取代 temperature?

reasoning effort 控制模型思考的程度,text.verbosity(Chat Completions 中為 verbosity)控制輸出多少,max_output_tokens 則是硬性上限。透過 Kunavo 時,請在 /v1/responses 上設定 verbosity:聊天端點不會將它轉送給 GPT 模型。若要維持結構可重複,請使用 Structured Outputs,並在提示中明確指定格式規則。

我應該直接傳送 temperature=1 嗎?

省略它。Unsupported value 訊息表示,產生該訊息的模型接受預設值 1,但其他模型可能在任何值下都拒絕該參數("Unsupported parameter: 'temperature' is not supported with this model"),而 OpenAI 的指南也建議移除這些欄位。

我的程式從未設定 temperature,為什麼仍會收到這個錯誤?

你的堆疊中有某個元件設定了它。jupyter-ai 使用者的 o1-preview 呼叫帶有 0.7,這是 jupyter-ai 底層 LangChain ChatOpenAI 類別的預設值;一名 Cline 貢獻者則將一位 GPT-5 使用者遇到的 0 歸因於寫死的預設值。請檢查你的 SDK 或框架實際在網路請求中傳送的內容,然後依模型覆寫或移除它。

Kunavo 會替我移除 temperature 嗎?

GPT 模型不會:Kunavo 會在 /v1/chat/completions 和 /v1/responses 上,完全依照你傳送的內容轉送 temperature 和 top_p。它會在 Anthropic 移除這些參數的六個 Claude 模型上移除 temperature、top_p 和 top_k。

相關指南

更多錯誤語意請參閱 錯誤參考;透過 註冊 和 身分驗證指南 取得金鑰只需一分鐘。