モデルプロバイダーサービスのクエリ
ベータ版
この機能はベータ版です。アカウント管理者は、アカウントコンソールの プレビュー ページからこの機能へのアクセスを管理できます。Databricksのプレビューを管理するを参照してください。
このページでは、Unity AI Gatewayを介してモデルプロバイダーサービスをクエリする方法について説明します。Unity AI Gatewayは保存された認証情報を供給し、外部プロバイダーにリクエストをルーティングするため、呼び出し元はプロバイダーシークレットを処理しません。
要件
- お客様のアカウントでUnity AI Gatewayのプレビュー版が有効になりました。Databricksのプレビューを管理するを参照してください。
- 以下のアクセス許可が必要です。モデルプロバイダーサービスへのアクセスを発見し、管理するを参照してください。
EXECUTEモデルプロバイダーサービスでUSE CATALOGカタログ上でUSE SCHEMAスキーマ上で
モデルプロバイダーサービスを特定する。
リクエストには、Databricks-Model-Provider-Serviceヘッダーをサービスの3部構成の名前に設定したモデルプロバイダーサービスを選択します。
Databricks-Model-Provider-Service: main.default.openai_prod
プロバイダーの資格情報ではなく、Databricksトークンで認証してください。ベースURLはワークスペースのURLの後に/ai-gatewayが続きます。
サポートされているAPIsをクエリする
マネージドパスにより、各プロバイダーのAPIが安定したUnity AIゲートウェイパスで利用可能になります。Unity AIゲートウェイは、リクエストとプロバイダー間で翻訳を行い、ガードレールやレート制限などのガバナンスを適用し、使用状況を記録します。これは、モデルプロバイダーサービスにクエリを実行するための推奨される方法です。
以下の例では、マネージドOpenAIパスを使用して、OpenAIモデルプロバイダーサービスを介してチャット完了を送信します。リクエストはOpenAI Chat Completions APIを使用するため、OpenAIクライアントをUnity AI GatewayベースURLにポイントできます。
- Python
- REST
from openai import OpenAI
client = OpenAI(
api_key="<databricks-token>",
base_url="https://<workspace-url>/ai-gateway/openai/v1",
default_headers={"Databricks-Model-Provider-Service": "main.default.openai_prod"},
)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Say hello in exactly 3 words."}],
)
print(response.choices[0].message.content)
curl https://<workspace-url>/ai-gateway/openai/v1/chat/completions \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Databricks-Model-Provider-Service: main.default.openai_prod" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Say hello in exactly 3 words."}]
}'
呼び出す管理パスは、プロバイダーのAPIによって異なります:
Provider API | マネージドパス |
|---|---|
OpenAI(Chat Completions) |
|
OpenAI(レスポンス) |
|
OpenAI(エンべディング) |
|
Anthropic(Messages) |
|
Gemini(コンテンツ生成) |
|
リクエスト本文 (またはGeminiパスセグメント) 内のモデルは、モデルプロバイダーサービスが許可するモデルである必要があります。allow_all_targetsとtargetsについては、モデルプロバイダーサービスを作成および管理するをご覧ください。
他のAPIsをクエリ(パススルー)
マネージドパスがプロバイダーのエンドポイントをカバーしていない場合、たとえば、OpenAIのファイルまたはバッチエンドポイントのように、リクエストを変更せずにプロバイダーに渡すことができます。Unity AI Gatewayは、/ai-gatewayプレフィックスを削除し、保存された認証情報をアタッチして、残りのパスをプロバイダーに転送します。
アンマネージドパススルーはデフォルトでオフになっています。サービス構成でforward_unmanaged_pathsをtrueに設定して、モデルプロバイダーサービスで有効にします:
curl https://<workspace-url>/api/2.1/unity-catalog/model-provider-services/main.default.openai_prod \
-X PATCH \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-G \
--data-urlencode "update_mask=config.forward_unmanaged_paths" \
--data '{ "config": { "forward_unmanaged_paths": true } }'
パススルーを有効にした後、プロバイダーのネイティブパスを/ai-gatewayで呼び出します:
curl https://<workspace-url>/ai-gateway/v1/files \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Databricks-Model-Provider-Service: main.default.openai_prod"
ヘッダーとクエリパラメーターの転送
デフォルトでは、Unity AI Gatewayはクライアントのリクエストヘッダーまたはクエリパラメーターをアップストリームプロバイダーに渡しません。2つのサービス構成フラグがこれを変更し、それらはマネージドパスとアンマネージドパスの両方に適用されます。
forward_headerstrueの場合、Unity AI Gatewayはクライアントのリクエストヘッダーをプロバイダーに転送します。Unity AI Gatewayがお客様に代わって設定しないヘッダーがプロバイダーによって要求される場合に、これを有効にします(例:OpenAI-Organization)。forward_query_parameterstrueの場合、Unity AIゲートウェイはクライアントのクエリパラメーターをプロバイダーに転送します。
それらを他の構成フィールドと同様にモデルプロバイダーサービスで設定します:
curl https://<workspace-url>/api/2.1/unity-catalog/model-provider-services/main.default.openai_prod \
-X PATCH \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-G \
--data-urlencode "update_mask=config.forward_headers,config.forward_query_parameters" \
--data '{ "config": { "forward_headers": true, "forward_query_parameters": true } }'
使用状況の追跡のためにリクエストにタグを付ける
カスタムのキーと値のタグを Databricks-Ai-Gateway-Request-Tags HTTPヘッダーを使用して個々のリクエストにアタッチできます。Unity AI Gateway は、リクエストタグを使用状況追跡システムテーブルと推論テーブルの両方のrequest_tagsカラムに記録します。その後、コストを追跡し、使用状況をアトリビュートし、アナリティクスをプロジェクト、チーム、環境、または別のディメンションでフィルタリングできます。
ヘッダー値は、文字列のキーを文字列の値にマッピングするJSONオブジェクトである必要があります。例えば:
{ "project": "chatbot", "team": "ml-platform", "environment": "production" }
Databricks-Model-Provider-Serviceヘッダーと共にタグヘッダーを送信します。extra_headersパラメーター(Python)を使用するか、ヘッダーを直接渡します(REST API)。
- Python
- REST
from openai import OpenAI
import json
client = OpenAI(
api_key="<databricks-token>",
base_url="https://<workspace-url>/ai-gateway/openai/v1",
default_headers={"Databricks-Model-Provider-Service": "main.default.openai_prod"},
)
request_tags = {"project": "chatbot", "team": "ml-platform"}
response = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": "What is Databricks?"}],
extra_headers={"Databricks-Ai-Gateway-Request-Tags": json.dumps(request_tags)},
)
curl https://<workspace-url>/ai-gateway/openai/v1/chat/completions \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Databricks-Model-Provider-Service: main.default.openai_prod" \
-H "Content-Type: application/json" \
-H 'Databricks-Ai-Gateway-Request-Tags: {"project": "chatbot", "team": "ml-platform"}' \
-d '{
"model": "gpt-5.5",
"messages": [{"role": "user", "content": "What is Databricks?"}]
}'