Azure OpenAI の推論モデル
Azure OpenAI の o-series
モデルは、より焦点が合った、優れた能力で推論と問題解決のタスクに取り組めるように設計されています。 これらのモデルは、ユーザーの要求の処理と理解により多くの時間を費やし、これまでのイテレーションと比較して、科学、コーディング、数学などの分野で非常に強力になっています。
o シリーズ モデルの主な機能:
- 複雑なコード生成: 開発者をサポートするための、アルゴリズム生成と、高度なコーディング タスクの処理の機能。
- 高度な問題解決: 包括的なブレーンストーミング セッションや多面的な課題への対処に最適。
- 複雑なドキュメント比較: 契約、ケース ファイル、法的ドキュメントなどを分析して微妙な違いを特定するのに最適。
- 命令のフォローとワークフロー管理: 短いコンテキストを必要とするワークフローの管理に特に効果的。
可用性
o3-mini
、o1
、o1-preview
にアクセスするには、登録が必要であり、Microsoft の適格性条件に基づいてアクセスが許可されます。
以前に o1
または o1-preview
へのアクセスを申請して受け取ったお客様は、最新モデルの待機リストに自動的に追加されるため、再申請する必要はありません。
アクセスの要求: 制限付きアクセス モデルの申請
利用可能なリージョン
モデル | リージョン | 制限付きアクセス |
---|---|---|
o3-mini |
モデルの可用性。 | 制限付きアクセス モデルの申請 |
o1 |
モデルの可用性。 | 制限付きアクセス モデルの申請 |
o1-preview |
モデルの可用性。 | このモデルを使用できるのは、元の制限付きアクセス リリースの一部としてアクセス権を付与されたお客様に限られます。 現在、o1-preview へのアクセスの拡張は行っていません。 |
o1-mini |
モデルの可用性。 | Global Standard のデプロイの場合、アクセス要求は必要ありません。 現在、Standard (リージョン) のデプロイは、 o1-preview リリースの一部として以前にアクセス権を付与されたお客様のみが利用できます。 |
API と機能のサポート
機能 | o3-mini、2025-01-31 | o1、2024-12-17 | o1-preview、2024-09-12 | o1-mini、2024-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 |
Reasoning effort | ✅ | ✅ | - | - |
Vision のサポート | - | ✅ | - | - |
機能/ツール | ✅ | ✅ | - | - |
max_completion_tokens * |
✅ | ✅ | ✅ | ✅ |
システム メッセージ** | ✅ | ✅ | - | - |
ストリーミング | ✅ | - | - | - |
* 推論 モデルは、max_completion_tokens
パラメーターでのみ機能します。
**最新の o* シリーズ モデルは、移行を容易にするシステム メッセージをサポートしています。
o3-mini
および o1
でシステム メッセージを使用すると、それは開発者メッセージとして処理されます。 開発者メッセージとシステム メッセージの両方を同じ API 要求で使用しないでください。
サポートされていません
現状、推論モデルにおいて、以下のものはサポート対象外です。
- 並列ツール呼び出し
-
temperature
,top_p
,presence_penalty
,frequency_penalty
,logprobs
,top_logprobs
,logit_bias
,max_tokens
使用方法
これらのモデルでは現在、Chat Completions API を使用する他のモデルと同じパラメーター セットはサポートされていません。
最新のパラメーターにアクセスするには、OpenAI クライアント ライブラリをアップグレードする必要があります。
pip install openai --upgrade
認証に Microsoft Entra ID を使うのが初めての場合は、「Microsoft Entra ID 認証を使用して Azure OpenAI Service を構成する方法」をご覧ください。
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 effort
Note
推論モデルでは、モデル応答の completion_tokens_details
の一部として reasoning_tokens
があります。 これらは、メッセージ応答コンテンツの一部としては返されない隠されたトークンですが、利用者の要求に対する最終的な回答を生成するためにモデルによって使用されます。
2024-12-01-preview
では、最新の o1
モデルで low
、medium
、または high
に設定できる新しいパラメーター reasoning_effort
が追加されています。 effort 設定が高いほど、モデルが要求の処理に費やす時間が長くなり、一般に reasoning_tokens
の数が多くなります。
開発者メッセージ
機能上、開発者メッセージ "role": "developer"
はシステム メッセージと同じです。
前述のコード例に開発者メッセージを追加すると、次のようになります。
最新のパラメーターにアクセスするには、OpenAI クライアント ライブラリをアップグレードする必要があります。
pip install openai --upgrade
認証に Microsoft Entra ID を使うのが初めての場合は、「Microsoft Entra ID 認証を使用して Azure OpenAI Service を構成する方法」をご覧ください。
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-mini
および o1
モデルによって、Markdown 書式設定を含む出力の生成は試みられません。 この動作が望ましくない一般的なユース ケースとしては、Markdown コード ブロック内に含まれるコードを当該モデルを使用して出力する場合が挙げられます。 モデルにおいて Markdown 書式設定を使用しないで出力を生成すると、構文の強調表示や、対話型プレイグラウンド エクスペリエンスでのコピー可能なコード ブロックなどの機能が失われます。 この新しい既定の動作をオーバーライドし、モデルの応答に Markdown を含めることを推奨するには、開発者メッセージの先頭に文字列 Formatting re-enabled
を追加します。
開発者メッセージの先頭に Formatting re-enabled
を追加しても、モデルの応答に Markdown 書式設定が含まれることが保証されるわけではなく、含まれる可能性が高くなるに過ぎません。 内部テストの結果、Formatting re-enabled
自体の効果は o3-mini
モデルを使用した場合よりも o1
モデルを使用した場合の方が低いことが判明しました。
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.
期待する出力によっては、最初の開発者メッセージをさらにカスタマイズして、特定のユース ケースをターゲットにすることが必要となる場合があります。