Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara mengambil kredensial autentikasi dan URL yang sesuai sehingga Anda dapat mengkueri penyajian model atau penyajian fitur pada titik akhir yang dioptimalkan untuk rute Anda.
Persyaratan
- Model yang melayani titik akhir atau fitur yang melayani titik akhir yang mengaktifkan pengoptimalan rute. Lihat Pengoptimalan rute pada titik akhir penyajian.
- Mengkueri titik akhir yang dioptimalkan rute hanya mendukung penggunaan token OAuth. Token akses pribadi tidak didukung.
Ambil URL yang telah dioptimalkan untuk rute
Peringatan
Mulai 22 September 2025, semua titik akhir yang dioptimalkan rute yang baru dibuat harus dikueri secara eksklusif melalui URL yang dioptimalkan rute. Titik akhir yang dibuat setelah tanggal ini tidak mendukung kueri melalui URL ruang kerja.
Jika titik akhir yang dioptimalkan rute Anda dibuat sebelum 22 September 2025:
URL ruang kerja standar juga dapat digunakan untuk mengkueri titik akhir. Jalur URL ruang kerja standar tidak memberikan manfaat pengoptimalan rute.
https://<databricks-workspace>/serving-endpoints/<endpoint-name>/invocationsTitik akhir yang dioptimalkan untuk rute yang dibuat sebelum tanggal ini akan terus mendukung kedua jenis URL invokasi: jalur URL yang dioptimalkan untuk rute dan jalur URL ruang kerja standar.
Saat Anda membuat titik akhir teroptimasi rute, URL teroptimasi rute berikut dibuat untuk titik akhir.
https://<unique-id>.<shard>.serving.azuredatabricks.net/<workspace-id>/serving-endpoints/<endpoint-name>/invocations
Anda bisa mendapatkan URL ini dari yang berikut ini:
Menyajikan Antarmuka Pengguna
REST API
Gunakan GET /api/2.0/serving-endpoints/{name} panggilan API. URL terdapat dalam objek respons dari titik akhir sebagai endpoint_url. Bidang ini hanya diisi jika titik akhir dioptimalkan untuk rute.
GET /api/2.0/serving-endpoints/my-endpoint
{
"name": "my-endpoint"
}
Databricks SDK
Gunakan perintah Serving Endpoints API get URL terdapat dalam objek respons dari titik akhir sebagai endpoint_url. Bidang ini hanya diisi jika titik akhir dioptimalkan untuk rute.
from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()
workspace.serving_endpoints.get("my-endpoint")
Mengambil token OAuth dan mengkueri titik akhir
Untuk meminta endpoint yang dioptimalkan untuk rute, Anda harus menggunakan token OAuth. Databricks merekomendasikan penggunaan perwakilan layanan dalam aplikasi produksi Anda untuk mengambil token OAuth secara terprogram. Bagian berikut menjelaskan panduan yang direkomendasikan tentang cara mengambil token OAuth untuk skenario pengujian dan produksi.
Mengambil token OAuth menggunakan Antarmuka Pengguna Penyedia Layanan
Langkah-langkah berikut menunjukkan cara mengambil token di Antarmuka Pengguna penyajian. Langkah-langkah ini direkomendasikan untuk pengembangan dan pengujian titik akhir Anda.
Untuk penggunaan dalam produksi, seperti menggunakan titik akhir yang dioptimalkan rute Anda dalam sebuah aplikasi, token Anda diambil menggunakan prinsip layanan. Lihat Mengambil token OAuth secara terprogram untuk panduan yang direkomendasikan untuk mengambil token OAuth Anda untuk kasus penggunaan produksi.
Dari UI Penyajian ruang kerja Anda:
- Pada halaman Endpoint penyajian, pilih endpoint yang dioptimalkan untuk rute Anda untuk melihat detail endpoint.
- Pada halaman detail titik akhir, pilih tombol Gunakan .
- Pilih tab Ambil Token.
- Pilih tombol Ambil Token OAuth. Token ini berlaku selama 1 jam. Ambil token baru jika token Anda saat ini kedaluwarsa.
Setelah Anda mengambil token OAuth, kueri titik akhir Anda menggunakan URL titik akhir dan token OAuth Anda.
REST API
Berikut ini adalah contoh REST API:
URL="<endpoint-url>"
OAUTH_TOKEN="<token>"
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OAUTH_TOKEN" \
--data "@data.json" \
"$URL"
Phyton
Berikut ini adalah contoh Python:
import requests
import json
url = "<url>"
oauth_token = "<token>"
data = {
"dataframe_split": {
"columns": ["feature_1", "feature_2"],
"data": [
[0.12, 0.34],
[0.56, 0.78],
[0.90, 0.11]
]
}
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {oauth_token}"
}
response = requests.post(url, headers=headers, json=data)
# Print the response
print("Status Code:", response.status_code)
print("Response Body:", response.text)
Mengambil token OAuth secara terprogram
Untuk skenario produksi, Databricks merekomendasikan menyetel perwakilan layanan yang dapat disematkan dalam aplikasi Anda untuk mengambil token OAuth secara otomatis. Token yang diambil ini digunakan untuk melakukan kueri pada titik akhir yang dioptimalkan untuk rute.
Ikuti langkah-langkah dalam Mengotorisasi akses perwakilan layanan ke Azure Databricks dengan OAuth hingga langkah 2 untuk membuat perwakilan layanan Anda, menetapkan izin, dan membuat rahasia OAuth untuk perwakilan layanan Anda. Setelah prinsipal layanan Anda dibuat, Anda harus memberi prinsipal layanan setidaknya izin Kueri pada titik akhir. Lihat Mengelola izin pada model yang melayani titik akhir.
Databricks Python SDK menyediakan API untuk langsung mengkueri titik akhir yang dioptimalkan rute.
Nota
Databricks SDK juga tersedia di Go, lihat Databricks SDK for Go.
Contoh berikutnya memerlukan hal berikut untuk mengkueri titik akhir yang dioptimalkan rute menggunakan Databricks SDK:
- Nama titik akhir penyajian (SDK mengambil URL titik akhir yang benar berdasarkan nama ini)
- ID Klien Principal Layanan
- Rahasia perwakilan layanan
- Nama host ruang kerja
from databricks.sdk import WorkspaceClient
import databricks.sdk.core as client
endpoint_name = "<Serving-Endpoint-Name>" ## Insert the endpoint name here
# Initialize Databricks SDK
c = client.Config(
host="<Workspace-Host>", ## For example, my-workspace.cloud.databricks.com
client_id="<Client-Id>", ## Service principal ID
client_secret="<Secret>" ## Service principal secret
)
w = WorkspaceClient(
config = c
)
response = w.serving_endpoints_data_plane.query(endpoint_name, dataframe_records = ....)
Mengambil token OAuth secara manual
Untuk skenario di mana Databricks SDK atau Antarmuka Pengguna Penyajian tidak dapat digunakan untuk mengambil token OAuth Anda, Anda dapat mengambil token OAuth secara manual. Panduan di bagian ini terutama berlaku untuk skenario di mana pengguna memiliki klien yang disesuaikan yang ingin mereka gunakan untuk mengkueri titik akhir dalam produksi.
Saat Anda mengambil token OAuth secara manual, Anda harus menentukan authorization_details dalam permintaan.
- Buat
<token-endpoint-URL>dengan menggantihttps://<databricks-instance>dengan URL ruang kerja penyebaran Databricks Anda dihttps://<databricks-instance>/oidc/v1/token. Misalnya:https://my-workspace.0.azuredatabricks.net/oidc/v1/token
- Ganti
<client-id>dengan ID klien perwakilan layanan, yang juga dikenal sebagai ID aplikasi. - Ganti
<client-secret>dengan rahasia OAuth prinsipal layanan yang Anda buat.
- Ganti
<endpoint-id>dengan ID titik akhir yang telah dioptimalkan rutenya. Ini adalah ID alfa-numerik dari titik akhir yang dapat Anda temukan dihostNameURL titik akhir. Misalnya, jika titik akhir penyajian adalahhttps://abcdefg.0.serving.azuredatabricks.net/9999999/serving-endpoints/test, ID titik akhir adalahabcdefg.
- Ganti
<action>dengan izin tindakan yang diberikan kepada perwakilan layanan. Tindakannya bisaquery_inference_endpointataumanage_inference_endpoint.
REST API
Berikut ini adalah contoh REST API:
export CLIENT_ID=<client-id>
export CLIENT_SECRET=<client-secret>
export ENDPOINT_ID=<endpoint-id>
export ACTION=<action> # for example, 'query_inference_endpoint'
curl --request POST \
--url <token-endpoint-URL> \
--user "$CLIENT_ID:$CLIENT_SECRET" \
--data 'grant_type=client_credentials&scope=all-apis'
--data-urlencode 'authorization_details=[{"type":"workspace_permission","object_type":"serving-endpoints","object_path":"'"/serving-endpoints/$ENDPOINT_ID"'","actions": ["'"$ACTION"'"]}]'
Phyton
Berikut ini adalah contoh Python:
import os
import requests
# Set your environment variables or replace them directly here
CLIENT_ID = os.getenv("CLIENT_ID")
CLIENT_SECRET = os.getenv("CLIENT_SECRET")
ENDPOINT_ID = os.getenv("ENDPOINT_ID")
ACTION = "query_inference_endpoint" # Can also be `manage_inference_endpoint`
# Token endpoint URL
TOKEN_URL = "<token-endpoint-URL>"
# Build the payload, note the creation of authorization_details
payload = { 'grant_type': 'client_credentials', 'scope': 'all-apis', 'authorization_details': f'''[{{"type":"workspace_permission","object_type":"serving-endpoints","object_path":"/serving-endpoints/{ENDPOINT_ID}","actions":["{ACTION}"]}}]''' }
# Make the POST request with basic auth
response = requests.post( TOKEN_URL, auth=(CLIENT_ID, CLIENT_SECRET), data=payload )
# Check the response
if response.ok:
token_response = response.json()
access_token = token_response.get("access_token")
if access_token:
print(f"Access Token: {access_token}")
else:
print("access_token not found in response.")
else: print(f"Failed to fetch token: {response.status_code} {response.text}")
Setelah Anda mengambil token OAuth, kueri titik akhir Anda menggunakan URL titik akhir dan token OAuth Anda.
REST API
Berikut ini adalah contoh REST API:
URL="<endpoint-url>"
OAUTH_TOKEN="<token>"
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OAUTH_TOKEN" \
--data "@data.json" \
"$URL"
Phyton
Berikut ini adalah contoh Python:
import requests
import json
url = "<url>"
oauth_token = "<token>"
data = {
"dataframe_split": {
"columns": ["feature_1", "feature_2"],
"data": [
[0.12, 0.34],
[0.56, 0.78],
[0.90, 0.11]
]
}
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {oauth_token}"
}
response = requests.post(url, headers=headers, json=data)
# Print the response
print("Status Code:", response.status_code)
print("Response Body:", response.text)