共用方式為


Azure OpenAI 推理模型

Azure OpenAI o-series 模型的設計訴求是透過增加焦點和功能來解決推理和解決問題的工作。 這些模型花費更多的時間處理和了解使用者的要求,這使得其在科學、程式碼撰寫和數學等領域比以前的迭代更加強大。

o 系列模型的主要功能:

  • 複雜程式碼產生:能夠產生演算法,並處理進階程式碼撰寫工作以支援開發人員。
  • 進階問題解決:非常適合全面腦力激盪的研討會,並解決多方面的挑戰。
  • 複雜文件比較:非常適合分析合約、案件卷宗或法律文件以識別細微差別。
  • 遵循指示和工作流程管理:對於管理需要較短內容的工作流程特別有效。

可用性

若要存取 o3-minio1o1-preview,則需要註冊,而且會根據Microsoft的資格準則來授與存取權。

先前已套用和接收 或 o1-preview存取o1權的客戶不需要重新套用,因為它們會自動在最新模型的等候清單上套用。

要求存取:有限存取模型應用程式 (英文)

區域可用性

模型 區域 存取受限制
o3-mini 模型可用性 有限的存取模型應用程式
o1 模型可用性 有限的存取模型應用程式
o1-preview 模型可用性 此模型僅適用於在原始有限存取版本中授與存取權的客戶。 我們目前並未擴充 對的 o1-preview存取權。
o1-mini 模型可用性 全域標準部署不需要存取要求。

標準 (地區) 部署目前僅適用於先前獲授與存取權作為發行一 o1-preview 部分的客戶。

API 和功能支援

功能 o3-mini2025-01-31 o12024-12-17 o1-preview2024-09-12 o1-mini2024-09-12
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
開發人員訊息 - -
結構化輸出 - -
內容視窗 輸入:200,000
輸出:100,000
輸入:200,000
輸出:100,000
輸入:128,000
輸出:32,768
輸入:128,000
輸出:65,536
推理工作 - -
視覺支援 - - -
Functions/Tools - -
max_completion_tokens*
系統訊息** - -
串流 - - -

* 推理模型只能與 參數搭配使用 max_completion_tokens

**最新的 o* 系列模型支持系統訊息,讓移轉更容易。 當您搭配 o3-mini 使用系統訊息時 o1 ,系統會將它視為開發人員訊息。 您不應該在相同的 API 要求中使用開發人員訊息和系統訊息。

不支援

目前不支援使用推理模型:

  • 平行工具呼叫
  • temperaturetop_ppresence_penaltyfrequency_penaltylogprobstop_logprobs、、、 logit_biasmax_tokens

使用方式

這些模型 目前不支援與使用聊天完成 API 的其他模型相同的參數 集。

您必須升級 OpenAI 用戶端連結庫,才能存取最新的參數。

pip install openai --upgrade

如果您不熟悉使用 Microsoft Entra ID 進行驗證,請參閱 如何使用 Microsoft Entra ID 驗證來設定 Azure OpenAI 服務。

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

輸出:

{
  "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"
        }
      }
    }
  ]
}

推理工作

注意

推理模型在模型回應中具有 reasoning_tokens 的一部分 completion_tokens_details 。 這些是隱藏令牌,不會作為訊息回應內容的一部分傳回,但由模型用來協助產生要求的最終答案。 2024-12-01-preview會新增可設定為、 或 high 具有最新o1模型的其他新參數reasoning_effortmediumlow 工作設定愈高,模型會花費處理要求的時間越長,這通常會產生較大的數目 reasoning_tokens

開發人員訊息

功能上的開發人員訊息 "role": "developer" 與系統訊息相同。

將開發人員訊息新增至先前的程式代碼範例如下所示:

您必須升級 OpenAI 用戶端連結庫,才能存取最新的參數。

pip install openai --upgrade

如果您不熟悉使用 Microsoft Entra ID 進行驗證,請參閱 如何使用 Microsoft Entra ID 驗證來設定 Azure OpenAI 服務。

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

Markdown 輸出

根據預設, o3-minio1 模型不會嘗試產生包含 Markdown 格式的輸出。 當您想要模型輸出 Markdown 程式代碼區塊中包含的程式代碼時,這是不想要此行為的常見使用案例。 當模型產生沒有 Markdown 格式的輸出時,您會遺失語法醒目提示等功能,以及在互動式遊樂場體驗中可複製的程式碼區塊。 若要覆寫這個新的預設行為,並鼓勵在模型回應中包含 Markdown,請將字串 Formatting re-enabled 新增至開發人員訊息的開頭。

新增 Formatting re-enabled 至開發人員訊息開頭並不保證模型在其回應中包含 Markdown 格式設定,只會增加可能性。 我們從內部測試 Formatting re-enabled 中發現,其本身對 o1 模型效率較不如使用 o3-mini

若要改善 效能, Formatting re-enabled 您可以進一步增強開發人員訊息的開頭,這通常會導致所需的輸出。 您可以實驗新增更具描述性的初始指示,而不是只新增 Formatting re-enabled 至開發人員訊息的開頭,如下列其中一個範例:

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

根據您的預期輸出,您可能需要進一步自定義初始開發人員訊息,以鎖定您的特定使用案例。