【Azure OpenAI②】リソース作成からモデルデプロイ・API/SDK呼び出しまで(最初のリクエスト)

Azure

Azure OpenAI が何者か分かったら、次は実際に動かす番です。ここでの手順はシンプルで、大きく「リソースを作る → モデルをデプロイする → 呼び出す」の3ステップ。この記事を読み終えると、curl や Python から GPT に最初のリクエストを投げるところまでが一本の線でつながります。

リソースを作ったのに、なぜかモデルが呼べない…。「デプロイ名」って何? そもそもどこにキーとエンドポイントがあるの?

この記事は Azure OpenAI シリーズの第2回として、作成からデプロイ、最初のリクエストまでを次の流れで整理します。

  • Azure OpenAI リソースを作成できる
  • モデルをデプロイ(デプロイ名・容量)できる
  • プレイグラウンドで試せる
  • API(REST)と SDK でチャット補完を呼び出せる

Azure OpenAI リソースを作成する

最初のステップはリソースの作成です。ポータルからでも、Azure CLI からでも作れます。前回触れたとおり、ここでリージョンの選択が地味に重要です。「使いたいモデルがそのリージョンにあるか」を先に確認してから作りましょう。

CLI ならこの1コマンドで作成できます。

# Azure OpenAI リソースを作成(CLI)
az cognitiveservices account create \
  --name my-openai \
  --resource-group my-rg \
  --kind OpenAI \
  --sku S0 \
  --location japaneast \
  --yes

再現性を重視するなら、オーナーの得意な Terraform でコード化しておくのがおすすめです。

# Azure OpenAI リソースを作成(Terraform)
resource "azurerm_cognitive_account" "openai" {
  name                = "my-openai"
  resource_group_name = azurerm_resource_group.this.name
  location            = "japaneast"
  kind                = "OpenAI"
  sku_name            = "S0"
}

作成が完了すると、状態が Succeeded になります。この時点で「器」はできましたが、まだモデルは1つも使えません。ここが本家 OpenAI と違うところで、次の「デプロイ」が必要です。

【ここが説明できればOK①】
「ポータルまたは az cognitiveservices account create でリソースを作成し状態が Succeeded になる。ただしこの時点ではまだモデルは使えない」——これを言えればOKです。

モデルをデプロイする|デプロイ名と容量(TPM)

リソースを作ったら、その中に使いたいモデルをデプロイします。これが「本家 OpenAI にはない一手間」であり、Azure OpenAI で最初につまずくポイントでもあります。

デプロイとは、リソースの中に「このモデルを、この名前で、この容量で使う」という設定を作る作業です。アプリはモデル名ではなく、このデプロイ名を指定して呼び出します。

ここで一番大事なのが「モデル名 ≠ デプロイ名」という点です。たとえば gpt-4o というモデルを chat-prod という名前でデプロイしたら、アプリが指定するのは chat-prod の方です。

リソース(my-openai)
│
├─ デプロイ名: chat-prod   ← 実体は gpt-4o(容量 30 TPM)
├─ デプロイ名: embed-prod  ← 実体は text-embedding-3-large
│
→ アプリは「chat-prod」を指定して呼ぶ
   裏側のモデルを差し替えても、アプリのコードは変えなくていい

デプロイ時には容量(TPM)も指定します。これが「1分あたりに処理できるトークン量」の上限になります。この一枚のクッション(デプロイ名)があるおかげで、裏のモデルをバージョンアップしても、アプリ側のコードを触らずに済むのが利点です。

【ここが説明できればOK②】
「モデルはデプロイ名と TPM 容量を指定してデプロイする。アプリはモデル名ではなくデプロイ名を指定するので、裏のモデルを差し替えてもコードを変えずに済む」——これを言えればOKです。

プレイグラウンドで試す|コードを書く前の動作確認

デプロイができたら、いきなりコードを書く前にプレイグラウンドで試すのが近道です。プレイグラウンドは、ブラウザ上でデプロイ済みモデルにプロンプトを送って応答を確認できる画面です(現在は Azure AI Foundry のポータル内にあります)。

ここでシステムメッセージ(役割設定)や温度などのパラメータを調整しながら、「どういうプロンプトなら欲しい答えが返るか」を目で見て確かめられます。まずプレイグラウンドで手応えを掴んでから、コードに落とす——この順番が、遠回りに見えて一番速い進め方です。

【ここが説明できればOK③】
「プレイグラウンドでデプロイ済みモデルにプロンプトを送り、システムメッセージやパラメータを調整して応答を確認できる。コードを書く前の動作確認に使う」——これを言えればOKです。

API(REST)と SDK で呼び出す

いよいよアプリからの呼び出しです。呼び出しにはエンドポイント URL・API キー・デプロイ名・api-version の4点が必要です(キーとエンドポイントはリソースの画面から取得できます)。

まずはREST(curl)で叩いてみます。仕組みを理解するのに最適です。

# chat/completions を curl で呼ぶ
curl "https://my-openai.openai.azure.com/openai/deployments/chat-prod/chat/completions?api-version=2024-10-21" \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_KEY" \
  -d '{
    "messages": [
      {"role": "system", "content": "あなたは丁寧なアシスタントです。"},
      {"role": "user",   "content": "自己紹介して"}
    ]
  }'

URL の中にデプロイ名(chat-prod)が入っている点に注目してください。ここがモデル名ではなくデプロイ名です。実際のアプリでは、これをSDKで書くのが一般的です。

# OpenAI SDK(Python)でチャット補完を呼ぶ
from openai import AzureOpenAI

client = AzureOpenAI(
    azure_endpoint="https://my-openai.openai.azure.com/",
    api_key="<your-key>",
    api_version="2024-10-21",
)

resp = client.chat.completions.create(
    model="chat-prod",                # ← デプロイ名
    messages=[
        {"role": "system", "content": "あなたは丁寧なアシスタントです。"},
        {"role": "user",   "content": "自己紹介して"},
    ],
)
print(resp.choices[0].message.content)

ここでは分かりやすさ優先でキー認証にしたけど、本番は「キーレス(マネージドID + Entra)」が推奨。その話は第4回のセキュリティで扱うよ!

【ここが説明できればOK④】
「エンドポイント・キー・デプロイ名・api-version を指定して、REST(curl)や SDK で chat/completions を呼び出せる。URL/model にはモデル名ではなくデプロイ名を渡す」——これを言えればOKです。

まとめ

  • リソース作成(kind=OpenAI)。作成後もまだモデルは使えない
  • モデルをデプロイ(デプロイ名 ≠ モデル名・TPM 容量指定)
  • プレイグラウンドでコードを書く前に動作確認
  • REST / SDK で呼び出し。URL/model にはデプロイ名を渡す

呼び出せるようになったら、次は「AI とうまく付き合うための基本用語」です。第3回では、トークン・コンテキストウィンドウ・課金・デプロイ種別・温度などのパラメータを整理します。ここを押さえると、コストも品質もコントロールできるようになります。

あわせて読みたい

タイトルとURLをコピーしました