次の方法で共有


エンドポイントを提供するモデルで AI ゲートウェイを設定します

この記事では、モデル サービス エンドポイントで Mosaic AI Gateway を構成する方法について説明します。

要件

  • モデルの提供がサポートされているリージョンの Databricks ワークスペース。 リージョンの 可用性に対応するモデルを参照してください。
  • エンドポイントを提供するモデル。 ワークスペースで 事前構成済みのトークンごとの支払いエンドポイント のいずれかを使用するか、次の操作を行うことができます。
    • 外部モデルのエンドポイントを作成するには、「外部 モデルサービス エンドポイントを作成する」の手順 1 と 2 を実行します。
    • プロビジョニング済みスループットのエンドポイントを作成するには、「プロビジョニング済みスループット基盤モデル API を参照してください。
    • カスタム モデルのエンドポイントを作成するには、「エンドポイントの 作成」を参照してください。

UI を使用して AI ゲートウェイを構成する

エンドポイント作成ページの [AI Gateway ] セクションでは、AI Gateway の機能を個別に構成できます。 エンドポイントとプロビジョニングされたスループット エンドポイントを提供する外部モデルで使用できる機能については、「 サポートされている機能 」を参照してください。

AI ゲートウェイの機能を構成する

次の表は、サービス UI を使用してエンドポイントの作成時に AI ゲートウェイを構成する方法をまとめたものです。 これをプログラムで行う場合は、 Notebook の例を参照してください。

機能 有効にする方法 詳細
使用状況の追跡 [ 使用状況の追跡を有効にする] を選択して、データ使用状況メトリックの追跡と監視を有効にします。
この機能は、 トークンごとの支払い エンドポイントに対して既定で有効になっています。
  • Unity カタログを有効にする必要があります。
  • アカウント管理者は、システム テーブルを使用する前に 、サービス システム テーブル スキーマを有効にする 必要があります。 system.serving.endpoint_usage。エンドポイントと system.serving.served_entitiesに対する各要求のトークン数をキャプチャし、各基盤モデルのメタデータを格納します。
  • 使用状況追跡テーブルのスキーマを参照してください
  • エンドポイントを管理するユーザーが使用状況の追跡を有効にする必要がある場合でも、 served_entities テーブルまたは endpoint_usage テーブルを表示または照会するアクセス許可を持つのは、アカウント管理者だけです。 システム テーブルへのアクセス権の付与を参照してください
  • トークン数がモデルによって返されない場合、入力と出力のトークン数は (text_length+1)/4 と推定されます。
  • system.serving.served_entities システム テーブルは、現在、トークンごとの支払いエンドポイントではサポートされていません
ペイロードのログ [ 推論テーブルを有効にする] を選択 すると、エンドポイントからの要求と応答が Unity カタログによって管理される Delta テーブルに自動的に記録されます。
AI ガードレール UI で AI Guardrails を構成するを参照してください。
  • ガードレールは、モデルの入力と出力で検出された安全でない有害なコンテンツとモデルがやり取りするのを防ぎます。
  • 出力ガードレールは、埋め込みモデルやストリーミングではサポートされていません。
転送率の制限 ユーザーごとおよびエンドポイントごとにエンドポイントのトラフィックを管理する要求レート制限を適用するには、[レート制限] を選択します。
  • レート制限は、1 分あたりのクエリ (QPM) で定義されます。
  • 既定値は、ユーザーごととエンドポイントごとの両方の 制限なし です。
トラフィックの分割 [ 処理済みエンティティ ] セクションで、特定のモデルにルーティングする トラフィックの割合 を指定します。
エンドポイントでトラフィック分割をプログラムで構成するには、「 複数の外部モデルをエンドポイントに提供する」を参照してください。
  • すべてのトラフィックを特定のモデルにルーティングするには、100%に設定します。
  • フォールバックのみのモデルを指定する場合は、そのモデルをエンドポイントに追加し、トラフィックの割合を 0%に設定します。
  • モデル間でトラフィックを負荷分散し、フォールバックを設定するには、次の動作が必要です。
  • 要求は、割り当てられたトラフィックの割合に基づいてエンティティ間でランダムに分割されます。
  • 要求が最初のエンティティにヒットして失敗した場合は、エンドポイントの作成時または最新のエンドポイントの更新時に、提供されたエンティティが一覧表示された順序で次のエンティティにフォールバックします。
  • トラフィック分割は、フォールバック試行の順序には影響しません。
フォールバック [AI ゲートウェイ] セクションで [フォールバックを有効にする] を選択して、フォールバックとしてエンドポイント上の他のサービス提供モデルに要求を送信します。
  • 特定のエンティティにルーティングされた最初の要求が 429 または 5XX エラーを返した場合、要求はエンドポイントにリストされている次のエンティティにフォールバックします。
  • 要求がフォールバック サービス エンティティにリダイレクトされる順序は、エンドポイントの作成時または最新のエンドポイントの更新時にモデルが一覧表示される順序に基づいています。 トラフィックの割合は、提供されたエンティティに送信されるフォールバック試行の順序には影響しません。
  • フォールバックは、 外部モデルでのみサポートされます。
  • 外部モデルへのフォールバックを有効にするには、エンドポイントで提供される他のモデルにトラフィックの割合を割り当てる必要があります。
  • 0% トラフィックが割り当てられた外部モデルは、フォールバック モデルとして排他的に機能します。
  • 最大 2 つのフォールバックを使用できます。
  • 各エンティティは、要求が成功するまで順番に 1 回試行されます。 リストされているすべてのエンタイトが成功せずに試行された場合、要求は失敗します。
  • 最初の成功または最後に失敗した要求の試行と応答は、使用状況追跡テーブルとペイロード ログ テーブルの両方に記録されます。

次の図は、次の例を示しています。

  • モデル サービング エンドポイントでは 3 つのサービング対象エンティティが提供されます。
  • もともと要求は Served エンティティ 3 にルーティングされます。
  • 要求から 200 応答が返された場合、 要求は Served エンティティ 3 で成功し、要求とその応答はエンドポイントの使用状況追跡テーブルとペイロード ログ テーブルに記録されます。
  • 要求が Served エンティティ 3 で 429 または 5xx エラーを返した場合、要求はエンドポイントの次に提供される エンティティである Served エンティティ 1 にフォールバックします。
    • 要求が Served エンティティ 1 で 429 または 5xx エラーを返した場合、要求はエンドポイントの次に提供される エンティティである Served エンティティ 2 にフォールバックします。
    • 要求が Served エンティティ 2 で 429 または 5xx エラーを返した場合、これはフォールバック エンティティの最大数であるため、要求は失敗します。 失敗した要求と応答エラーは、使用状況の追跡テーブルとペイロード ログ テーブルに記録されます。

フォールバック図の例

UI で AI Guardrails を構成する

Von Bedeutung

この機能は パブリック プレビュー段階です

次の表は、 サポートされているガードレールを構成する方法を示しています。

トピックのモデレーションとキーワード のフィルター処理は非推奨です。 2025 年 5 月 30 日以降、これらの機能はサポートまたは利用できなくなります。 これらの関数がワークフローに必要な場合は、Databricks アカウント チームに連絡して、カスタム ガードレールプライベート プレビューに参加してください。

ガードレール 有効にする方法 詳細
安全性 安全 選択してセーフガードを有効にして、モデルが安全でない有害なコンテンツと対話するのを防ぎます。
個人を特定できる情報 (PII) の検出 エンドポイントの要求と応答でそのような情報が検出された場合は、名前、住所、クレジット カード番号などの PII データを ブロック または マスク します。 それ以外の場合は、PII 検出を行わない場合は [なし] を選択します。
有効なトピック (非推奨) このフィールドにトピックを直接入力ができます。 複数のエントリがある場合には、各トピックの後で Enter キーを必ず押してください。 .csv または .txt ファイルをアップロードできます。 最大 50 個の有効なトピックの指定ができます。 各トピックは、100 文字を超えないようにしてください。
キーワードが無効です (非推奨) このフィールドにトピックを直接入力ができます。 複数のエントリがある場合には、各トピックの後で Enter キーを必ず押してください。 .csv または .txt ファイルをアップロードできます。 最大 50 個の無効なキーワードの指定ができます。 各キーワード (keyword)は 100 文字を超えないようにしてください。

AI Guardrail 機能を構成する

使用状況追跡テーブルスキーマ

次のセクションでは、 system.serving.served_entities および system.serving.endpoint_usage システム テーブルの使用状況追跡テーブル スキーマの概要を示します。

system.serving.served_entities 使用状況追跡テーブル スキーマ

system.serving.served_entities使用状況追跡システム テーブルは、現在、トークンごとの支払いエンドポイントではサポートされていません。

system.serving.served_entities 利用状況追跡システムテーブルのスキーマは以下の通りです:

列名 説明 タイプ
served_entity_id 提供されるエンティティの一意のID。
account_id 差分共有の顧客アカウント ID。
workspace_id サービス エンドポイントの顧客ワークスペース ID。
created_by 作成者のID。
endpoint_name Web サービス エンドポイントの名前。
endpoint_id サービス エンドポイントの一意の ID。
served_entity_name 提供されるエンティティの名前。
entity_type 提供されるエンティティの型。 FEATURE_SPECEXTERNAL_MODELFOUNDATION_MODEL、または CUSTOM_MODEL にすることができます。
entity_name エンティティの基礎となる名前。 ユーザー指定の名前の served_entity_name とは異なります。 たとえば、 entity_name は Unity カタログ モデルの名前です。
entity_version 提供されるエンティティのバージョン。
endpoint_config_version エンドポイント構成のバージョン。 INT
task タスクの種類。 llm/v1/chatllm/v1/completions、または llm/v1/embeddings を指定できます。
external_model_config 外部モデルの構成。 たとえば、{Provider: OpenAI} のように指定します。 構造
foundation_model_config 基盤モデルの構成。 たとえば、{min_provisioned_throughput: 2200, max_provisioned_throughput: 4400} にします。 構造
custom_model_config カスタム モデルの構成。 たとえば、{ min_concurrency: 0, max_concurrency: 4, compute_type: CPU } にします。 構造
feature_spec_config 機能仕様の構成。 たとえば、{ min_concurrency: 0, max_concurrency: 4, compute_type: CPU } のように指定します。 構造
change_time 提供されたエンティティの変更のタイムスタンプ。 timestamp
endpoint_delete_time エンティティ削除のタイムスタンプ。 エンドポイントは、提供されたエンティティのコンテナーです。 エンドポイント削除後、提供されたエンティティも削除されます。 timestamp

system.serving.endpoint_usage 使用状況追跡テーブル スキーマ

system.serving.endpoint_usage 利用状況追跡システムテーブルのスキーマは以下の通りです:

列名 説明 タイプ
account_id お客様のアカウント ID
workspace_id サービス エンドポイントの顧客ワークスペース ID。
client_request_id モデル サービス要求本文で指定できる要求識別子をユーザーが指定しました。
databricks_request_id Azure Databricks によって生成された要求識別子は、要求を処理するすべてのモデルにアタッチされます。
requester サービス エンドポイントの呼び出し要求にアクセス許可が使用されるユーザーまたはサービス プリンシパルの ID。
status_code モデルから返された HTTP 状態コード。 整数
request_time サーバーが要求を受信した時刻 timestamp
input_token_count 入力トークンの数。 長い
output_token_count 出力トークンの数。 長い
input_character_count 入力文字列またはプロンプトの文字数。 長い
output_character_count 応答の出力文字列の文字数。 長い
usage_context エンドポイントを呼び出すエンドユーザーまたは顧客アプリケーションの識別子を含む、ユーザーが提供したマップ。 詳細については、usage_contextでの使用法の定義に関するページを参照してください。 地図
request_streaming 要求がストリーム モードであるかどうか。 ブーリアン
served_entity_id エンドポイントとサービスエンティティに関する情報を参照するために、 system.serving.served_entities ディメンション テーブルと結合するために使用される一意の ID。

usage_context を使用して使用状況を詳細に定義する

使用状況の追跡を有効にして外部モデルにクエリを実行する場合は、usage_context パラメーターに型 Map[String, String] を指定できます。 利用コンテキスト マッピングは、usage_context 列の使用状況追跡テーブルに表示されます。 usage_contextマップ サイズは 10 KiB を超えることはできません。

{
  "messages": [
    {
      "role": "user",
      "content": "What is Databricks?"
    }
  ],
  "max_tokens": 128,
  "usage_context":
    {
      "use_case": "external",
      "project": "project1",
      "priority": "high",
      "end_user_to_charge": "abcde12345",
      "a_b_test_group": "group_a"
    }
}

OpenAI Python クライアントを使用している場合は、usage_context パラメーターに含めることで、extra_bodyを指定できます。

from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

response = client.chat.completions.create(
    model="databricks-claude-3-7-sonnet",
    messages=[{"role": "user", "content": "What is Databricks?"}],
    temperature=0,
    extra_body={"usage_context": {"project": "project1"}},
)
answer = response.choices[0].message.content
print("Answer:", answer)

アカウント管理者は、利用コンテキストに基づいてさまざまな行を集計して分析情報を取得し、この情報をペイロード ログ テーブルの情報と結合できます。 たとえば、エンド ユーザーのコスト属性を追跡するために、end_user_to_chargeusage_context を追加できます。

エンドポイントの使用状況を監視する

エンドポイントの使用状況を監視するには、エンドポイントのシステム テーブルと推論テーブルを結合します。

システム テーブルの結合

この例は、外部モデルとプロビジョニングされたスループット エンドポイントにのみ適用されます。 served_entities システム テーブルは、トークンごとの支払いエンドポイントではサポートされていませんが、推論テーブルと使用状況テーブルを結合して同様の詳細を取得できます。

endpoint_usageテーブルとserved_entitiesシステム テーブルを結合するには、次の SQL を使用します。

SELECT * FROM system.serving.endpoint_usage as eu
JOIN system.serving.served_entities as se
ON eu.served_entity_id = se.served_entity_id
WHERE created_by = "\<user_email\>";

推論テーブルと使用状況テーブルを結合する

次に、 endpoint_usage システム テーブルとトークンごとの支払いエンドポイントの推論テーブルを結合します。 これらのテーブルを結合するには、エンドポイントで推論テーブルと使用状況の追跡を有効にする必要があります。

SELECT * FROM system.serving.endpoint_usage AS endpoint_usage
JOIN
  (SELECT DISTINCT(served_entity_id) AS fmapi_served_entity_id
  FROM <inference table name>) fmapi_id
ON fmapi_id.fmapi_served_entity_id = endpoint_usage.served_entity_id;

エンドポイントでの AI ゲートウェイ機能を更新

AIゲートウェイの機能は、以前に有効になっていたエンドポイントおよび有効になっていなかったエンドポイントを提供するモデルで更新できます。 AI Gateway 構成の更新プログラムの適用には約 20 ~ 40 秒かかりますが、レート制限の更新には最大で 60 秒かかることがあります。

サービス UI を使用して、エンドポイントを提供するモデルの AI ゲートウェイ機能を更新する方法を次に示します。

エンドポイント ページの [ゲートウェイ ] セクションで、有効になっている機能を確認できます。 これらの機能を更新するには、[ AI ゲートウェイの編集] をクリックします。

AI ゲートウェイの機能を更新する

ノートブックの例

次のノートブックは、Databricks Mosaic AI Gateway の機能をプログラムで有効にして使用し、プロバイダーからモデルを管理する方法が示されています。 REST API の詳細については、 PUT /api/2.0/serving-endpoints/{name}/ai-gateway を参照してください。

Databricks Mosaic AI Gateway の機能ノートブックを有効にする

ノートブックを取得する

その他のリソース