Azure AI Inference SDKからOpenAI SDKへ移行する方法|Microsoft Foundryの変更点と期限

2026年6月11日に更新されたMicrosoft Learnでは、Microsoft Foundryで利用するクライアントを、Azure AI Inference SDKからOpenAI SDKとOpenAI v1 APIへ移行する方法が示されました。

結論として、Azure AI Inference beta SDKを利用しているシステムは、2026年8月26日の退役までに移行を完了させる必要があります。主な作業は、依存パッケージ、エンドポイント、認証スコープ、モデル指定、API呼び出し部分の更新です。(Microsoft Learn)

OpenAI SDKを使うからといって、必ずOpenAIのパブリックAPIへ接続するわけではありません。公式例のようにAzureのbase_urlとAzureの認証情報を設定すれば、接続先と課金対象はAzure上のリソースです。

目次

Azure の新機能・変更点:Azure AI Inference SDKからOpenAI SDKへの移行

今回の変更では、Microsoft Foundry上のAzure OpenAIモデルと、DeepSeekやGrokなどの対応モデルを、OpenAI SDKの共通パターンで呼び出せるようになります。

主な変更点は次のとおりです。

確認項目Azure AI Inference SDKOpenAI SDKへの移行後
クライアント例ChatCompletionsClientOpenAI
エンドポイントhttps://<resource>.services.ai.azure.com/modelshttps://<resource>.openai.azure.com/openai/v1/
APIバージョンapi-versionの指定が必要v1 APIでは通常不要
modelパラメーター単一モデルのエンドポイントでは省略できる場合がある常に指定する
modelに入れる値利用形態によって異なるMicrosoft Foundry上のデプロイ名
API呼び出し例client.complete()client.chat.completions.create()
Microsoft Entra IDのスコープhttps://cognitiveservices.azure.com/.defaulthttps://ai.azure.com/.default
Responses APIAzure AI Inference SDKでは利用不可OpenAI SDKで利用可能

応答本文は引き続きchoices[0].message.contentに近い形で取得できますが、ストリーミング処理、例外クラス、初期化コードは書き換えが必要です。(Microsoft Learn)

誰に影響するのか

直接影響を受けるのは、アプリケーション内で次のようなパッケージやコードを使用している開発者・管理者です。

  • Pythonのazure.ai.inference
  • .NETのAzure.AI.Inference
  • Javaのcom.azure.ai.inference
  • JavaScriptの@azure-rest/ai-inferenceや@azure/ai-inference
  • ChatCompletionsClient、EmbeddingsClient、ModelClient
  • URLに.services.ai.azure.com/modelsを含む設定
  • Microsoft Entra IDで旧スコープを指定している処理

LangChainやLlamaIndexなどのフレームワークを使っている場合も、内部コネクターがAzure AI Inference SDKや旧エンドポイントに依存していないか確認が必要です。

AzureポータルやMicrosoft Foundryポータルを閲覧するだけの利用者には、通常、直接のコード変更はありません。ただし、利用している社内システムやWebサービスのバックエンドが対象SDKを使っている場合は、移行遅延によるサービス停止の影響を受ける可能性があります。

OpenAI v1 APIへ移行するメリット

OpenAI v1 APIでは、日付付きのapi-versionを定期的に差し替える運用が不要になります。また、OpenAI SDKを使用して、Azure OpenAIモデルと一部の他社モデルを共通の呼び出し形式で扱えます。

ただし、SDKのバージョンとAPIのv1は別の概念です。たとえばSDKのメジャーバージョンが2や3であっても、接続先が/openai/v1/であればOpenAI v1 APIを利用しています。

なお、v1 APIですべてのAzure AI機能が一度に提供されるとは限りません。プレビュー機能では専用ヘッダーや異なるパスが必要になる場合があります。チャット以外の独自APIやプロバイダー固有機能を使っているシステムは、機能単位で互換性を確認してください。(Microsoft Learn)

Azure AI Inference SDKからOpenAI SDKへ移行する手順

現在の利用箇所を洗い出す

最初に、ソースコード、環境変数、CI/CD設定、Key Vault、運用手順書を横断して、次の文字列を検索します。

azure.ai.inference
Azure.AI.Inference
com.azure.ai.inference
@azure-rest/ai-inference
@azure/ai-inference
ChatCompletionsClient
EmbeddingsClient
ModelClient
.services.ai.azure.com/models
cognitiveservices.azure.com/.default

SDKを直接参照していなくても、共通ライブラリや社内パッケージ内で利用している場合があります。アプリケーション本体だけでなく、バッチ処理、検証ツール、運用スクリプトも対象にしてください。

OpenAI SDKを追加する

主要言語では、次のパッケージへ移行します。

言語OpenAI SDKMicrosoft Entra IDを使う場合
Pythonpip install -U openaipip install -U azure-identity
C#/.NETdotnet add package OpenAIdotnet add package Azure.Identity
JavaScript/TypeScriptnpm install openainpm install @azure/identity
JavaOpenAI Java SDKAzure Identityライブラリ
Gogithub.com/openai/openai-go/v3Azure SDKのazidentity

本番環境では、単に最新版を指定するのではなく、動作確認したSDKバージョンをロックファイルなどで固定します。

クライアントとAPI呼び出しを更新する

PythonでAPIキー認証を使用する場合、代表的な変更は次のとおりです。

移行前

import os

from azure.ai.inference import ChatCompletionsClient
from azure.ai.inference.models import SystemMessage, UserMessage
from azure.core.credentials import AzureKeyCredential

client = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(
        os.environ["AZURE_INFERENCE_CREDENTIAL"]
    ),
)

response = client.complete(
    model="my-deployment",
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="Azureの変更点を要約してください。"),
    ],
)

print(response.choices[0].message.content)

移行後

import os

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["AZURE_OPENAI_API_KEY"],
    base_url="https://<resource>.openai.azure.com/openai/v1/",
)

response = client.chat.completions.create(
    model="my-deployment",
    messages=[
        {
            "role": "system",
            "content": "You are a helpful assistant.",
        },
        {
            "role": "user",
            "content": "Azureの変更点を要約してください。",
        },
    ],
)

print(response.choices[0].message.content)

modelには、カタログ上のモデル名ではなく、Microsoft Foundryで作成したデプロイ名を指定します。デプロイ名は大文字と小文字も含めて完全一致させてください。(Microsoft Learn)

Microsoft Entra IDの認証スコープを変更する

Microsoft Entra IDを使う場合は、トークンプロバイダーのスコープを変更します。

from azure.identity import (
    DefaultAzureCredential,
    get_bearer_token_provider,
)
from openai import OpenAI

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(),
    "https://ai.azure.com/.default",
)

client = OpenAI(
    base_url="https://<resource>.openai.azure.com/openai/v1/",
    api_key=token_provider,
)

旧スコープのhttps://cognitiveservices.azure.com/.defaultが残っていると、認証エラーの原因になります。また、実行ユーザーやマネージドIDに、対象リソースのCognitive Services OpenAI Userなど必要なロールが割り当てられているか確認します。(Microsoft Learn)

移行と新機能の導入を分ける

安全に移行するには、次の2段階に分ける方法が有効です。

  1. 同じモデル、同じデプロイ、同じプロンプトのまま、OpenAI SDKのChat Completionsへ切り替える
  2. 安定稼働を確認した後、Responses APIやツール呼び出しなどの新機能を導入する

SDK移行とモデル変更、API変更を同時に行うと、不具合の原因がクライアント、モデル、プロンプトのどこにあるのか判断しにくくなります。

Responses APIを使う場合の注意点

OpenAI SDKへ移行すると、Azure AI Inference SDKでは提供されていなかったResponses APIを利用できます。Responses APIは、メッセージ、ツール呼び出し、推論情報などを構造化されたoutput配列として返します。(Microsoft Learn)

ただし、Responses APIの対応モデルや対応リージョンは個別に確認が必要です。既存のChat Completionsが動いていても、同じモデルとリージョンでResponses APIの全機能を利用できるとは限りません。(Microsoft Learn)

また、Azure OpenAI以外の一部Foundry Modelsでは、推論の要約が返されていてもreasoning_tokensが0になる既知の問題があります。この値を請求額やクォータ計算の根拠にしないでください。(Microsoft Learn)

管理者が確認すべき設定

分類確認内容
依存関係古いAzure AI Inference SDKが残っていないか
エンドポイント/modelsを含む旧URLが残っていないか
認証APIキーまたはMicrosoft Entra IDで接続できるか
RBACマネージドIDやサービスプリンシパルに必要なロールがあるか
ネットワーク新しいホスト名がプロキシや許可リストで遮断されないか
DNSPrivate Linkや独自DNSを使う環境で名前解決できるか
デプロイmodelに設定するデプロイ名が正しいか
ストリーミングチャンク形式と終了条件を正しく処理できるか
例外処理401、403、404、429、5xxを処理できるか
監視リクエスト数、トークン数、遅延、エラー率を比較できるか
CI/CDKey Vault参照、環境変数、シークレット名を更新したか
ロールバック問題発生時に旧実装へ戻せる構成があるか

特に注意したいのが、base_urlの設定漏れです。環境変数による暗黙設定を利用する場合も、OPENAI_BASE_URLがAzureのURLになっていることを起動時に検証すると、接続先の設定ミスを防げます。

移行後に発生しやすいエラー

症状主な原因確認するポイント
401/403エラーAPIキー、RBAC、認証スコープの誤りキーの対象リソース、ロール、https://ai.azure.com/.default
404エラーエンドポイントまたはデプロイ名の誤り/openai/v1/、リソース名、デプロイの稼働状態
Model not foundモデル名を指定しているMicrosoft Foundry上のデプロイ名を指定する
ストリームが途中で止まる新旧SDKのチャンク処理の違い空のchoicesやエラーイベントを考慮する
想定外のパースエラー応答オブジェクト全体を固定構造で解析している必要なフィールドだけを取得する
料金やトークン数が増えたAPI、モデル、再試行処理も同時に変更した同一条件の比較テストを実施する

v1 APIでは、新しい応答オブジェクトが追加される可能性があります。レスポンス全体を厳密な固定スキーマとして扱うより、アプリケーションで必要なフィールドだけを読み取る設計が安全です。(Microsoft Learn)

料金は変わるのか

公式の移行ガイドには、OpenAI SDKへの切り替え自体に伴う新しい料金は記載されていません。料金確認の中心は、利用するモデル、デプロイ方式、入力・出力トークン、追加機能です。

同じモデルとデプロイを使い続ける場合でも、移行前後で次の項目を比較してください。

  • 入力・出力トークン数
  • 再試行回数
  • リクエスト数
  • 応答時間
  • 429や5xxの発生率
  • 新しく使用するツールの料金

Microsoft Foundryのモデル料金は、モデル、デプロイ方式、課金メーターによって異なります。実績はAzure Cost Managementで確認できます。(Microsoft Learn)

Responses APIでCode Interpreterなどを新たに利用する場合は、通常のトークン料金とは別の料金が発生することがあります。SDK移行と同時に新機能を有効化せず、費用を分けて検証するのが安全です。(Microsoft Learn)

移行期限は2026年8月26日

Microsoft Learnでは、Azure AI Inference beta SDKは非推奨となり、2026年8月26日に退役すると案内されています。検証や社内承認、本番リリースの期間を考慮し、期限直前ではなく早めに移行してください。(Microsoft Learn)

この期限はSDKの退役日です。利用中モデルの廃止日とは別なので、モデルのバージョンと退役予定も個別に確認する必要があります。(Microsoft Learn)

まず実施すべきこと

最初に、リポジトリ全体からAzure AI Inference SDKの参照、旧エンドポイント、旧認証スコープを検索してください。

次に、同じモデルとデプロイを使ったままOpenAI SDKへ置き換え、開発環境で認証、通常応答、ストリーミング、エラー処理、トークン数を比較します。その後、少量の本番トラフィックから段階的に切り替えます。

2026年8月26日までに本番移行を完了し、安定稼働を確認してから旧SDKを削除するのが、最も安全な進め方です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次