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 SDK | OpenAI SDKへの移行後 |
|---|---|---|
| クライアント例 | ChatCompletionsClient | OpenAI |
| エンドポイント | https://<resource>.services.ai.azure.com/models | https://<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/.default | https://ai.azure.com/.default |
| Responses API | Azure 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 SDK | Microsoft Entra IDを使う場合 |
|---|---|---|
| Python | pip install -U openai | pip install -U azure-identity |
| C#/.NET | dotnet add package OpenAI | dotnet add package Azure.Identity |
| JavaScript/TypeScript | npm install openai | npm install @azure/identity |
| Java | OpenAI Java SDK | Azure Identityライブラリ |
| Go | github.com/openai/openai-go/v3 | Azure 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段階に分ける方法が有効です。
- 同じモデル、同じデプロイ、同じプロンプトのまま、OpenAI SDKのChat Completionsへ切り替える
- 安定稼働を確認した後、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やサービスプリンシパルに必要なロールがあるか |
| ネットワーク | 新しいホスト名がプロキシや許可リストで遮断されないか |
| DNS | Private Linkや独自DNSを使う環境で名前解決できるか |
| デプロイ | modelに設定するデプロイ名が正しいか |
| ストリーミング | チャンク形式と終了条件を正しく処理できるか |
| 例外処理 | 401、403、404、429、5xxを処理できるか |
| 監視 | リクエスト数、トークン数、遅延、エラー率を比較できるか |
| CI/CD | Key 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を削除するのが、最も安全な進め方です。

コメント