Torna alle guide
Risoluzione dei problemi·23 settembre 2026·6 min di lettura

“Valore non supportato: 'temperature' non supporta … con questo modello” — i modelli di ragionamento usano effort e verbosity invece

Rimuovi temperature e top_p, insieme a logprobs e top_logprobs, dalle richieste ai modelli di ragionamento. Le indicazioni sui modelli di OpenAI consentono il sampling su GPT-5.1, 5.2 e 5.4 e su GPT-6 Sol e Luna solo con reasoning effort none; gpt-5, gpt-5-mini e gpt-5-nano li rifiutano con qualsiasi impostazione, mentre GPT-6 Astra non ha un'impostazione none da usare. L'output viene regolato invece con reasoning effort, verbosity e prompt.

Ultima revisione: .

Rimuovi temperature e top_p, insieme a logprobs e top_logprobs, dalle richieste ai modelli di ragionamento. Le indicazioni sui modelli di OpenAI consentono il sampling su GPT-5.1, 5.2 e 5.4 e su GPT-6 Sol e Luna solo con reasoning effort none; gpt-5, gpt-5-mini e gpt-5-nano li rifiutano con qualsiasi impostazione, mentre GPT-6 Astra non ha un'impostazione none da usare. L'output viene regolato invece con reasoning effort, verbosity e prompt.

L’errore

risposta (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")

Cause e soluzioni in breve

CausaSoluzione
Un modello di ragionamento in esecuzione con reasoning effort superiore a noneRimuovi temperature, top_p, logprobs e top_logprobs dalla richiesta.
Un modello senza impostazione none — gpt-5, gpt-5-mini, gpt-5-nano, GPT-6 AstraNon inviare mai parametri di sampling; regolalo con effort e verbosity.
Un valore predefinito nel tuo stack che non hai mai impostato (0.7 da LangChain, 0 in Cline)Sovrascrivi o rimuovi il valore predefinito per modello prima che la richiesta venga inviata.
Inviare il valore predefinito 1 per sicurezzaOmetti invece il campo: alcuni modelli rifiutano il parametro con qualsiasi valore.

Rimuovi i parametri di sampling

Si tratta di una cancellazione, non di un nuovo valore. Lascia completamente fuori temperature e top_p dalle chiamate ai modelli di ragionamento, insieme a logprobs e top_logprobs, cui si applica la stessa regola. Se vuoi modificare quanto il modello elabora, reasoning effort è il comando che rimane.

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)

Controlla quali modelli accettano il sampling

OpenAI definisce la regola per famiglia di modelli e la collega al reasoning effort. Queste sono le indicazioni sui modelli lette il 23 settembre 2026. Le pagine di GPT-5.5 e GPT-5.6 non ribadiscono la regola, quindi considera il silenzio un motivo per eseguire un test, non un'autorizzazione; le righe della serie o provengono da segnalazioni di errori e non dalla documentazione.

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)

Regola il modello con i controlli che lo hanno sostituito

Le indicazioni di OpenAI nominano tre sostituti quando il ragionamento è attivo: profondità del ragionamento (reasoning.effort, i cui valori dipendono dal modello e vanno da none e minimal fino a xhigh e max), verbosity dell'output (text.verbosity: low, medium o high, con medium predefinito) e lunghezza dell'output (max_output_tokens, che conta sia i token di ragionamento sia quelli visibili). Chat Completions usa reasoning_effort e verbosity per i primi due. Le indicazioni non offrono un sostituto a livello di sampling per temperature 0; se lo usavi per rendere l'output ripetibile, fissa invece la struttura, usando Structured Outputs per uno schema e il prompt per il resto.

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)

Inserisci la regola in un unico helper

Diramare la logica in ogni punto di chiamata è il modo in cui la prossima famiglia di modelli si trasforma in un altro giro di modifiche. Filtra una sola volta i parametri di sampling, in base al modello e all'effort che stai per inviare; su un modello che supporta effort none, questi passano quando richiedi 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),
)

Se chiami tramite Kunavo

Kunavo non rimuove né riscrive temperature o top_p per i modelli GPT, su nessuno dei due endpoint. Su /v1/chat/completions ricostruisce la richiesta per l'upstream Responses: temperature e top_p vengono copiati invariati, reasoning_effort diventa reasoning.effort e qualsiasi forma del limite dei token diventa max_output_tokens, mentre i campi esterni a questa mappatura — inclusi verbosity, logprobs, top_logprobs, seed e stop — non vengono inoltrati, quindi imposta verbosity tramite /v1/responses. Lì i campi di sampling e text passano esattamente come inviati, incluso text.verbosity. Se il modello rifiuta un valore, il 400 contiene il relativo messaggio parola per parola nell'envelope di Kunavo (type upstream_error, code upstream_400); quindi verifica lo status o il messaggio, non il codice "unsupported_value"; la chiamata fallita non viene fatturata. Una chiamata riuscita con temperature impostato non dimostra che il valore sia stato applicato. Kunavo rimuove temperature, top_p e top_k autonomamente solo per i sei modelli Claude da cui Anthropic li ha rimossi — claude-fable-5-1, claude-fable-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7 e claude-sonnet-5 — e lo fa su ogni endpoint. L'altra metà della stessa migrazione, max_tokens rispetto a max_completion_tokens, è trattata in nella guida su max_tokens.

Domande frequenti

Posso impostare temperature su GPT-5?

Non su gpt-5, gpt-5-mini o gpt-5-nano: OpenAI afferma che le richieste che lo includono generano un errore. GPT-5.1, 5.2 e 5.4 accettano temperature, top_p e logprobs solo con reasoning effort impostato su none, e le indicazioni di OpenAI su GPT-6 dicono di rimuoverli quando reasoning effort non è none.

Cosa sostituisce temperature nei modelli di ragionamento?

Reasoning effort indica quanto il modello riflette, text.verbosity (verbosity in Chat Completions) quanto parla e max_output_tokens imposta un limite rigido. Tramite Kunavo, imposta verbosity su /v1/responses: l'endpoint chat non lo inoltra ai modelli GPT. Per una struttura ripetibile, usa Structured Outputs e regole di formato esplicite nel prompt.

Devo semplicemente inviare temperature=1?

Omettilo. Il messaggio Valore non supportato indica che il valore predefinito 1 è accettato dal modello che lo ha prodotto, ma altri modelli rifiutano il parametro con qualsiasi valore ("Unsupported parameter: 'temperature' is not supported with this model"); le indicazioni di OpenAI prevedono la rimozione dei campi.

Perché ricevo questo errore se il mio codice non imposta mai temperature?

Qualcosa nel tuo stack lo ha impostato. Le chiamate o1-preview di un utente di jupyter-ai contenevano 0.7, il valore predefinito della classe ChatOpenAI di LangChain sottostante jupyter-ai, mentre un collaboratore di Cline ha ricondotto lo 0 riscontrato da un utente GPT-5 a un valore predefinito hardcoded. Controlla cosa il tuo SDK o framework inserisce realmente nella richiesta, quindi sovrascrivilo o rimuovilo per modello.

Kunavo rimuove temperature al posto mio?

Non per i modelli GPT: Kunavo inoltra temperature e top_p esattamente come li invii, sia su /v1/chat/completions sia su /v1/responses. Rimuove invece temperature, top_p e top_k sui sei modelli Claude da cui Anthropic li ha rimossi.

Guide correlate

Ulteriori dettagli sul significato degli errori sono disponibili in riferimento agli errori; ottenere una chiave richiede un minuto tramite registrazione e la guida all’autenticazione.