Partilhar via


Modelos de raciocínio do Azure OpenAI

O Azure OpenAI o1 e o1-mini os modelos 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 da série o1:

  • 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

Os modelos da série o1 agora estão disponíveis para acesso à API e implantação de modelos. O registro é necessário e o acesso será concedido com base nos critérios de elegibilidade da Microsoft. Os clientes que se inscreveram anteriormente e receberam acesso ao 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

Depois que o acesso for concedido, você precisará criar uma implantação para cada modelo. Se você tiver uma implantação existente o1-preview , a atualização in-loco não é suportada no momento, você precisará criar uma nova implantação.

Disponibilidade da região

Modelo País/Região
o1 Leste US2 (Padrão Global)
Suécia Central (Norma Global)
o1-preview Consulte a página de modelos.
o1-mini Consulte a página de modelos.

Suporte de API

O suporte inicial para os modelos o1-preview e o1-mini preview foi adicionado na versão 2024-09-01-previewAPI.

Como parte desta versão, o max_tokens parâmetro foi preterido e substituído pelo novo max_completion_tokens parâmetro. Os modelos da série O1 só funcionam com o max_completion_tokens parâmetro.

O mais recente modelo da série o1 mais capaz é o1 a versão: 2024-12-17. Este modelo de disponibilidade geral (GA) deve ser usado com a versão 2024-12-01-previewda API.

2024-12-01-visualização

2024-12-01-preview Adiciona suporte para o novo reasoning_effort parâmetro, saídas estruturadas e mensagens do desenvolvedor. Atualmente, os modelos de raciocínio de visualização mais antigos não suportam esses recursos. Para modelos de raciocínio, esses recursos estão atualmente disponíveis apenas com o1 a versão: 2024-12-17.

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. Atualmente, apenas um subconjunto limitado é suportado. Usando parâmetros padrão como temperature e top_p resultará em erros.

Você precisará atualizar sua biblioteca de cliente OpenAI para acessar os parâmetros mais recentes.

pip install openai --upgrade

Se você é novo no uso do Microsoft Entra ID para autenticação, consulte Como configurar o Serviço Azure OpenAI 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"
        }
      }
    }
  ]
}

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, mediumou 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.

  • As mensagens do sistema não são suportadas com os modelos de raciocínio da série o1.
  • o1-2024-12-17 com a versão da API: 2024-12-01-preview e mais tarde adiciona suporte para mensagens do desenvolvedor.

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 acessar os 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))