次の方法で共有


Azure OpenAI の推論モデル

Azure OpenAI の o-series モデルは、より焦点が合った、優れた能力で推論と問題解決のタスクに取り組めるように設計されています。 これらのモデルは、ユーザーの要求の処理と理解により多くの時間を費やし、これまでのイテレーションと比較して、科学、コーディング、数学などの分野で非常に強力になっています。

o シリーズ モデルの主な機能:

  • 複雑なコード生成: 開発者をサポートするための、アルゴリズム生成と、高度なコーディング タスクの処理の機能。
  • 高度な問題解決: 包括的なブレーンストーミング セッションや多面的な課題への対処に最適。
  • 複雑なドキュメント比較: 契約、ケース ファイル、法的ドキュメントなどを分析して微妙な違いを特定するのに最適。
  • 命令のフォローとワークフロー管理: 短いコンテキストを必要とするワークフローの管理に特に効果的。

可用性

o3-minio1o1-preview にアクセスするには、登録が必要であり、Microsoft の適格性条件に基づいてアクセスが許可されます。

以前に o1 または o1-preview へのアクセスを申請して受け取ったお客様は、最新モデルの待機リストに自動的に追加されるため、再申請する必要はありません。

アクセスの要求: 制限付きアクセス モデルの申請

利用可能なリージョン

モデル リージョン 制限付きアクセス
o3-mini モデルの可用性 制限付きアクセス モデルの申請
o1 モデルの可用性 制限付きアクセス モデルの申請
o1-preview モデルの可用性 このモデルを使用できるのは、元の制限付きアクセス リリースの一部としてアクセス権を付与されたお客様に限られます。 現在、o1-preview へのアクセスの拡張は行っていません。
o1-mini モデルの可用性 Global Standard のデプロイの場合、アクセス要求は必要ありません。

現在、Standard (リージョン) のデプロイは、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
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 モデルで lowmedium、または 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.

期待する出力によっては、最初の開発者メッセージをさらにカスタマイズして、特定のユース ケースをターゲットにすることが必要となる場合があります。