返回指南
故障排查·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 和提示来引导输出。

错误

响应(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")

原因和解决方法一览

原因解决方法
运行时 reasoning effort 高于 none 的推理模型从请求中移除 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 设置后调用成功,并不能证明该值确实生效。只有在 Anthropic 移除这些参数的六个 Claude 模型上,Kunavo 才会自行移除 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:chat 端点不会将其转发给 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,这是其底层 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。

相关指南

更多错误语义请参阅 错误参考;通过 注册 和 身份验证指南 获取密钥只需一分钟。