この記事では、モデル サービス エンドポイントで Mosaic AI Gateway を構成する方法について説明します。
要件
- モデルの提供がサポートされているリージョンの Databricks ワークスペース。 リージョンの 可用性に対応するモデルを参照してください。
- エンドポイントを提供するモデル。 ワークスペースで 事前構成済みのトークンごとの支払いエンドポイント のいずれかを使用するか、次の操作を行うことができます。
- 外部モデルのエンドポイントを作成するには、「外部 モデルサービス エンドポイントを作成する」の手順 1 と 2 を実行します。
- プロビジョニング済みスループットのエンドポイントを作成するには、「プロビジョニング済みスループット基盤モデル API を参照してください。
- カスタム モデルのエンドポイントを作成するには、「エンドポイントの 作成」を参照してください。
UI を使用して AI ゲートウェイを構成する
エンドポイント作成ページの [AI Gateway ] セクションでは、AI Gateway の機能を個別に構成できます。 エンドポイントとプロビジョニングされたスループット エンドポイントを提供する外部モデルで使用できる機能については、「 サポートされている機能 」を参照してください。
次の表は、サービス UI を使用してエンドポイントの作成時に AI ゲートウェイを構成する方法をまとめたものです。 これをプログラムで行う場合は、 Notebook の例を参照してください。
機能 | 有効にする方法 | 詳細 |
---|---|---|
使用状況の追跡 | [ 使用状況の追跡を有効にする] を選択して、データ使用状況メトリックの追跡と監視を有効にします。 この機能は、 トークンごとの支払い エンドポイントに対して既定で有効になっています。 |
|
ペイロードのログ | [ 推論テーブルを有効にする] を選択 すると、エンドポイントからの要求と応答が Unity カタログによって管理される Delta テーブルに自動的に記録されます。 |
|
AI ガードレール | UI で AI Guardrails を構成するを参照してください。 |
|
転送率の制限 | ユーザーごとおよびエンドポイントごとにエンドポイントのトラフィックを管理する要求レート制限を適用するには、[レート制限] を選択します。 |
|
トラフィックの分割 | [ 処理済みエンティティ ] セクションで、特定のモデルにルーティングする トラフィックの割合 を指定します。 エンドポイントでトラフィック分割をプログラムで構成するには、「 複数の外部モデルをエンドポイントに提供する」を参照してください。 |
|
フォールバック | [AI ゲートウェイ] セクションで [フォールバックを有効にする] を選択して、フォールバックとしてエンドポイント上の他のサービス提供モデルに要求を送信します。 |
|
次の図は、次の例を示しています。
- モデル サービング エンドポイントでは 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 文字を超えないようにしてください。 |
使用状況追跡テーブルスキーマ
次のセクションでは、 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_SPEC 、EXTERNAL_MODEL 、FOUNDATION_MODEL 、または CUSTOM_MODEL にすることができます。 |
糸 |
entity_name |
エンティティの基礎となる名前。 ユーザー指定の名前の served_entity_name とは異なります。 たとえば、 entity_name は Unity カタログ モデルの名前です。 |
糸 |
entity_version |
提供されるエンティティのバージョン。 | 糸 |
endpoint_config_version |
エンドポイント構成のバージョン。 | INT |
task |
タスクの種類。
llm/v1/chat 、llm/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_charge
に usage_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 ゲートウェイの編集] をクリックします。
ノートブックの例
次のノートブックは、Databricks Mosaic AI Gateway の機能をプログラムで有効にして使用し、プロバイダーからモデルを管理する方法が示されています。 REST API の詳細については、 PUT /api/2.0/serving-endpoints/{name}/ai-gateway を参照してください。