Remova temperature e top_p — e também logprobs e top_logprobs — das solicitações para modelos de raciocínio. As orientações de modelos da OpenAI permitem amostragem no GPT-5.1, 5.2 e 5.4, e no GPT-6 Sol e Luna, apenas com reasoning effort none; gpt-5, gpt-5-mini e gpt-5-nano os rejeitam em qualquer configuração, e o GPT-6 Astra não tem uma configuração none para usar. Em vez disso, a saída é orientada por reasoning effort, verbosity e pelo prompt.
O erro
{
"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")Causas e soluções em resumo
| Causa | Solução |
|---|---|
| Um modelo de raciocínio executado com reasoning effort acima de none | Remova temperature, top_p, logprobs e top_logprobs da solicitação. |
| Um modelo sem configuração none — gpt-5, gpt-5-mini, gpt-5-nano, GPT-6 Astra | Nunca envie parâmetros de amostragem; oriente-o com effort e verbosity. |
| Um padrão na sua stack que você nunca definiu (0.7 no LangChain, 0 no Cline) | Substitua ou remova o padrão por modelo antes que a solicitação saia. |
| Enviar o valor padrão 1 por segurança | Omita o campo; alguns modelos rejeitam o parâmetro com qualquer valor. |
Remova os parâmetros de amostragem
É uma exclusão, não um novo valor. Deixe temperature e top_p fora das chamadas para modelos de raciocínio, juntamente com logprobs e top_logprobs, que são abrangidos pela mesma regra. Se quiser alterar quanto o modelo trabalha, reasoning effort é o controle que resta.
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)Verifique quais modelos aceitam amostragem
A OpenAI declara a regra por família de modelos, e ela depende de reasoning effort. Estas são as orientações de modelos conforme lidas em 23 de setembro de 2026. As páginas do GPT-5.5 e do GPT-5.6 não repetem a regra, portanto trate o silêncio como motivo para testar, não como permissão; as linhas da série o vêm de relatos de erro, não da documentação.
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)Oriente com os controles que o substituíram
As orientações da OpenAI nomeiam três substitutos quando o raciocínio está ativado: profundidade de raciocínio (reasoning.effort, cujos valores dependem do modelo e vão de none e minimal até xhigh e max), verbosidade da saída (text.verbosity: low, medium ou high, com medium como padrão) e comprimento da saída (max_output_tokens, que também conta os tokens de raciocínio). O Chat Completions chama os dois primeiros de reasoning_effort e verbosity. As orientações não oferecem um substituto no nível de amostragem para temperature 0; se você o usava para manter a saída repetível, fixe a estrutura, usando Structured Outputs para um esquema e o prompt para o restante.
# 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)Coloque a regra em um único helper
Criar uma ramificação em cada ponto de chamada é como a próxima família de modelos se transforma em outra rodada de edições. Filtre os parâmetros de amostragem uma vez, com base no modelo e no effort que você está prestes a enviar; em um modelo compatível com effort none, eles passam quando você solicita none.
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),
)Se você estiver chamando pela Kunavo
O Kunavo não remove nem reescreve temperature ou top_p para modelos GPT, em nenhum dos dois endpoints. Em /v1/chat/completions, ele reconstrói a solicitação para o upstream Responses: temperature e top_p são copiados sem alterações, reasoning_effort torna-se reasoning.effort e qualquer uma das grafias de limite de tokens torna-se max_output_tokens, enquanto os campos fora desse mapeamento — incluindo verbosity, logprobs, top_logprobs, seed e stop — não são encaminhados; portanto, defina verbosity por meio de /v1/responses. Lá, seus campos de amostragem e texto passam exatamente como enviados, incluindo text.verbosity. Se o modelo rejeitar um valor, o 400 transporta a mensagem literalmente dentro do envelope do Kunavo (type upstream_error, code upstream_400); portanto, faça a correspondência pelo status ou pela mensagem, não pelo código "unsupported_value"; a chamada com falha não é cobrada. Uma chamada bem-sucedida com temperature definido não prova que o valor foi aplicado. O Kunavo remove temperature, top_p e top_k por conta própria apenas nos seis modelos Claude dos quais a Anthropic os removeu — claude-fable-5-1, claude-fable-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7 e claude-sonnet-5 — e faz isso em todos os endpoints. A outra metade da mesma migração, max_tokens versus max_completion_tokens, é abordada em no guia de max_tokens.
Perguntas frequentes
Posso definir temperature no GPT-5?
Não em gpt-5, gpt-5-mini ou gpt-5-nano: a OpenAI informa que solicitações que incluem esse parâmetro geram um erro. GPT-5.1, 5.2 e 5.4 aceitam temperature, top_p e logprobs somente com o esforço de raciocínio definido como none, e as orientações da OpenAI para o GPT-6 dizem para removê-los sempre que o esforço de raciocínio não for none.
O que substitui temperature nos modelos de raciocínio?
Reasoning effort para definir quanto o modelo pensa, text.verbosity (verbosity no Chat Completions) para definir quanto ele diz, e max_output_tokens como limite rígido. Por meio do Kunavo, defina verbosity em /v1/responses: o endpoint de chat não o encaminha aos modelos GPT. Para obter uma estrutura repetível, use Structured Outputs e regras explícitas de formato no prompt.
Devo simplesmente enviar temperature=1?
Omita-o. A mensagem Unsupported value informa que o valor padrão 1 é aceito no modelo que a produziu, mas outros modelos rejeitam o parâmetro em qualquer valor ("Unsupported parameter: 'temperature' is not supported with this model"), e as orientações da OpenAI são remover os campos.
Por que recebo esse erro quando meu código nunca define temperature?
Algo na sua stack o definiu. As chamadas de um usuário do jupyter-ai para o o1-preview carregavam 0.7, o padrão da classe ChatOpenAI do LangChain usada pelo jupyter-ai, e um colaborador do Cline atribuiu o 0 atingido por um usuário do GPT-5 a um padrão codificado diretamente. Verifique o que seu SDK ou framework realmente coloca na requisição, depois substitua ou remova-o conforme o modelo.
O Kunavo remove temperature para mim?
Não para modelos GPT: o Kunavo encaminha temperature e top_p exatamente como você os envia, tanto em /v1/chat/completions quanto em /v1/responses. Ele remove temperature, top_p e top_k nos seis modelos Claude dos quais a Anthropic os removeu.
Guias relacionados
- “Unsupported parameter: 'max_tokens' is not supported with this model” — use max_completion_tokens
- “`temperature` e `top_p` não podem ser especificados simultaneamente para este modelo” — envie um deles e, nos modelos Claude mais recentes, nenhum
- Guia de APIs compatíveis com OpenAI — do endpoint local do Ollama aos modelos de ponta hospedados
- Limites de taxa da OpenAI API — qual limite você atingiu, como interpretá-lo e a nova tentativa que resolve
Mais detalhes sobre o significado dos erros estão em referência de erros; obter uma chave leva um minuto por meio de cadastro e da guia de autenticação.