Modelos de raciocínio do Azure OpenAI
Os modelos OpenAI o-series
do Azure são projetados para lidar com tarefas de raciocínio e resolução de problemas com maior foco e capacidade. Esses modelos gastam mais tempo processando e entendendo a solicitação do usuário, tornando-os excepcionalmente fortes em áreas como ciência, codificação e matemática em comparação com iterações anteriores.
Principais capacidades dos modelos da série O:
- Geração de código complexa: Capaz de gerar algoritmos e lidar com tarefas avançadas de codificação para dar suporte aos desenvolvedores.
- Resolução Avançada de Problemas: Ideal para sessões de brainstorming abrangentes e para enfrentar desafios multifacetados.
- Comparação complexa de documentos: Perfeita para analisar contratos, arquivos de casos ou documentos legais para identificar diferenças sutis.
- Acompanhamento de instruções e gerenciamento de fluxo de trabalho: Particularmente eficaz para gerenciar fluxos de trabalho que exigem contextos mais curtos.
Disponibilidade
Para ter acesso a o3-mini
, o1
e o1-preview
, é necessário registar-se e o acesso será concedido com base nos critérios de elegibilidade da Microsoft.
Os clientes que se inscreveram anteriormente e receberam acesso a o1
ou o1-preview
, não precisam se recandidatar, pois estão automaticamente na lista de espera para o modelo mais recente.
Solicitar acesso: aplicativo modelo de acesso limitado
Disponibilidade da região
Modelo | País/Região | Acesso limitado |
---|---|---|
o3-mini |
Disponibilidade do modelo. | Aplicação de modelo de acesso limitado |
o1 |
Disponibilidade do modelo. | Aplicação de modelo de acesso limitado |
o1-preview |
Disponibilidade do modelo. | Este modelo só está disponível para clientes aos quais foi concedido acesso como parte da versão original de acesso limitado. No momento, não estamos expandindo o acesso ao o1-preview . |
o1-mini |
Disponibilidade do modelo. | Nenhuma solicitação de acesso necessária para implantações de Padrão Global. Atualmente, as implantações padrão (regionais) estão disponíveis apenas para clientes selecionados aos quais foi concedido acesso anteriormente como parte da o1-preview versão. |
Suporte a recursos API &
Funcionalidade | O3-Mini, 2025-01-31 | o1, 2024-12-17 | o1-pré-visualização, 2024-09-12 | O1-Mini, 2024-09-12 |
---|---|---|---|---|
Versão da API | 2024-12-01-preview 2025-01-01-preview |
2024-12-01-preview 2025-01-01-preview |
2024-09-01-preview 2024-10-01-preview 2024-12-01-preview |
2024-09-01-preview 2024-10-01-preview 2024-12-01-preview |
Mensagens do desenvolvedor | ✅ | ✅ | - | - |
Saídas estruturadas | ✅ | ✅ | - | - |
Janela de contexto | Entrada: 200.000 Saída: 100.000 |
Entrada: 200.000 Saída: 100.000 |
Entrada: 128.000 Potência: 32.768 |
Entrada: 128.000 Saída: 65.536 |
Esforço de raciocínio | ✅ | ✅ | - | - |
Suporte de visão | - | ✅ | - | - |
Funções/Ferramentas | ✅ | ✅ | - | - |
max_completion_tokens * |
✅ | ✅ | ✅ | ✅ |
Mensagens do sistema** | ✅ | ✅ | - | - |
Transmissão | ✅ | - | - | - |
* Os modelos de raciocínio só funcionarão com o max_completion_tokens
parâmetro.
**O modelo mais recente da série o* suporta mensagens do sistema para facilitar a migração. Quando você usa uma mensagem do sistema com o3-mini
e o1
ela será tratada como uma mensagem do desenvolvedor. Você não deve usar uma mensagem de desenvolvedor e uma mensagem do sistema na mesma solicitação de API.
Não suportado
Atualmente, os seguintes itens não são suportados com modelos de raciocínio:
- Chamada de ferramenta paralela
-
temperature
,top_p
, ,presence_penalty
,logprobs
frequency_penalty
,top_logprobs
,logit_bias
,max_tokens
Utilização
Atualmente, esses modelos não suportam o mesmo conjunto de parâmetros que outros modelos que usam a API de conclusão de chat.
Você precisará atualizar sua biblioteca de cliente OpenAI para ter acesso aos parâmetros mais recentes.
pip install openai --upgrade
Se você é novo no uso da ID do Microsoft Entra para autenticação, consulte Como configurar o Serviço OpenAI do Azure com a autenticação do Microsoft Entra ID.
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
azure_ad_token_provider=token_provider,
api_version="2024-12-01-preview"
)
response = client.chat.completions.create(
model="o1-new", # replace with the model deployment name of your o1-preview, or o1-mini model
messages=[
{"role": "user", "content": "What steps should I think about when writing my first Python API?"},
],
max_completion_tokens = 5000
)
print(response.model_dump_json(indent=2))
Saída:
{
"id": "chatcmpl-AEj7pKFoiTqDPHuxOcirA9KIvf3yz",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "Writing your first Python API is an exciting step in developing software that can communicate with other applications. An API (Application Programming Interface) allows different software systems to interact with each other, enabling data exchange and functionality sharing. Here are the steps you should consider when creating your first Python API...truncated for brevity.",
"refusal": null,
"role": "assistant",
"function_call": null,
"tool_calls": null
},
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"protected_material_code": {
"filtered": false,
"detected": false
},
"protected_material_text": {
"filtered": false,
"detected": false
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"created": 1728073417,
"model": "o1-2024-12-17",
"object": "chat.completion",
"service_tier": null,
"system_fingerprint": "fp_503a95a7d8",
"usage": {
"completion_tokens": 1843,
"prompt_tokens": 20,
"total_tokens": 1863,
"completion_tokens_details": {
"audio_tokens": null,
"reasoning_tokens": 448
},
"prompt_tokens_details": {
"audio_tokens": null,
"cached_tokens": 0
}
},
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"custom_blocklists": {
"filtered": false
},
"hate": {
"filtered": false,
"severity": "safe"
},
"jailbreak": {
"filtered": false,
"detected": false
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
]
}
Esforço de raciocínio
Nota
Os modelos de raciocínio têm reasoning_tokens
como parte a resposta do completion_tokens_details
modelo. Esses são tokens ocultos que não são retornados como parte do conteúdo de resposta da mensagem, mas são usados pelo modelo para ajudar a gerar uma resposta final à sua solicitação.
2024-12-01-preview
adiciona um novo parâmetro reasoning_effort
adicional que pode ser definido como low
, medium
ou high
com o modelo mais recente o1
. Quanto maior a configuração de esforço, mais tempo o modelo gastará processando a solicitação, o que geralmente resultará em um número maior de reasoning_tokens
.
Mensagens do desenvolvedor
Funcionalmente, as mensagens "role": "developer"
do desenvolvedor são as mesmas que as mensagens do sistema.
Adicionar uma mensagem de desenvolvedor ao exemplo de código anterior teria a seguinte aparência:
Você precisará atualizar sua biblioteca de cliente OpenAI para ter acesso aos parâmetros mais recentes.
pip install openai --upgrade
Se você é novo no uso da ID do Microsoft Entra para autenticação, consulte Como configurar o Serviço OpenAI do Azure com a autenticação do Microsoft Entra ID.
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
azure_ad_token_provider=token_provider,
api_version="2024-12-01-preview"
)
response = client.chat.completions.create(
model="o1-new", # replace with the model deployment name of your o1-preview, or o1-mini model
messages=[
{"role": "developer","content": "You are a helpful assistant."}, # optional equivalent to a system message for reasoning models
{"role": "user", "content": "What steps should I think about when writing my first Python API?"},
],
max_completion_tokens = 5000
)
print(response.model_dump_json(indent=2))
Saída de Markdown
Por padrão, os modelos e o1
não tentarão produzir uma saída que inclua formatação de o3-mini
markdown. Um caso de uso comum em que esse comportamento é indesejável é quando você deseja que o modelo produza o código contido em um bloco de código de markdown. Quando o modelo gera saída sem formatação de marcação, você perde recursos como sintaxe, realce e blocos de código copiáveis em experiências interativas de playground. Para substituir esse novo comportamento padrão e incentivar a inclusão de markdown nas respostas do modelo, adicione a cadeia de caracteres Formatting re-enabled
ao início da mensagem do desenvolvedor.
Adicionar Formatting re-enabled
ao início da mensagem do desenvolvedor não garante que o modelo incluirá formatação de marcação em sua resposta, apenas aumenta a probabilidade. Verificamos, a partir de testes internos, que é menos eficaz por si só com o modelo do que Formatting re-enabled
com o3-mini
o o1
.
Para melhorar o desempenho de Formatting re-enabled
você pode aumentar ainda mais o início da mensagem do desenvolvedor que muitas vezes resultará na saída desejada. Em vez de apenas adicionar Formatting re-enabled
ao início da mensagem do desenvolvedor, você 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 saída esperada, talvez seja necessário personalizar ainda mais a mensagem inicial do desenvolvedor para direcionar seu caso de uso específico.