Azure AI FoundryでDeepSeek-V4.1-Flashを動かす手順。中国公式APIとの違いも比較

皆さん、こんにちは。okamoです。

以前、過去の記事にて Microsoft Foundry で DeepSeek-V4-Flash-0731 を動かす方法を紹介しました。

2026年9月23日のマイクロソフト公式ブログにて、DeepSeekの最新モデルである DeepSeek-V4.1-Flash が Microsoft Foundry(Azure AI Foundry)に登場したことがアナウンスされました。

本記事では、Azure が「Direct from Azure」として提供する DeepSeek-V4.1-Flash を Azure CLI でデプロイし、curl で疎通確認を行うまでの手順 をコマンドで解説します。 後半では、「中国公式API」と「Azure直ホスト(経由API)」の違いについても、データプライバシーや仕様の違いを含めて比較表で解説します。


1. 事前準備と前提条件

前提条件

  • Azure サブスクリプション(リソース作成権限があること。リソースプロバイダーの登録には Owner 権限が必要です)
  • Azure CLI (az)(az cognitiveservices 系コマンドは core に同梱されているため、Azure CLI 2.60 以降であれば追加拡張は不要)
  • az login で対象サブスクリプションにログイン済みであること

使用するプレースホルダ一覧

手順中の <...> は環境に合わせて置き換えてください。

プレースホルダ意味・指定する値の例
<SUBSCRIPTION_ID_OR_NAME>使用する Azure サブスクリプションの ID または名前
<RESOURCE_GROUP>リソースグループ名(例: rg-deepseek)
<LOCATION>リージョン(例: eastus)。※モデルの提供リージョンは Azure ポータルで確認してください
<ACCOUNT_NAME>Azure AI Services アカウント名。全世界で一意にする必要があります(例: dsv41flash0928)
<DEPLOYMENT_NAME>デプロイ名(任意)。API 呼び出しの model に指定するのはこの値です(例: deepseek-v4-1-flash)
<MODEL_VERSION>モデルバージョン。STEP 3 で確認した実値を指定(例: 2026-09-10)
<API_KEY>Azure AI Services アカウントの API キー

2. デプロイ&疎通確認の全ステップ(CLIコマンド完全版)

STEP 0 — Azure CLI の準備とリソースプロバイダー登録

初めにリソースプロバイダーを登録しておくと、後の手順で発生しやすい MissingSubscriptionRegistration エラーを未然に防げます。

# Azure CLI のバージョン確認(2.60 以降を推奨)
az version

# 未ログインならログイン
az login

# 使うサブスクリプションを選択
az account set --subscription "<SUBSCRIPTION_ID_OR_NAME>"

# リソースプロバイダーを登録(MissingSubscriptionRegistration 対策)
az provider register --namespace Microsoft.CognitiveServices

# 登録状態を確認(Registered になるまで数分かかることがあります)
az provider show --namespace Microsoft.CognitiveServices --query registrationState -o tsv

STEP 1 — リソースグループを作成

az group create \
  --name "<RESOURCE_GROUP>" \
  --location "<LOCATION>"

STEP 2 — Azure AI Services アカウントを作成

--custom-domain を指定することで、エンドポイントが https://<ACCOUNT_NAME>.openai.azure.com/ の形式になります。

az cognitiveservices account create \
  --name "<ACCOUNT_NAME>" \
  --resource-group "<RESOURCE_GROUP>" \
  --kind AIServices \
  --sku S0 \
  --location "<LOCATION>" \
  --custom-domain "<ACCOUNT_NAME>" \
  --assign-identity \
  --allow-project-management true \
  --yes

💡 補足: --assign-identity と --allow-project-management は、Foundry プロジェクトでの Entra ID 認証や管理を行う場合のオプションです。API キーで curl するだけなら省略しても構いません。

STEP 3 — DeepSeek-V4.1-Flash をデプロイ

利用可能なモデル一覧と正確なバージョンを確認してからデプロイします。

# デプロイ可能な DeepSeek 系モデルとバージョンを確認
az cognitiveservices account list-models \
  -n "<ACCOUNT_NAME>" -g "<RESOURCE_GROUP>" \
  --query "[?contains(name,'DeepSeek')].{name:name,format:format,version:version,lifecycle:lifecycleStatus}" -o table

出力例(実測値):

Name                 Version     Format    Lifecycle
-------------------  ----------  --------  ---------
DeepSeek-V4.1-Flash  2026-09-10  DeepSeek  Preview

確認したバージョン文字列を用いて、デプロイを実行します。

az cognitiveservices account deployment create \
  --name "<ACCOUNT_NAME>" \
  --resource-group "<RESOURCE_GROUP>" \
  --deployment-name "<DEPLOYMENT_NAME>" \
  --model-name "DeepSeek-V4.1-Flash" \
  --model-version "<MODEL_VERSION>" \
  --model-format "DeepSeek" \
  --sku-name "GlobalStandard" \
  --sku-capacity 20

⚠️ --sku-capacity に関する重要注意点

  • 容量の目安: 実測では --sku-capacity 1 = 1 RPM / 1,000 TPM です。20 を指定すると 20 RPM / 20,000 TPM になります。
  • 最小設定値の罠: 1 でもデプロイ自体は成功しますが、API を少し叩くだけでクォータ不足になります。実運用では 20 以上を推奨します。
  • サブスクリプション上限: カタログ上の表記(1,000,000など)ではなく、ご自身のサブスクリプションの limit(az cognitiveservices usage list --location "<LOCATION>" -o table で確認可能)の範囲内で指定してください。実測では上限が 20 の場合がありました。

STEP 4 — 接続情報を環境変数にセット

# エンドポイント(OpenAI 互換)と API キーを取得
export AZURE_AI_ENDPOINT="https://<ACCOUNT_NAME>.openai.azure.com/openai/v1/"
export AZURE_AI_API_KEY="$(az cognitiveservices account keys list \
  --name "<ACCOUNT_NAME>" \
  --resource-group "<RESOURCE_GROUP>" \
  --query key1 -o tsv)"

# API 呼び出しの model に入れるのは「デプロイ名」
export DEPLOYMENT_NAME="<DEPLOYMENT_NAME>"

echo "endpoint=$AZURE_AI_ENDPOINT"
test -n "$AZURE_AI_API_KEY" && echo "api_key=set"

STEP 5 — curl で疎通確認

OpenAI 互換の /chat/completions エンドポイントに向けてリクエストを送信します。

curl -sS --http1.1 "$AZURE_AI_ENDPOINT/chat/completions" \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_AI_API_KEY" \
  -X POST \
  -d '{
    "model": "'"$DEPLOYMENT_NAME"'",
    "messages": [
      { "role": "user", "content": "Reply with just OK." }
    ]
  }'

⚠️ 注意: model パラメータには、モデル名ではなく デプロイ名(<DEPLOYMENT_NAME>) を渡してください。 💡 WSL2 などの環境では、HTTP/2 のハングを防ぐために --http1.1 を付けることをおすすめします。

レスポンス例(実測値):

{
  "id": "43cc521c21684ab9889fd9c00d4e61fa",
  "model": "deepseek-v4-1-flash",
  "choices": [
    { "index": 0, "message": { "role": "assistant", "content": "OK" }, "finish_reason": "stop" }
  ],
  "usage": { "prompt_tokens": 9, "completion_tokens": 2, "total_tokens": 11 }
}

STEP 6 — レート制限ヘッダーの確認

レスポンスヘッダーから、指定した --sku-capacity が反映されているか確認できます。

curl -sS --http1.1 -D /tmp/h.txt "$AZURE_AI_ENDPOINT/chat/completions" \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_AI_API_KEY" \
  -X POST \
  -d '{"model": "'"$DEPLOYMENT_NAME"'", "messages": [{"role": "user", "content": "Hi"}]}' > /dev/null

grep -i -E '^HTTP|x-ratelimit' /tmp/h.txt

出力例(capacity 20 の場合):

HTTP/1.1 200 OK
x-ratelimit-key: deepseek-v4-1-flash
x-ratelimit-limit-requests: 20
x-ratelimit-limit-tokens: 20000
x-ratelimit-renewalperiod-requests: 60
x-ratelimit-renewalperiod-tokens: 60

3. トラブルシューティング

エラー / 現象原因と確認・対処法
MissingSubscriptionRegistration (409)Microsoft.CognitiveServices が未登録。STEP 0 の az provider register を実行(Owner権限が必要)
404 Not Foundmodel にモデル名を指定していないか確認(デプロイ名を指定する)。エンドポイント URL の綴りも確認
401 UnauthorizedAPI キーが未設定、または対象アカウントと異なるキーを指定している
429 Too Many Requestsレート制限超過。--sku-capacity の見直しやクォータ増枠申請を実施
InsufficientQuota (デプロイ時)指定した capacity がサブスクリプション上限を超過。az cognitiveservices usage list で limit を確認
レスポンスが返らずハングするWSL 環境等で HTTP/2 の不整合が発生。curl --http1.1 を指定

4. DeepSeek 公式 API と Azure 経由の違い(比較表)

対象は中国公式(api.deepseek.com)と、Azure 直ホストの DeepSeek-V4.1-Flash(version 2026-09-10、GlobalStandard、Preview)です。Azure 側の所見は 2026-09-28 時点の実測に基づきます。

区分観点中国公式Azure 直ホスト
APIChat Completionsありあり(capabilities に chatCompletion)
APIAnthropic 互換https://api.deepseek.com/anthropic使えない。/anthropic/v1/messages は api_not_supported。ブログも触れていない
APIResponses APIあり。使うならこちら使うべきでない。 宣言されているのは Chat Completions。カタログに responses 印は無く、ブログも触れていない。経路自体は HTTP 200 だったが、対応の宣言ではない
APITool / JSON / Visionありカタログ上、画像入力あり。Tool / JSON は Chat Completions の範囲
API思考の制御(Chat Completions)既定は思考オン、既定の強さは high。オンオフは thinking.type、強さは reasoning_effort の low / high / max [6]thinking パラメータは指定できない。送ると 400。オンオフと強さは reasoning_effort だけ。none は思考なし、low は思考あり
APIコンテキスト / 最大出力1M / 384Kカタログはコンテキスト 1M、出力上限 128K
料金入力 cache miss0.30(ピーク) / 0.15(オフピーク)0.30
料金入力 cache hit0.006(ピーク) / 0.003(オフピーク)0.006
料金出力1.20(ピーク) / 0.60(オフピーク)1.20
料金オフピーク半額あり(平日 UTC 01:00–04:00 と 06:00–10:00、中国祝日を除く)なし
容量上限の意味同時接続。deepseek-flash はアカウントあたり 2,500。超過は 429SKU capacity。1 capacity ≒ 1 リクエスト / 分 + 1,000 トークン / 分。カタログ上限は 1,000,000
容量いまの実効値契約次第。増枠申請は追加料金なし、と公式は書くサブスクリプションのクォータ次第(** okamoのAzure環境の実測は 20** = 20 リクエスト / 分 + 20,000 トークン / 分)
データ日本閉じ不可不可。V4.1 に Data Zone / 単一リージョン SKU は無い
データ推論後に残すか残し得る。入力はアカウントがある限り保持し得る [1]。ディスクキャッシュは既定で、未使用なら通常数時間〜数日で削除 [3]使うのは Chat Completions。モデル自体は残さない [4]。乱用監視でフラグされたプロンプトは、人の確認用に保存され得る。Preview は監視の扱いが異なり得る [4]
データ人が中身を見るか「人は見ない」とは書いていない。不正調査、規約違反、法令対応でアクセス・共有し得る [1]自動レビューは保存しない。人が見るのは、フラグされたものか乱用パターンに限る。見るのは認可された Microsoft 社員 [4][5]。Modified abuse monitoring の申請が通ると、その保存と人の確認は止まる
データ学習に使うかモデル訓練・技術改善に使うと書き、オプトアウト権はある。API 入力が自動で訓練対象外とは書いていない [1]基礎モデルの訓練には使わない。DeepSeek 社にも渡さない [4]
データ処理する国DeepSeek のインフラ。国外移転は「必要なら保護措置」とだけ [1]そのモデルがある任意の Azure リージョン。日本にも中国にも閉じない。リソースは East US [4]
データ保存する国中国。準拠法は中国本土、管轄は杭州 [1][2]乱用監視の保存先は、リソースの geography(米国)[4]
データ中国公式へ渡るかそのものが中国公式渡さない [4]

※料金の単位は USD / 100 万トークン。

⚠️ capacity の数字は環境で変わる

  • 上の「容量」行はカタログと契約の話で、実際にデプロイできる値はサブスクリプションのクォータ次第です。
  • okamoのAzure環境では AIServices.GlobalStandard.DeepSeek-V4.1-Flash の limit が 20 だったため、STEP 3 でも --sku-capacity 20 としています。
  • クォータ上限が 10,000 の環境であれば capacity 10,000(= 10,000 リクエスト / 分、10,000,000 トークン / 分)まで取れます。ただしこれは別環境の例で、 okamoのAzure環境の値ではありません。
  • 中国公式の「2,500 同時接続」と Azure の「capacity」は単位が違います。横並びの数字として比較しないでください。

要点まとめ

  • 中国公式: オフピークが半額で、出力 384K と Responses / Anthropic 互換 API が利用可能。代わりにデータは中国に置かれ、推論後に残さない保証や「訓練に使わない」という保証は契約上ありません。
  • Azure 直ホスト: DeepSeek 社にデータを渡さず Azure 請求にまとめられます。料金は公式ピーク時と同等。日本リージョンへの固定(閉じ)はできず、Preview 提供で、乱用監視の人的確認が既定で有効な場合があります(出力上限はカタログ上 128K)。
  • Azure 経由の呼び出し: 原則 Chat Completions を使用します。Responses はカタログもブログも対応を宣言しておらず使うべきではありません。思考制御は reasoning_effort パラメータで行います。

5. 後片付け(リソース削除)

検証完了後は、不要な課金やリソースの専有を防ぐために削除しておきましょう。

# リソースグループごと一括削除する場合
az group delete --name "<RESOURCE_GROUP>" --yes --no-wait

# アカウント単体のみを削除する場合
az cognitiveservices account delete --resource-group "<RESOURCE_GROUP>" --name "<ACCOUNT_NAME>"

# 環境変数をクリア
unset AZURE_AI_ENDPOINT AZURE_AI_API_KEY DEPLOYMENT_NAME

6. 参考リンク

公式アナウンス・製品カタログ

比較表の出典

  1. DeepSeek プライバシーポリシー(最終更新 2026-02-10)。入力の収集、アカウント存続中の保持、訓練・技術改善への利用とオプトアウト、安全・法令対応での共有、中国のサーバーへの保存。
  2. DeepSeek Open Platform Terms of Service。準拠法は中国本土。紛争は杭州の登記地を管轄する裁判所。
  3. Context Caching。ディスクキャッシュは既定。未使用なら通常、数時間から数日で削除。
  4. Data, privacy, and security for Foundry Models sold by Azure(ページ日付 2026-05-18、更新 2026-06-05)。ステートレス、訓練に使わない、モデル提供者に渡さない、Global はモデルがある任意の geography で処理、乱用監視の保存はリソースの geography、Preview は扱いが異なり得る。
  5. Foundry Models sold by Azure abuse monitoring(ページ日付 2026-05-13)。人の確認は認可された Microsoft 社員に限る。Modified abuse monitoring 承認後は、その保存と人の確認をしない。
  6. Thinking Mode。Chat Completions は thinking.type でオンオフ、reasoning_effort は low / high / max。既定は思考オン、effort は high。

Azure CLI・クォータ管理リファレンス



Azure AI FoundryでDeepSeek-V4.1-Flashを動かす手順。中国公式APIとの違いも比較