統合モデル API の作成と管理

適用対象: Developer | Basic | Basic v2 | Standard | Standard v2 | Premium | Premium v2

Azure API Managementに統合モデル API を作成して、単一のクライアント向けエンドポイントを介して複数の LLM バックエンドを公開できます。 クライアント アプリケーションでは、OpenAI Chat Completions API という使い慣れた API 形式が使用されますが、API Management では、OpenAI Chat Completions API または Anthropic Messages API を使用してバックエンド モデルに要求が自動的に変換されます。

Note

統合モデル API はプレビュー段階であり、現在お客様にロールアウト中です。 クラシック レベルでは、この機能への早期アクセスは 、AI Gateway の早期リリース チャネルを通じて利用できます。

単一の API レイヤーの背後でモデル アクセスを一元化することで、次のことができます。

  • バックエンド モデルで使用される形式とは別に、クライアントの単一の API 形式で標準化します。
  • 可観測性、セキュリティ、ガバナンスをモデル プロバイダー間のポリシーと統合します。
  • モデル プロバイダー間でモデル フェールオーバーを構成します。
  • エイリアスを使用して、クライアント側のモデル名をバックエンド モデル名から切り離します。

API Management での AI API の管理の詳細については、Azure API Management の AI ゲートウェイ機能に関するページを参照してください。

サポートされているバックエンド

統合モデル API では、次のバックエンド API 形式がサポートされています。

  • OpenAI Chat Completions API
  • Anthropic Messages API

Prerequisites

統合モデル API の作成 - Azure ポータル

API Management で統合モデル API を作成するには、次の手順に従います。

API を作成すると、API Management によって自動的に次の構成が行われます。

  • 構成されているすべてのモデルを一覧表示する、モデル検出用の /models エンドポイント。
  • OpenAI チャットの完了形式で要求を受け入れる /llm/v1/chat/completions などの単一のルーティング エンドポイント。
  • 追加する各バックエンド モデルの変換ロジックを書式設定します。
  • 要求を適切なプロバイダー エンドポイントに送信するバックエンド リソース。

統合モデル API を作成するには:

  1. Azure ポータルで、API Management インスタンスに移動します。

  2. サイドバー メニューで、API の下にある モデル>+ 追加>統合モデル API を選択します。

    Azure portal の unified model API タイルのスクリーンショット。

  3. [統合モデル API の構成] タブで、次の手順を実行します。

    1. API の 表示名 を入力します。 API Management では、表示名に基づいて API が自動的に生成されますが、必要に応じて編集できます。
    2. API パスに、クライアントが API の呼び出しに使用するパスを入力します。 既定値は /llm/v1 であり、その結果、 /llm/v1/chat/completionsでチャット完了エンドポイントが作成されます。
    3. 必要に応じて、API に関連付ける 1 つ以上の 製品 を選択します。
    4. 次へを選択します。
  4. [ モデルの構成 ] タブで 、[ + 追加 ] を選択して [モデルの追加] ウィンドウを開き、モデルのデプロイごとに次の設定を構成します。

    1. バックエンド設定 の下:

      • [モデル] に、バックエンド モデル名 (gpt-4oclaude-sonnet-4.6など) を入力します。
      • API 形式で、バックエンド モデルが想定する形式 (OpenAI Chat Completions APIAnthropic Messages API
      • URL に、バックエンド エンドポイント URL (Foundry のモデル デプロイなど) を入力するか、他のプロバイダーの場合はプロバイダーの API エンドポイント URL を入力します。
    2. [ 承認資格情報] で、バックエンドに対する API Management の認証方法を選択します。

      • ヘッダー: ヘッダー名 ( api-keyAuthorizationなど) と、対応する ヘッダー値 (API キーまたはシークレット) を入力します。
      • 管理 ID: Azureでのモデルデプロイの場合は、インスタンスのシステム割り当てマネージド ID またはユーザー割り当てマネージド ID を使用してバックエンドに対する認証を行うことができます。

      マネージド ID の設定の説明については、 認証マネージド ID ポリシーのリファレンスを参照してください。

    ポータルでモデル設定を追加するための [モデルの追加] ペインのスクリーンショット。

  5. [ トークン消費の管理 ] タブで、必要に応じて、トークンの使用状況を監視および管理するように次のポリシーを構成します。

  6. [AI コンテンツの安全性の設定] タブで、必要に応じて、安全でないコンテンツを含むプロンプトをブロックするようにAzure AI Content Safety サービスを構成します。

  7. [ 確認と作成] を選択し、[ 作成] を選択します。

モデルエイリアスを管理する

モデルエイリアスは、モデルを呼び出すときに使用する安定したプロバイダーに依存しない名前をクライアントに提供します。 gptclaude-sonnetなどのエイリアスを割り当てることで、クライアント側のモデル名を実際のバックエンド デプロイから切り離します。 モデルをアップグレードするとき、または A/B テストを実行する場合は、クライアント コードを変更せずにエイリアス ターゲットを更新できます。

モデルエイリアスを更新または追加する

統合モデル API の作成後にモデルエイリアスを更新するには:

  1. Azure ポータルで、API Management インスタンスに移動し、API を選択します。
  2. 統合モデル API を選択します。
  3. [ モデル ] タブを選択して、モデルエイリアスを更新または追加します。
    • クライアント側のエイリアスを更新するには、更新するエイリアスを選択し、 バックエンドの構成 を更新してバックエンド モデルを指定します。 新しいバックエンド の承認資格情報 を追加します。
    • 新しいモデルを追加するには、[ + 追加] を選択し、前のセクションで説明したようにバックエンド、承認、およびクライアント設定を構成します。
  4. 保存を選びます。

モデルのエイリアスを検出する

開発者は、統合モデル API の /models エンドポイントを呼び出すことによって、使用可能なモデルとそのエイリアスを検出できます。 API Management は、クライアント側のエイリアスを持つモデルの一覧を返します。

クライアント アプリケーションから API を呼び出す

クライアント アプリケーションは、OpenAI と互換性のある任意の SDK を使用して統合モデル API を呼び出すことができます。 API Management エンドポイントで SDK のベース URL をポイントし、API Management サブスクリプション キーまたは認証にサポートされている別の認証方法を使用します。

次の例では、Python OpenAI SDK を使用し、認証用のヘッダーに API Management サブスクリプション キーを渡します。 要求本文では、API Management で構成されたクライアント向けのモデル エイリアス ( gptclaude-sonnetなど) を指定します。

from openai import OpenAI

client = OpenAI(
    base_url="https://<apim-instance>.azure-api.net/llm/v1",
    api_key="<api-management-subscription-key>",
)

# Specify the client-facing model alias
response = client.chat.completions.create(
    model="gpt",  # or "claude-sonnet", "gemini", or any other configured alias
    messages=[{"role": "user", "content": "What can you do?"}],
)
print(response.choices[0].message.content)

別のバックエンド モデルに切り替えるには、 model 値のみを変更します。 その他のコード変更は必要ありません。