Modelli di ragionamento Azure OpenAI

Azure modelli di ragionamento OpenAI sono progettati per affrontare le attività di ragionamento e risoluzione dei problemi con maggiore attenzione e capacità. Questi modelli dedicano più tempo all'elaborazione e alla comprensione della richiesta dell'utente, rendendoli estremamente forti in aree come scienza, codifica e matematica rispetto alle iterazioni precedenti.

Funzionalità chiave dei modelli di ragionamento:

  • Generazione di codice complessa: in grado di generare algoritmi e gestire attività di codifica avanzate per supportare gli sviluppatori.
  • Risoluzione avanzata dei problemi: ideale per sessioni di brainstorming approfondite e affrontare sfide complesse.
  • Confronto documenti complessi: perfetto per l'analisi di contratti, file di casi o documenti legali per identificare piccole differenze.
  • Particolarmente efficace per seguire le istruzioni e la gestione dei flussi di lavoro che richiedono contesti ridotti.

Esplorare i modelli di ragionamento da OpenAI nel catalogo dei modelli Foundry.

Prerequisiti

  • Modello di ragionamento di Azure OpenAI distribuito.

  • Se si usano gli esempi REST:

    • Installare il interfaccia della riga di comando di Azure. Per altre informazioni, vedere Installare il interfaccia della riga di comando di Azure.

    • Accedere con az login, quindi generare un token di connessione e archiviarlo nella AZURE_OPENAI_AUTH_TOKEN variabile di ambiente.

      az account get-access-token --resource https://cognitiveservices.azure.com --query accessToken -o tsv
      

Utilizzo

Questi modelli non supportano attualmente lo stesso set di parametri di altri modelli che usano l'API di completamento della chat.

API di completamento della chat

using Azure.Identity;
using OpenAI;
using OpenAI.Chat;
using System.ClientModel.Primitives;

#pragma warning disable OPENAI001 //currently required for token based authentication

BearerTokenPolicy tokenPolicy = new(
    new DefaultAzureCredential(),
    "https://ai.azure.com/.default");

ChatClient client = new(
    model: "o4-mini",
    authenticationPolicy: tokenPolicy,
    options: new OpenAIClientOptions()
    {

        Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
    }
);

ChatCompletionOptions options = new ChatCompletionOptions
{
    MaxOutputTokenCount = 100000
};

ChatMessage[] messages =
[
    new DeveloperChatMessage("You are a helpful assistant"),
    new UserChatMessage("Tell me about the bitter lesson")
];

ChatCompletion completion = client.CompleteChat(messages, options);

Console.WriteLine($"[ASSISTANT]: {completion.Content[0].Text}");

Funzionamento del ragionamento

I modelli di ragionamento generano token di ragionamento oltre ai token di input e output con cui si ha già familiarità. Il modello usa questi token per elaborare il tuo prompt: scomporre il problema, soppesare i diversi approcci e scartare i percorsi che non reggono. I token di ragionamento non vengono mai visualizzati nel contenuto del messaggio, ma occupano spazio nella finestra di contesto e vengono fatturati come token di output.

Per vedere quanti token di ragionamento ha utilizzato una richiesta, controlla completion_tokens_details.reasoning_tokens in una risposta dell'API Chat Completions oppure output_tokens_details.reasoning_tokens in una risposta dell'API Responses.

I modelli gpt-5.4 e gpt-5.5 supportano il ragionamento intercalato con l'API Responses. Possono produrre un output visibile prima e tra i periodi di ragionamento, e ragionare tra le chiamate agli strumenti.

In una conversazione a più turni, i token di input e di output vengono trasmessi da ogni turno. Ciò che accade al ragionamento dei turni precedenti dipende dal modello e dal reasoning.context valore impostato.

Diagramma che mostra che current_turn elimina il ragionamento precedente, mentre all_turns comporta un ragionamento compatibile tra tre turni.

Per scegliere una modalità, vedere Mantenere il ragionamento tra le chiamate.

Gestire la finestra di contesto

I token di ragionamento condividono la finestra di contesto con l’input e l’output visibile. Una singola richiesta può richiedere da poche centinaia fino a decine di migliaia di token di ragionamento, a seconda della difficoltà del problema; quindi, prevedine un margine quando dimensioni una richiesta.

L'oggetto usage segnala il conteggio esatto per ogni richiesta:

{
  "usage": {
    "input_tokens": 75,
    "input_tokens_details": {
      "cached_tokens": 0
    },
    "output_tokens": 1186,
    "output_tokens_details": {
      "reasoning_tokens": 1024
    },
    "total_tokens": 1261
  }
}

Le dimensioni delle finestre di contesto differiscono in base al modello. Per i limiti che si applicano alla distribuzione, vedere Supporto api e funzionalità.

Controllare i costi

I token di ragionamento sono addebitati come token di output, quindi una richiesta che richiede più tempo di elaborazione costa di più anche quando la risposta visibile è breve. Per limitare il totale generato dal modello, impostare max_output_tokens con l'API Risposte o max_completion_tokens con l'API Completamento chat. Entrambi i limiti coprono i token di ragionamento, i token di output visibili e i token di formattazione.

Una limitazione degli output risolve solo metà di un carico di lavoro su più turni. I modelli di ragionamento inviano nuovamente una conversazione crescente a ogni turno e all_turns aggiunge inoltre elementi di ragionamento precedenti. Per ridurre quanto paghi per quei token di input ripetuti, consulta Caching dei prompt.

Allocare spazio per il ragionamento

Se la generazione raggiunge il limite della finestra di contesto o il limite di token impostato, la risposta torna incompleta:

{
  "status": "incomplete",
  "incomplete_details": {
    "reason": "max_output_tokens"
  }
}

Questa condizione può verificarsi prima che il modello produa un output visibile. Si paga per i token di input e ragionamento, ma non si riceve alcuna risposta. Controllare status ogni risposta in modo che l'applicazione gestisca questo caso invece di considerarlo come risultato vuoto.

Per evitare di rimanere senza spazio, riservare almeno 25.000 token per il ragionamento e l'output mentre si prende dimestichezza con un carico di lavoro. Una volta che sai quanti token di ragionamento consumano tipicamente i tuoi prompt, regola il buffer di conseguenza.

Mantenere gli elementi di ragionamento nel contesto

Quando un modello di ragionamento chiama funzioni tramite la Responses API, passate anche gli elementi relativi al ragionamento della risposta precedente insieme all'output della funzione. Se il modello ha chiamato diverse funzioni in sequenza, inviare tutti gli elementi di ragionamento, di chiamata di funzione e di output delle chiamate di funzione a partire dall'ultimo messaggio dell'utente. Il modello continua quindi la stessa riga di ragionamento invece di ricominciare, che raggiunge una buona risposta in meno token.

L'approccio più semplice consiste nel passare tutti gli elementi di output dalla risposta precedente alla richiesta successiva, con previous_response_id o copiando gli elementi nella matrice successiva input . Gli elementi di ragionamento che non sono rilevanti per le funzioni vengono ignorati e quelli pertinenti vengono conservati.

Se ritagli o riordini il contesto prima di inviarlo, mantieni intatto tutto ciò che si trova tra l'ultimo messaggio dell'utente e l'output della chiamata di funzione.

Sforzo di ragionamento

Il reasoning_effort parametro indica al modello quanto pensare prima di rispondere. I valori supportati variano in base al modello e includono none, minimallow, medium, high, xhigh, e max. Le impostazioni predefinite variano anche in base al modello. Per i valori accettati da ogni modello, vedere Supporto api e funzionalità.

Effort Migliore per
none Attività sensibili alla latenza che non beneficiano del ragionamento o di chiamate concatenate agli strumenti, come le applicazioni vocali, il recupero rapido delle informazioni e la classificazione.
low Ragionamento efficiente con un aumento modesto della latenza. Adatto all’uso di strumenti, alla pianificazione, alla ricerca e alle decisioni in più passaggi, in cui velocità e costi sono fattori importanti.
medium Un punto di partenza bilanciato per la maggior parte dei carichi di lavoro, soprattutto quando l'attività implica la pianificazione, il ragionamento complesso o il giudizio.
high Ragionamento rigido, debug complesso, pianificazione approfondita e attività di alto valore in cui la qualità è più importante della latenza.
xhigh Ricerca approfondita, flussi di lavoro asincroni e attività agentic con esecuzioni lunghe. Usarlo quando le valutazioni mostrano un guadagno che giustifica la latenza e i costi aggiuntivi.
max Le tue attività più complesse. Se attualmente si usa xhigh, confrontare entrambe le impostazioni prima di passare.

I modelli di ragionamento si adattano all'interno di un'impostazione, spendendo meno token su attività semplici e pensando di più su quelli complessi. Quanto maggiore è l'impegno, tanto più a lungo il modello elabora la richiesta, il che in genere produce più token di ragionamento.

Nota

o1-mini non supporta reasoning_effort.

Per ottenere più rapidamente un primo token visibile nelle applicazioni sensibili alla latenza, chiedi al modello di produrre un breve preambolo prima di ragionare più a fondo.

Messaggi per sviluppatori

I messaggi per sviluppatori ("role": "developer") sono funzionalmente uguali ai messaggi di sistema.

L'aggiunta di un messaggio per sviluppatore all'esempio di codice precedente sarà simile alla seguente:


using Azure.Identity;
using OpenAI;
using OpenAI.Chat;
using System.ClientModel.Primitives;

#pragma warning disable OPENAI001 //currently required for token based authentication

BearerTokenPolicy tokenPolicy = new(
    new DefaultAzureCredential(),
    "https://ai.azure.com/.default");

ChatClient client = new(
    model: "o4-mini",
    authenticationPolicy: tokenPolicy,
    options: new OpenAIClientOptions()
    {

        Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
    }
);

ChatCompletionOptions options = new ChatCompletionOptions
{
    ReasoningEffortLevel = ChatReasoningEffortLevel.Low,
    MaxOutputTokenCount = 100000
};

ChatMessage[] messages =
[
    new DeveloperChatMessage("You are a helpful assistant"),
    new UserChatMessage("Tell me about the bitter lesson")
];

ChatCompletion completion = client.CompleteChat(messages, options);

Console.WriteLine($"[ASSISTANT]: {completion.Content[0].Text}");

Invocazione degli strumenti con modelli di ragionamento

Usare l'API Risposte quando si combina il ragionamento con funzioni o strumenti personalizzati. I gpt-5.6 modelli e versioni successive supportano l'API Completamento chat e supportano gli strumenti, ma l'API Completamento chat non supporta i due insieme. Una richiesta a Chat Completions che include tools non va a buon fine e restituisce il seguente errore:

Function tools with reasoning_effort are not supported for gpt-5.6-sol in /v1/chat/completions. To use function tools, use /v1/responses or set reasoning_effort to 'none'.

La richiesta ha esito negativo anche quando non si invia reasoning_effort, perché per impostazione predefinita questi modelli sono medium. L'invio tools è sufficiente per attivare l'errore. Un'applicazione che invoca strumenti tramite Chat Completions può iniziare a non funzionare dopo aver aggiornato la distribuzione partendo da un modello di ragionamento precedente.

Sono disponibili due modi per risolverlo:

  • Consigliato: inviare richieste di chiamata agli strumenti all'API Risposte. Questo percorso supporta l'intera gamma di valori di reasoning_effort, restituisce elementi di ragionamento che puoi riutilizzare da un turno all'altro ed è l'interfaccia in cui le nuove funzionalità di ragionamento vengono introdotte per prime. Per una guida dettagliata alla migrazione, vedi Aggiorna l'app Azure OpenAI da Completamenti chat all'API Responses.
  • Se occorre rimanere in Completamento chat, impostare reasoning_effort su none in ogni richiesta che invia tools. Il modello quindi invoca gli strumenti senza effettuare alcun ragionamento, perdendo la qualità di pianificazione che il ragionamento fornisce.

La richiesta seguente mostra la soluzione alternativa di Chat Completions:

curl -X POST "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
  -d '{
      "model": "gpt-5.6-sol",
      "messages": [
          {"role": "user", "content": "What is the weather in Seattle?"}
      ],
      "reasoning_effort": "none",
      "tools": [
        {
          "type": "function",
          "function": {
            "name": "get_weather",
            "description": "Get the current weather for a city.",
            "parameters": {
              "type": "object",
              "properties": {
                "city": {"type": "string"}
              },
              "required": ["city"]
            }
          }
        }
      ]
  }'

In .NET impostare lo stesso valore tramite ChatCompletionOptions.ReasoningEffortLevel:

using OpenAI.Chat;

ChatTool getWeatherTool = ChatTool.CreateFunctionTool(
    functionName: "get_weather",
    functionDescription: "Get the current weather for a city.",
    functionParameters: BinaryData.FromString("""
        {
          "type": "object",
          "properties": { "city": { "type": "string" } },
          "required": ["city"]
        }
        """));

ChatCompletionOptions options = new ChatCompletionOptions
{
    ReasoningEffortLevel = ChatReasoningEffortLevel.None,
    MaxOutputTokenCount = 100000
};
options.Tools.Add(getWeatherTool);

Per il set completo di tipi, consulta la libreria .NET di OpenAI.

Nota

ChatReasoningEffortLevelè contrassegnato come sperimentale nella libreria .NET OpenAI, quindi genera la OPENAI001 diagnostica. Eliminarlo con #pragma warning disable OPENAI001 come illustrato negli esempi precedenti o aggiungerlo <NoWarn>$(NoWarn);OPENAI001</NoWarn> al file di progetto. L'autenticazione basata su token usa la stessa diagnostica.

Modalità di ragionamento

I gpt-5.6 modelli supportano due modalità di esecuzione nell'API Risposte. La modalità Standard è l'impostazione predefinita in Azure OpenAI. Impostare reasoning.mode su pro per le attività difficili che giustificano più lavoro del modello e possono assorbire la latenza aggiuntiva.

La modalità e lo sforzo sono controlli indipendenti. La modalità seleziona l'esecuzione standard o pro e reasoning_effort controlla la quantità di ragionamento applicata al modello all'interno di tale modalità.

{
  "model": "gpt-5.6",
  "reasoning": {
    "mode": "pro",
    "effort": "medium"
  },
  "input": "Review this database migration plan and identify potential failure modes."
}

La modalità Pro aggrega il lavoro eseguito in una singola risposta e fattura tali token alle tariffe standard del modello. Poiché esegue più operazioni rispetto alla modalità standard, prevedere un utilizzo più elevato dei token e un costo più elevato. Le implementazioni esistenti dei modelli Pro mantengono il comportamento e i prezzi attuali.

Riepilogo del ragionamento

Quando si usano i modelli di ragionamento più recenti con l'API Risposte , è possibile usare il parametro di riepilogo del ragionamento per ricevere riepiloghi della catena di ragionamenti del modello.

Il reasoning.summary parametro non è supportato quando è abilitata l'orchestrazione multi-agente .

Importante

Il tentativo di estrarre il ragionamento non elaborato tramite metodi diversi dal parametro di riepilogo del ragionamento non è supportato, può violare i criteri di utilizzo accettabili e può comportare limitazioni o sospensioni quando viene rilevato.

using OpenAI;
using OpenAI.Responses;
using System.ClientModel.Primitives;
using Azure.Identity;

#pragma warning disable OPENAI001 //currently required for token based authentication

BearerTokenPolicy tokenPolicy = new(
    new DefaultAzureCredential(),
    "https://ai.azure.com/.default");

OpenAIResponseClient client = new(
    model: "o4-mini",
    authenticationPolicy: tokenPolicy,
    options: new OpenAIClientOptions()
    {
        Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
    }
);

OpenAIResponse response = await client.CreateResponseAsync(
    userInputText: "What's the optimal strategy to win at poker?",
    new ResponseCreationOptions()
    {
        ReasoningOptions = new ResponseReasoningOptions()
        {
            ReasoningEffortLevel = ResponseReasoningEffortLevel.High,
            ReasoningSummaryVerbosity = ResponseReasoningSummaryVerbosity.Auto,
        },
    });

// Get the reasoning summary from the first OutputItem (ReasoningResponseItem)
Console.WriteLine("=== Reasoning Summary ===");
foreach (var item in response.OutputItems)
{
    if (item is ReasoningResponseItem reasoningItem)
    {
        foreach (var summaryPart in reasoningItem.SummaryParts)
        {
            if (summaryPart is ReasoningSummaryTextPart textPart)
            {
                Console.WriteLine(textPart.Text);
            }
        }
    }
}

Console.WriteLine("\n=== Assistant Response ===");
// Get the assistant's output
Console.WriteLine(response.GetOutputText());

Nota

Anche se abilitato, i riepiloghi di ragionamento non sono garantiti per ogni passaggio/richiesta. Si tratta di un comportamento previsto.

Mantenere il ragionamento tra le chiamate

Lo stato della conversazione e lo stato di ragionamento non sono la stessa cosa. Il passaggio di messaggi tra chiamate fornisce al modello la cronologia delle conversazioni visibili. Il ragionamento persistente fa un ulteriore passo avanti: nei modelli che lo supportano, il modello può anche riproporre nel contesto corrente i propri elementi di ragionamento dai turni precedenti.

Il ragionamento persistente riguarda la continuità, non la trasparenza. Gli elementi di ragionamento rimangono opachi e l'API non restituisce mai il testo di ragionamento. Impostare reasoning.context per controllare su quali elementi di ragionamento disponibili il modello può disegnare.

Valore Behavior
auto Usa l'impostazione predefinita del modello. L'omissione reasoning.context ha lo stesso effetto.
current_turn Rende disponibile al modello il ragionamento del turno attivo, ma non trasferisce nel campione successivo il ragionamento dei turni precedenti.
all_turns Trasforma gli elementi di ragionamento disponibili e compatibili dei turni precedenti nel campione successivo. Solo i gpt-5.6 modelli supportano questo valore.

I gpt-5.6 modelli supportano all_turns e lo usano per impostazione predefinita. I modelli di ragionamento precedenti sono impostati su current_turn per impostazione predefinita.

Importante

Poiché all_turns inserisce nel contesto più passaggi di ragionamento, aumenta il numero di token fatturati per una richiesta. Se aggiorni un carico di lavoro esistente a un modello gpt-5.6, aspettati un consumo di token più elevato nelle conversazioni su più turni, anche quando il codice non cambia. Impostare reasoning.context su current_turn per mantenere il comportamento precedente.

Tenere presenti questi comportamenti:

  • L'impostazione reasoning.context non crea elementi di ragionamento che non sono già disponibili. Controlla solo gli elementi esistenti di cui viene eseguito il rendering del modello.
  • all_turns ha un effetto solo quando la richiesta può raggiungere elementi di risposta precedenti. Usare previous_response_id, allegare la risposta a una conversazione o riprodurre manualmente la cronologia delle risposte completa.
  • Nella prima richiesta in una conversazione current_turn e all_turns si comportano allo stesso modo, perché non esiste ancora alcun ragionamento precedente.
  • Ogni risposta segnala la modalità effettivamente usata nel relativo reasoning.context campo, come current_turn o all_turns. Controllare tale campo per confermare la modalità effettiva.

Continuare a ragionare con le risposte archiviate

Quando si archiviano le risposte, previous_response_id è il modo più breve per rendere disponibile il ragionamento precedente al modello.

Un esempio C# per reasoning.context non è ancora disponibile. Selezionare la scheda Python o REST per vedere come impostare la modalità e leggere il valore effettivo dalla risposta.

Usare current_turn quando si riproduceno elementi di risposta meno recenti che il modello non ha più bisogno. Questi elementi possono rimanere nel payload della richiesta per garantire la continuità, ma il servizio non li include nel nuovo esempio generato, riducendo così il contesto visualizzato nei flussi di lavoro di lunga durata.

Mantenere il ragionamento senza risposte archiviate

In modalità senza stato, gli elementi di ragionamento nell'array output della risposta includono, per impostazione predefinita, una proprietà encrypted_content. La modalità senza stato si applica quando si imposta store su false e quando l'organizzazione usa Zero Data Retention. Non è necessario richiedere la proprietà: l'API accetta reasoning.encrypted_content ancora nel parametro per la include compatibilità, ma non è più necessaria.

Per usare all_turns in questa modalità, mantenere ogni elemento di output, aggiungere il messaggio utente successivo e riprodurre la cronologia completa.

Un esempio in C# di ragionamento persistente senza stato non è ancora disponibile. Selezionare la scheda Python o REST per vedere come riprodurre elementi di ragionamento crittografati tra turni.

Per altre informazioni sugli elementi di ragionamento crittografati, vedere Elementi di ragionamento crittografati.

Parametro di fase

Nei workflow di lunga durata o che fanno ampio uso di strumenti e che utilizzano gpt-5.5 e gpt-5.4 nell'API Responses, contrassegna ogni messaggio dell'assistente con un valore phase. Il parametro è facoltativo, ma omettendolo può causare il trattamento di un preambolo come risposta finale e arresto anticipato.

Usare commentary per gli aggiornamenti intermedi degli assistenti, ad esempio il preambolo prodotto da un modello prima di una chiamata allo strumento e final_answer per la risposta completata. Non aggiungere phase ai messaggi utente.

{
  "model": "gpt-5.5",
  "input": [
    {
      "role": "assistant",
      "phase": "commentary",
      "content": "I'll inspect the logs, then summarize the root cause and the fix."
    },
    {
      "role": "assistant",
      "phase": "final_answer",
      "content": "Root cause: a cache invalidation race."
    },
    {
      "role": "user",
      "content": "Now give me a rollout-safe fix plan."
    }
  ]
}

Quando si continua una conversazione usando previous_response_id, il servizio mantiene lo stato precedente dell'assistente. Se riproduci autonomamente la cronologia dell'assistente, conserva il valore originale phase di ogni messaggio.

Lark Python

I modelli di ragionamento serie GPT-5 possono chiamare un nuovo custom_tool denominato lark_tool. Questo strumento si basa su Python lark e può essere usato per vincoli più flessibili sull'output del modello.

API risposte

{
  "model": "gpt-5-2025-08-07",
  "input": "please calculate the area of a circle with radius equal to the number of 'r's in strawberry",
  "tools": [
    {
      "type": "custom",
      "name": "lark_tool",
      "format": {
        "type": "grammar",
        "syntax": "lark",
        "definition": "start: QUESTION NEWLINE ANSWER\nQUESTION: /[^\\n?]{1,200}\\?/\nNEWLINE: /\\n/\nANSWER: /[^\\n!]{1,200}!/"
      }
    }
  ],
  "tool_choice": "required"
}

Microsoft Entra ID:

from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://ai.azure.com/.default"
)

client = OpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  api_key=token_provider,
)

response = client.responses.create(  
    model="gpt-5",  # replace with your model deployment name  
    tools=[  
        {  
            "type": "custom",
            "name": "lark_tool",
            "format": {
                "type": "grammar",
                "syntax": "lark",
                "definition": "start: QUESTION NEWLINE ANSWER\nQUESTION: /[^\\n?]{1,200}\\?/\nNEWLINE: /\\n/\nANSWER: /[^\\n!]{1,200}!/"
            }
        }  
    ],  
    input=[{"role": "user", "content": "Please calculate the area of a circle with radius equal to the number of 'r's in strawberry"}],  
)  

print(response.model_dump_json(indent=2))  

Chiave API:

import os
from openai import OpenAI

client = OpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
  api_key=os.getenv("AZURE_OPENAI_API_KEY")  
)

response = client.responses.create(  
    model="gpt-5",  # replace with your model deployment name  
    tools=[  
        {  
            "type": "custom",
            "name": "lark_tool",
            "format": {
                "type": "grammar",
                "syntax": "lark",
                "definition": "start: QUESTION NEWLINE ANSWER\nQUESTION: /[^\\n?]{1,200}\\?/\nNEWLINE: /\\n/\nANSWER: /[^\\n!]{1,200}!/"
            }
        }  
    ],  
    input=[{"role": "user", "content": "Please calculate the area of a circle with radius equal to the number of 'r's in strawberry"}],  
)  

print(response.model_dump_json(indent=2))  
  

Output:

{
  "id": "resp_689a0cf927408190b8875915747667ad01c936c6ffb9d0d3",
  "created_at": 1754926332.0,
  "error": null,
  "incomplete_details": null,
  "instructions": null,
  "metadata": {},
  "model": "gpt-5",
  "object": "response",
  "output": [
    {
      "id": "rs_689a0cfd1c888190a2a67057f471b5cc01c936c6ffb9d0d3",
      "summary": [],
      "type": "reasoning",
      "encrypted_content": null,
      "status": null
    },
    {
      "id": "msg_689a0d00e60c81908964e5e9b2d6eeb501c936c6ffb9d0d3",
      "content": [
        {
          "annotations": [],
          "text": ""strawberry" has 3 r's, so the radius is 3.\nArea = πr<sup>2</sup> = π × 3<sup>2</sup> = 9π ≈ 28.27 square units.",
          "type": "output_text",
          "logprobs": null
        }
      ],
      "role": "assistant",
      "status": "completed",
      "type": "message"
    }
  ],
  "parallel_tool_calls": true,
  "temperature": 1.0,
  "tool_choice": "auto",
  "tools": [
    {
      "name": "lark_tool",
      "parameters": null,
      "strict": null,
      "type": "custom",
      "description": null,
      "format": {
        "type": "grammar",
        "definition": "start: QUESTION NEWLINE ANSWER\nQUESTION: /[^\\n?]{1,200}\\?/\nNEWLINE: /\\n/\nANSWER: /[^\\n!]{1,200}!/",
        "syntax": "lark"
      }
    }
  ],
  "top_p": 1.0,
  "background": false,
  "max_output_tokens": null,
  "max_tool_calls": null,
  "previous_response_id": null,
  "prompt": null,
  "prompt_cache_key": null,
  "reasoning": {
    "effort": "medium",
    "generate_summary": null,
    "summary": null
  },
  "safety_identifier": null,
  "service_tier": "default",
  "status": "completed",
  "text": {
    "format": {
      "type": "text"
    }
  },
  "top_logprobs": null,
  "truncation": "disabled",
  "usage": {
    "input_tokens": 139,
    "input_tokens_details": {
      "cached_tokens": 0
    },
    "output_tokens": 240,
    "output_tokens_details": {
      "reasoning_tokens": 192
    },
    "total_tokens": 379
  },
  "user": null,
  "content_filters": null,
  "store": true
}

Completamenti chat

{
  "messages": [
    {
      "role": "user",
      "content": "Which one is larger, 42 or 0?"
    }
  ],
  "tools": [
    {
      "type": "custom",
      "name": "custom_tool",
      "custom": {
        "name": "lark_tool",
        "format": {
          "type": "grammar",
          "grammar": {
            "syntax": "lark",
            "definition": "start: QUESTION NEWLINE ANSWER\nQUESTION: /[^\\n?]{1,200}\\?/\nNEWLINE: /\\n/\nANSWER: /[^\\n!]{1,200}!/"
          }
        }
      }
    }
  ],
  "tool_choice": "required",
  "model": "gpt-5-2025-08-07"
}

Disponibilità

Disponibilità dell'area

Modello Regione Accesso limitato
gpt-5.6-sol Disponibilità del modello Nessuna richiesta di accesso necessaria. Richiesta di quota richiesta a seconda del livello di quota. Per impostazione predefinita, le sottoscrizioni di livello 5 e 6 hanno una quota.
gpt-5.6-terra Disponibilità del modello Nessuna richiesta di accesso necessaria. Richiesta di quota richiesta a seconda del livello di quota. Per impostazione predefinita, le sottoscrizioni di livello 5 e 6 hanno una quota.
gpt-5.6-luna Disponibilità del modello Nessuna richiesta di accesso necessaria. Richiesta di quota richiesta a seconda del livello di quota. Per impostazione predefinita, le sottoscrizioni di livello 5 e 6 hanno una quota.
gpt-chat-latest Disponibilità del modello Nessuna richiesta di accesso necessaria.
gpt-5.5 Disponibilità del modello Nessuna richiesta di accesso necessaria. Richiesta di quota richiesta a seconda del livello di quota. Per impostazione predefinita, le sottoscrizioni di livello 5 e 6 hanno una quota.
gpt-5.4-mini Disponibilità del modello Nessuna richiesta di accesso necessaria.
gpt-5.4-nano Disponibilità del modello Nessuna richiesta di accesso necessaria.
gpt-5.4-pro Disponibilità del modello L'accesso non è più limitato per questo modello.
gpt-5.4 Disponibilità del modello L'accesso non è più limitato per questo modello.
gpt-5.3-codex Disponibilità del modello L'accesso non è più limitato per questo modello.
gpt-5.2-codex Disponibilità del modello L'accesso non è più limitato per questo modello.
gpt-5.2 Disponibilità del modello L'accesso non è più limitato per questo modello.
gpt-5.1-codex-max Disponibilità del modello L'accesso non è più limitato per questo modello.
gpt-5.1 Disponibilità del modello L'accesso non è più limitato per questo modello.
gpt-5.1-chat Disponibilità del modello Nessuna richiesta di accesso necessaria.
gpt-5.1-codex Disponibilità del modello L'accesso non è più limitato per questo modello.
gpt-5.1-codex-mini Disponibilità del modello Nessuna richiesta di accesso necessaria.
gpt-5-pro Disponibilità del modello L'accesso non è più limitato per questo modello.
gpt-5-codex Disponibilità del modello L'accesso non è più limitato per questo modello.
gpt-5 Disponibilità del modello L'accesso non è più limitato per questo modello.
gpt-5-mini Disponibilità del modello Nessuna richiesta di accesso necessaria.
gpt-5-nano Disponibilità del modello Nessuna richiesta di accesso necessaria.
o3-pro Disponibilità del modello L'accesso non è più limitato per questo modello.
codex-mini Disponibilità del modello Nessuna richiesta di accesso necessaria.
o4-mini Disponibilità del modello L'accesso non è più limitato per questo modello.
o3 Disponibilità del modello L'accesso non è più limitato per questo modello.
o3-mini Disponibilità del modello L'accesso non è più limitato per questo modello.
o1 Disponibilità del modello L'accesso non è più limitato per questo modello.

Supporto api e funzionalità

I limiti di input e output condividono il budget del contesto disponibile e non sono additivi. Per maggiori dettagli e un esempio di calcolo per GPT-5.5, consulta Comprendere i limiti dei token del modello e Budget dei token dell'API Responses.

Funzionalità gpt-5.6-sol, 2026-06-25 gpt-5.6-terra, 2026-06-25 gpt-5.6-luna, 2026-06-25 gpt-5.5, 2026-04-24 gpt-5.4-nano, 2026-03-17 gpt-5.4-mini, 2026-03-17 gpt-5.4-pro gpt-5.4, 2026-03-05 gpt-5.3-codex, 2026-02-24 gpt-5.2-codex, 2026-01-14 gpt-5.2, 2025-12-11 gpt-5.1-codex-max, 2025-12-04 gpt-5.1, 2025-11-13 gpt-5.1-chat, 2025-11-13 gpt-5.1-codex, 2025-11-13 gpt-5.1-codex-mini, 2025-11-13 gpt-5-pro, 2025-10-06 gpt-5-codex, 2025-09-011 gpt-5, 2025-08-07 gpt-5-mini, 2025-08-07 gpt-5-nano, 2025-08-07
Messaggi per sviluppatori
Output strutturati
Finestra di contesto 1,050,000

Input:
922,000
Output:
128,000
1,050,000

Input:
922,000
Output:
128,000
1,050,000

Input:
922,000
Output:
128,000
1,050,000

Input:
922,000
Output:
128,000
400,000

Input: 272.000
Output: 128.000
400,000

Input: 272.000
Output: 128.000
1,050,000

Input:
922,000
Output:
128,000
1,050,000

Input:
922,000
Output:
128,000
400,000

Input: 272.000
Output: 128.000
400,000

Input: 272.000
Output: 128.000
400,000

Input: 272.000
Output: 128.000
400,000

Input: 272.000
Output: 128.000
400,000

Input: 272.000
Output: 128.000
128,000

Input: 111.616
Output: 16.384
400,000

Input: 272.000
Output: 128.000
400,000

Input: 272.000
Output: 128.000
400,000

Input: 272.000
Output: 128.000
400,000

Input: 272.000
Output: 128.000
400,000

Input: 272.000
Output: 128.000
400,000

Input: 272.000
Output: 128.000
400,000

Input: 272.000
Output: 128.000
Sforzo di ragionamento7 6 4 5
Acquisizione immagine
API di completamento della chat 9 9 9 - - - - - - - -
API risposte
Funzioni/Strumenti 9 9 9
Chiamate di strumenti paralleli1 - -
max_completion_tokens 2 - - - - - - - -
Messaggi di sistema 3
Riepilogo del ragionamento
Ragionamento persistente8 - - - - - - - - - - - - - - - - - -
Streaming -

1 Le chiamate allo strumento parallele non sono supportate quando reasoning_effort è impostato su minimal

2 I modelli di ragionamento funzioneranno solo con il max_completion_tokens parametro quando si usa l'API Completamento chat. Usare max_output_tokens con l'API delle Risposte.

3 I modelli di ragionamento più recenti supportano i messaggi di sistema per semplificare la migrazione. Non è consigliabile usare sia un messaggio per sviluppatori che un messaggio di sistema nella stessa richiesta API.

4gpt-5.1reasoning_effort il valore predefinito è none. Quando si esegue l'aggiornamento dai modelli di ragionamento precedenti a gpt-5.1, tenere presente che potrebbe essere necessario aggiornare il codice per passare esplicitamente un livello di reasoning_effort se si desidera che il reasoning_effort si verifichi.

5gpt-5-pro supporta reasoning_efforthighsolo , questo è il valore predefinito anche quando non viene passato in modo esplicito al modello.

6gpt-5.1-codex-max aggiunge il supporto per un nuovo reasoning_effort livello di xhigh cui è il livello più alto su cui è possibile impostare lo sforzo di ragionamento.

7gpt-5.6, gpt-5.5, gpt-5.4, gpt-5.2, gpt-5.1, gpt-5.1-codex, gpt-5.1-codex-max e gpt-5.1-codex-mini supportano 'None' come valore per il parametro reasoning_effort. Per usare questi modelli per generare risposte senza ragionamento, impostare reasoning_effort='None'. Questa impostazione può aumentare la velocità.

8 I gpt-5.6 modelli supportano all_turns il reasoning.context parametro e lo usano per impostazione predefinita. I modelli di ragionamento precedenti supportano solo auto e current_turn.

9 I gpt-5.6 modelli e versioni successive supportano l'API Completamento chat e gli strumenti per le funzioni, ma non entrambi contemporaneamente, a meno che reasoning_effort non sia none. Usare l'API Risposte per la chiamata allo strumento. Per informazioni dettagliate e soluzioni alternative, vedere Chiamare gli strumenti con modelli di ragionamento.

Nuove funzionalità di ragionamento GPT-5

Funzionalità Descrizione
reasoning_effort max è supportato solo con gpt-5.6 e l'API Responses
xhigh è supportato solo con gpt-5.6, gpt-5.5, gpt-5.4e gpt-5.1-codex-max
minimal è supportato solo con i modelli di ragionamento GPT-5 originali. minimal non è supportato con gpt-5.1 o versioni successive *
Con gpt-5.6 e i modelli successivi nell'API Completamento chat, none è l'unico valore che è possibile combinare con gli strumenti funzione. Vedere Tool calling with reasoning models (Chiamare strumenti con modelli di ragionamento).

Opzioni: none, minimal, low, mediumhigh, , xhighmax
verbosity Un nuovo parametro che fornisce un controllo più granulare sul modo in cui sarà conciso l'output del modello.

Opzioni:low, medium, high.
reasoning.context Determina quali elementi di ragionamento disponibili il modello include nel contesto successivo. all_turns è supportato solo con gpt-5.6, che lo usa per impostazione predefinita.

Opzioni:auto, current_turn, all_turns.
reasoning.mode Seleziona l'esecuzione standard o Pro per gpt-5.6 con l'API Responses. La modalità Pro esegue più operazioni del modello su una richiesta prima di restituire una singola risposta, aumentando la latenza e l'utilizzo dei token. Azure OpenAI usa standard come impostazione predefinita.

Opzioni:standard, pro.
preamble I modelli di ragionamento serie GPT-5 hanno la possibilità di dedicare più tempo a "pensare" prima di eseguire una chiamata di funzione/strumento.

Quando si verifica questa pianificazione, il modello può fornire informazioni dettagliate sui passaggi di pianificazione nella risposta del modello tramite un nuovo oggetto denominato preamble oggetto .

La generazione di preamboli nella risposta del modello non è garantita anche se è possibile incoraggiare il modello usando il instructions parametro e passando contenuto come "È NECESSARIO pianificare ampiamente prima di ogni chiamata di funzione. Inviare sempre il piano all'utente prima di chiamare qualsiasi funzione"
strumenti consentiti È possibile specificare più strumenti sotto tool_choice anziché uno solo.
tipo di strumento personalizzato Abilita gli output in formato testo semplice (non JSON).
lark_tool Consente di usare alcune delle funzionalità di Python lark per vincolare più flessibili le risposte del modello

* gpt-5-codex non supporta anche reasoning_effortminimal.

Nota

  • Per evitare timeout, è consigliabile usare la modalità in background per o3-pro.
  • o3-pro attualmente non supporta la generazione di immagini.

Non supportato

Attualmente non sono supportati con i modelli di ragionamento:

  • temperature, top_p, presence_penalty, frequency_penaltylogprobs, top_logprobs, , logit_biasmax_tokens

Richiesta di indicazioni

I modelli di ragionamento funzionano meglio quando si assegnano loro un obiettivo chiaro, vincoli firme e un contratto di output esplicito. A differenza dei modelli senza ragionamento, non è necessario prescrivere ogni passaggio intermedio.

  • Dichiarare l'attività, i vincoli e il formato di output previsto.
  • Considera reasoning_effort come una manopola di regolazione piuttosto che la prima risorsa a cui ricorrere quando la qualità diminuisce.
  • Per i flussi di lavoro agentici o con intensa attività di ricerca, definire i conteggi come eseguiti e come il modello deve verificare il proprio lavoro.

Output in Markdown

Per impostazione predefinita, i modelli o3-mini e o1 non tenteranno di produrre un output che includa la formattazione markdown. Un caso d'uso comune in cui questo comportamento è indesiderato è quando si vuole che il modello restituisca il codice contenuto in un blocco di codice markdown. Quando il modello genera l'output senza formattazione markdown, si perdono funzionalità come l'evidenziazione della sintassi e i blocchi di codice copiabili nelle esperienze di playground interattive. Per eseguire l'override di questo nuovo comportamento predefinito e incoraggiare l'inclusione markdown nelle risposte del modello, aggiungere la stringa Formatting re-enabled all'inizio del messaggio dello sviluppatore.

L'aggiunta Formatting re-enabled all'inizio del messaggio dello sviluppatore non garantisce che il modello includa la formattazione markdown nella risposta, ma aumenta solo la probabilità. È stato rilevato dal test interno che Formatting re-enabled è meno efficace da solo con il modello rispetto a o1 con o3-mini.

Per migliorare le prestazioni di Formatting re-enabled, è possibile ampliare ulteriormente l'inizio del messaggio dello sviluppatore, il che spesso comporterà l'output desiderato. Invece di aggiungere Formatting re-enabled semplicemente all'inizio del messaggio dello sviluppatore, è possibile provare ad aggiungere un'istruzione iniziale più descrittiva come uno degli esempi seguenti:

  • Formatting re-enabled - please enclose code blocks with appropriate markdown tags.
  • Formatting re-enabled - code output should be wrapped in markdown.

A seconda dell'output previsto, potrebbe essere necessario personalizzare ulteriormente il messaggio iniziale dello sviluppatore per specificare come destinazione il caso d'uso specifico.