Azure OpenAI の推論モデル
Azure OpenAI の o1
および o1-mini
モデルは、より焦点が合った、優れた能力で推論と問題解決のタスクに取り組めるように設計されています。 これらのモデルは、ユーザーの要求の処理と理解により多くの時間を費やし、これまでのイテレーションと比較して、科学、コーディング、数学などの分野で非常に強力になっています。
o1 シリーズの主な機能:
- 複雑なコード生成: 開発者をサポートするための、アルゴリズム生成と、高度なコーディング タスクの処理の機能。
- 高度な問題解決: 包括的なブレーンストーミング セッションや多面的な課題への対処に最適。
- 複雑なドキュメント比較: 契約、ケース ファイル、法的ドキュメントなどを分析して微妙な違いを特定するのに最適。
- 命令のフォローとワークフロー管理: 短いコンテキストを必要とするワークフローの管理に特に効果的。
可用性
o1 シリーズ モデルを API アクセスとモデル デプロイで使用できるようになりました。 登録が必要であり、Microsoft の適格性条件に基づいてアクセスが許可されます。 以前に o1-preview
へのアクセスを申請して受け取ったお客様は、最新モデルの待機リストに自動的に追加されるため、再申請する必要はありません。
アクセスの要求: 制限付きアクセス モデルの申請
アクセスが許可されたら、モデルごとにデプロイを作成する必要があります。 既存の o1-preview
デプロイがある場合、インプレース アップグレードは現在サポートされていません。新しいデプロイを作成する必要があります。
利用可能なリージョン
モデル | リージョン |
---|---|
o1 |
米国東部 2 (グローバル標準) スウェーデン中部 (グローバル標準) |
o1-preview |
モデルのページを参照。 |
o1-mini |
モデルのページを参照。 |
API のサポート
o1-preview および o1-mini プレビュー モデルの初期サポートが、API バージョン 2024-09-01-preview
に追加されました。
このリリースの一環で、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 でのみ使用できます。
使用方法
これらのモデルでは、現在、Chat Completions API を使う他のモデルと同じパラメーター セットはサポートされていません。 現在サポートされているのは、限定されたサブセットのみです。 temperature
や top_p
などの標準パラメーターを使用すると、エラーが発生します。
最新のパラメーターにアクセスするには、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"
}
}
}
]
}
Note
推論モデルでは、モデル応答の completion_tokens_details
の一部として reasoning_tokens
があります。 これらは隠しトークンであり、メッセージ応答コンテンツの一部として返されませんが、要求に対する最終的な回答を生成するためにモデルで使用されます。 2024-12-01-preview
では、最新の o1
モデルで low
、medium
、または high
に設定できる新しいパラメーター reasoning_effort
が追加されています。 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 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))