你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure OpenAI 推理模型
Azure OpenAI o1
和 o1-mini
模型设计用于处理推理任务和解决问题的任务,具有更好的针对性和功能。 这些模型将更多时间花费在处理和理解用户的请求上,与以前的更迭版本相比,它们在科学、编码和数学等领域表现得异常强大。
o1 系列的主要功能:
- 复杂代码生成:能够生成算法并处理高级编码任务以支持开发人员。
- 高级问题解决:非常适合全面的头脑风暴会议和解决多方面的挑战。
- 复杂文档比较:非常适合分析合同、案例文件或法律文档以识别细微的差别。
- 指令遵循和工作流管理:对于管理需要较短上下文的工作流特别有效。
可用性
现在可以使用 o1 系列模型进行 API 访问和模型部署。 需要完成注册,并且会根据 Microsoft 的资格条件授予访问权限。 之前申请并获得 o1-preview
访问权限的客户无需重新申请,因为他们会自动进入最新模型的候补名单。
请求访问:受限访问模型应用程序
被授予访问权限后,你需要为每个模型创建部署。 如果你有现有的 o1-preview
部署,则目前不支持就地升级,你需要创建新的部署。
上市区域
型号 | 区域 |
---|---|
o1 |
美国东部 2(全球标准) 瑞典中部(全球标准) |
o1-preview |
请参阅模型页。 |
o1-mini |
请参阅模型页。 |
API 支持
API 版本 2024-09-01-preview
中添加了对 o1-preview 和 o1-mini 预览版模型的初始支持。
在此版本中,max_tokens
参数被弃用,被替换为新的 max_completion_tokens
参数。 o1 系列模型仅可使用 max_completion_tokens
参数。
最新且功能最强的 o1 系列模型为 o1
版本:2024-12-17。 这个正式发布 (GA) 模型应与 API 版本 2024-12-01-preview
配合使用。
2024-12-01-preview
2024-12-01-preview
添加了对新的 reasoning_effort
参数、结构化输出和开发人员消息的支持。 较旧的预览版推理模型目前不支持这些功能。 对于推理模型,这些功能目前仅适用于 o1
版本:2024-12-17。
使用情况
这些模型当前不支持与使用聊天补全 API 的其他模型相同的参数集。 目前仅支持有限的子集。 使用 temperature
和 top_p
之类的标准参数会导致错误。
需要升级 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
添加了额外的新参数 reasoning_effort
,你可以使用最新的 o1
模型将该参数设置为 low
、medium
或 high
。 effort 设置越高,模型处理请求所花的时间就越长,这通常会导致更多的 reasoning_tokens
。
开发人员消息
从功能上来说,开发人员消息 "role": "developer"
与系统消息相同。
- o1 系列推理模型不支持系统消息。
- 使用 API 版本
2024-12-01-preview
及更高版本的o1-2024-12-17
添加了对开发人员消息的支持。
在上一代码示例中添加开发人员消息,如下所示:
需要升级 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))