次の方法で共有


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 を使う他のモデルと同じパラメーター セットはサポートされていません。 現在サポートされているのは、限定されたサブセットのみです。 temperaturetop_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 モデルで lowmedium、または 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))