Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os modelos de raciocínio Azure OpenAI foram concebidos para abordar tarefas de raciocínio e resolução de problemas com maior foco e capacidade. Estes modelos dedicam mais tempo a processar e compreender o pedido do utilizador, tornando-os excecionalmente fortes em áreas como ciência, programação e matemática em comparação com iterações anteriores.
Principais capacidades dos modelos de raciocínio:
- Geração Complexa de Código: Capaz de gerar algoritmos e lidar com tarefas avançadas de programação para apoiar programadores.
- Resolução Avançada de Problemas: Ideal para sessões abrangentes de brainstorming e para enfrentar desafios multifacetados.
- Comparação de Documentos Complexos: Perfeita para analisar contratos, processos ou documentos legais para identificar diferenças subtis.
- Seguir Instruções e Gestão de Fluxos de Trabalho: Particularmente eficaz para gerir fluxos de trabalho que exigem contextos mais curtos.
Pré-requisitos
Um modelo de raciocínio Azure OpenAI implementado.
Se usares os exemplos do REST:
Instala a CLI do Azure. Para mais informações, consulte Instale o CLI do Azure.
Inicie sessão com
az login, depois gere um token portador e armazene-o naAZURE_OPENAI_AUTH_TOKENvariável de ambiente.az account get-access-token --resource https://cognitiveservices.azure.com --query accessToken -o tsv
Utilização
Estes modelos não suportam atualmente o mesmo conjunto de parâmetros que outros modelos que utilizam a API de completação de chat.
API de completação de 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
};
ChatCompletion completion = client.CompleteChat(
new DeveloperChatMessage("You are a helpful assistant"),
new UserChatMessage("Tell me about the bitter lesson")
);
Console.WriteLine($"[ASSISTANT]: {completion.Content[0].Text}");
Esforço de raciocínio
Nota
Os modelos de raciocínio têm reasoning_tokens como parte de completion_tokens_details na resposta do modelo. Estes são tokens ocultos que não são devolvidos como parte do conteúdo da resposta à mensagem, mas são usados pelo modelo para ajudar a gerar uma resposta final ao seu pedido.
reasoning_effort pode ser definido como low, medium, ou high para todos os modelos de raciocínio exceto o1-mini. Quanto maior for a definição de esforço, mais tempo o modelo passará a processar o pedido, o que geralmente resultará num maior número de reasoning_tokens.
Mensagens do programador
As mensagens do programador ("role": "developer") são funcionalmente iguais às mensagens do sistema.
Adicionar uma mensagem de programador ao exemplo de código anterior seria o seguinte:
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
};
ChatCompletion completion = client.CompleteChat(
new DeveloperChatMessage("You are a helpful assistant"),
new UserChatMessage("Tell me about the bitter lesson")
);
Console.WriteLine($"[ASSISTANT]: {completion.Content[0].Text}");
Resumo do raciocínio
Ao utilizar os modelos de raciocínio mais recentes com a API Responses , pode usar o parâmetro de resumo de raciocínio para receber resumos do raciocínio da cadeia de pensamento do modelo.
Importante
Tentar extrair raciocínio bruto através de métodos diferentes do parâmetro de resumo de raciocínio não é suportado, pode violar a Política de Uso Aceitável e pode resultar em limitação ou suspensão quando detetado.
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
Mesmo quando ativados, não é garantido que os resumos de raciocínio sejam gerados para cada passo/pedido. Isto é um comportamento esperado.
Python lark
Os modelos de raciocínio da série GPT-5 têm a capacidade de chamar um novo custom_tool chamado lark_tool. Esta ferramenta baseia-se em Python lark e pode ser usada para uma restrição mais flexível da saída do modelo.
API de Respostas
{
"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))
Chave 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))
Saída:
{
"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² = π × 3² = 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
}
Conclusões de 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"
}
Disponibilidade
Disponibilidade regional
| Modelo | Região | Acesso limitado |
|---|---|---|
gpt-5.5 |
Padrão Global: East US2 Suécia Central E.U.A. Centro-Sul Polónia Central Padrão da Zona de Dados: East US2 Centro-Sul dos EUA Polónia Central Suécia Central |
Não é necessário pedido de acesso. Pedido de quota é necessário dependendo do nível de quota. As subscrições de Nível 5 e Nível 6 têm quotas por padrão. |
gpt-5.4-mini |
Disponibilidade de modelos | Não é necessário pedido de acesso. |
gpt-5.4-nano |
Disponibilidade de modelos | Não é necessário pedido de acesso. |
gpt-5.4-pro |
Disponibilidade de modelos | Solicitar acesso: Aplicação de modelo de acesso limitado. Se já tiver acesso a um modelo de acesso limitado, não é necessário pedido. |
gpt-5.4 |
Disponibilidade de modelos | Solicitar acesso: Aplicação de modelo de acesso limitado. Se já tiver acesso a um modelo de acesso limitado, não é necessário pedido. |
gpt-5.3-codex |
Disponibilidade de modelos | Solicitar acesso: Aplicação de modelo de acesso limitado. Se já tiver acesso a um modelo de acesso limitado, não é necessário pedido. |
gpt-5.2-codex |
Disponibilidade de modelos | Solicitar acesso: Aplicação de modelo de acesso limitado. Se já tiver acesso a um modelo de acesso limitado, não é necessário pedido. |
gpt-5.2 |
Disponibilidade de modelos | Solicitar acesso: Aplicação de modelo de acesso limitado. Se já tiver acesso a um modelo de acesso limitado, não é necessário pedido. |
gpt-5.1-codex-max |
Disponibilidade de modelos | O acesso já não é restrito para este modelo. |
gpt-5.1 |
Disponibilidade de modelos | O acesso já não é restrito para este modelo. |
gpt-5.1-chat |
Disponibilidade de modelos | Não é necessário pedido de acesso. |
gpt-5.1-codex |
Disponibilidade de modelos | O acesso já não é restrito para este modelo. |
gpt-5.1-codex-mini |
Disponibilidade de modelos | Não é necessário pedido de acesso. |
gpt-5-pro |
Disponibilidade de modelos | O acesso já não é restrito para este modelo. |
gpt-5-codex |
Disponibilidade de modelos | O acesso já não é restrito para este modelo. |
gpt-5 |
Disponibilidade de modelos | O acesso já não é restrito para este modelo. |
gpt-5-mini |
Disponibilidade de modelos | Não é necessário pedido de acesso. |
gpt-5-nano |
Disponibilidade de modelos | Não é necessário pedido de acesso. |
o3-pro |
Disponibilidade de modelos | Solicitar acesso: Aplicação de modelo de acesso limitado. Se já tiver acesso a um modelo de acesso limitado, não é necessário pedido. |
codex-mini |
Disponibilidade de modelos | Não é necessário pedido de acesso. |
o4-mini |
Disponibilidade de modelos | Não é necessário pedido de acesso para usar as capacidades principais deste modelo. Solicitar acesso: o4-mini funcionalidade de síntese de raciocínio |
o3 |
Disponibilidade de modelos | Pedido de acesso: Aplicação modelo de acesso limitado |
o3-mini |
Disponibilidade de modelos. | O acesso já não é restrito para este modelo. |
o1 |
Disponibilidade de modelos. | O acesso já não é restrito para este modelo. |
Suporte a API e funcionalidades
| Funcionalidade | 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, 05-03-2026 | 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, 04-12-2025 | 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, 06-10-2025 | GPT-5-Codex, 2025-09-011 | GPT-5, 2025-08-07 | GPT-5-MINI, 07-08-2025 | GPT-5-nano, 07-08-2025 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Mensagens do Desenvolvedor | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Saídas Estruturadas | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Janela de Contexto | 1,050,000 Entrada: 922,000 Saída: 128,000 |
400,000 Entrada: 272.000 Produção: 128.000 |
400,000 Entrada: 272.000 Produção: 128.000 |
1,050,000 Entrada: 922,000 Saída: 128,000 |
1,050,000 Entrada: 922,000 Saída: 128,000 |
400,000 Entrada: 272.000 Produção: 128.000 |
400,000 Entrada: 272.000 Produção: 128.000 |
400,000 Entrada: 272.000 Produção: 128.000 |
400,000 Entrada: 272.000 Produção: 128.000 |
400,000 Entrada: 272.000 Produção: 128.000 |
128,000 Entrada: 111.616 Produção: 16.384 |
400,000 Entrada: 272.000 Produção: 128.000 |
400,000 Entrada: 272.000 Produção: 128.000 |
400,000 Entrada: 272.000 Produção: 128.000 |
400,000 Entrada: 272.000 Produção: 128.000 |
400,000 Entrada: 272.000 Produção: 128.000 |
400,000 Entrada: 272.000 Produção: 128.000 |
400,000 Entrada: 272.000 Produção: 128.000 |
| Esforço de Raciocínio7 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ 6 | ✅ 4 | ✅ | ✅ | ✅ | ✅ 5 | ✅ | ✅ | ✅ | ✅ |
| Entrada de imagem | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| API de Completação de Chat | ✅ | ✅ | ✅ | - | ✅ | - | - | ✅ | - | ✅ | ✅ | - | - | - | - | ✅ | ✅ | ✅ |
| API de Respostas | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Funções/Ferramentas | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Chamadas de Ferramenta Paralelas1 | ✅ | ✅ | ✅ | - | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | ✅ | ✅ | ✅ | ✅ |
max_completion_tokens
2 |
✅ | ✅ | ✅ | - | ✅ | - | - | ✅ | - | ✅ | ✅ | - | - | - | - | ✅ | ✅ | ✅ |
| Mensagens do Sistema 3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Resumo do raciocínio | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Streaming | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | ✅ | ✅ | ✅ | ✅ |
1 Chamadas paralelas de ferramentas não são suportadas quando reasoning_effort está definido como minimal
2 Modelos de raciocínio só funcionam com o max_completion_tokens parâmetro quando se utiliza a API de Conversas Completas. Use max_output_tokens com a API de Responses.
3 Os modelos de raciocínio mais recentes suportam mensagens do sistema para facilitar a migração. Não deve usar uma mensagem de programador e uma mensagem de sistema no mesmo pedido de API.
4gpt-5.1reasoning_effort por predefinição é none. Ao atualizar a partir de modelos de raciocínio anteriores para gpt-5.1, tenha em mente que pode ser necessário atualizar o código para especificar explicitamente um nível de _reasoning_effort_ se desejar que _reasoning_effort_ ocorra.
5gpt-5-pro suporta reasoning_efforthighapenas , este é o valor padrão mesmo quando não é explicitamente passado ao modelo.
6gpt-5.1-codex-max adiciona suporte para um novo reasoning_effort nível de xhigh que é o nível mais alto a que o esforço de raciocínio pode ser definido.
7gpt-5.2, gpt-5.1, gpt-5.1-codex, gpt-5.1-codex-max, e gpt-5.1-codex-mini suporte 'None' como valor para o reasoning_effort parâmetro. Se quiser usar estes modelos para gerar respostas sem raciocínio, defina reasoning_effort='None'. Esta configuração pode aumentar a velocidade.
NOVAS funcionalidades de raciocínio GPT-5
| Destaque | Descrição |
|---|---|
reasoning_effort |
xhigh é suportado apenas com gpt-5.1-codex-max minimal é suportado apenas com os modelos originais de raciocínio GPT-5.
minimal não é suportado com gpt-5.1 ou maior * Opções: none, minimal, low, medium, high, xhigh |
verbosity |
Um novo parâmetro que proporcione um controlo mais granular sobre a concisão da saída do modelo. Opções: low, medium, high. |
preamble |
Os modelos de raciocínio da série GPT-5 têm a capacidade de gastar mais tempo a "pensar" antes de executar uma chamada de função/ferramenta. Quando este planeamento ocorre, o modelo pode fornecer uma visão sobre os passos de planeamento na resposta do modelo através de um novo objeto chamado objeto preamble .A geração de preâmbulos na resposta do modelo não é garantida, embora possa incentivar o modelo usando o parâmetro instructions e passando conteúdo como "deve planear extensivamente antes de cada chamada de função". SEMPRE envia o teu plano ao utilizador antes de chamar qualquer função" |
| Ferramentas permitidas | Pode especificar várias ferramentas abaixo tool_choice em vez de apenas uma. |
| Tipo de ferramenta personalizada | Permite saídas de texto bruto (não-json) |
lark_tool |
Permite usar algumas das capacidades de Python lark para uma restrição mais flexível das respostas do modelo |
*
gpt-5-codex também não suporta reasoning_effortminimal.
Para mais informações, recomendamos também a leitura do guia de receitas GPT-5 da OpenAI e do seu guia de funcionalidades GPT-5.
Nota
- Para evitar tempos de espera, recomenda-se o modo em segundo plano para
o3-pro. -
o3-proAtualmente não suporta geração de imagens.
Não Suportado
Os seguintes modelos atualmente não são suportados por modelos de raciocínio:
-
temperature,top_p,presence_penalty,frequency_penalty,logprobs,top_logprobs,logit_bias,max_tokens
Saída Markdown
Por defeito, os modelos o3-mini e o1 não tentam produzir uma saída que inclua formatação em markdown. Um caso de uso comum em que este comportamento é indesejável é quando se quer que o modelo produza código contido dentro de um bloco de código markdown. Quando o modelo gera saída sem formatação markdown, perdem-se funcionalidades como realce de sintaxe e blocos de código copiáveis em experiências interativas em ambientes de teste. Para ultrapassar este novo comportamento padrão e incentivar a inclusão de markdown nas respostas do modelo, adicione a cadeia Formatting re-enabled ao início da sua mensagem de programador.
Adicionar Formatting re-enabled ao início da sua mensagem de programador não garante que o modelo inclua formatação markdown na resposta, apenas aumenta a probabilidade. Descobrimos através de testes internos que Formatting re-enabled é menos eficaz por si só com o o1 modelo do que com o3-mini.
Para melhorar o desempenho do Formatting re-enabled, pode-se aprimorar ainda mais a introdução da mensagem do programador, o que geralmente resultará no resultado desejado. Em vez de apenas acrescentar Formatting re-enabled ao início da sua mensagem de programador, pode experimentar adicionar uma instrução inicial mais descritiva, como um dos exemplos abaixo:
Formatting re-enabled - please enclose code blocks with appropriate markdown tags.Formatting re-enabled - code output should be wrapped in markdown.
Dependendo da sua saída esperada, pode ser necessário personalizar ainda mais a sua mensagem inicial de programador para direcionar o seu caso de uso específico.