Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan lehet lekérni a megfelelő hitelesítési adatokat és URL-címet, hogy le tudja kérdezni az útvonaloptimalizált modellkiszolgálás vagy feature kiszolgáló végpontját.
Követelmények
- Útvonaloptimalizálással engedélyezett modellkiszolgáló végpont vagy jellemzőkiszolgáló végpont. Lásd : Útvonaloptimalizálás a végpontok kiszolgálására.
- Az útvonaloptimalizált végpontok lekérdezése csak OAuth-jogkivonatok használatát támogatja. A személyes hozzáférési jogkivonatok nem támogatottak.
Rövid útmutató: végpontok közötti lekérdezési recept
Az alábbi recept egyesíti az útvonaloptimalizált végpont külső ügyfélből egyetlen futtatható folyamatba való lekérdezéséhez szükséges összes lépést. Ezt a szakaszt akkor használja, ha gyorsan ellenőrizni szeretné a működő beállításokat. Az egyes lépésekkel kapcsolatos további részletekért tekintse meg az alábbi szakaszokat.
# 1. Set the variables for your environment.
export DATABRICKS_HOST="https://<your-workspace>.cloud.databricks.com"
export ENDPOINT_NAME="<your-endpoint>"
export WORKSPACE_ID="<workspace-id>"
# 2. Create an account-level service principal and an OAuth secret for it.
SP_ID=$(databricks account service-principals create \
--json '{"displayName":"my-app","active":true}' --output json | jq -r '.id')
SECRET_JSON=$(databricks account service-principal-secrets create "$SP_ID" --output json)
export CLIENT_ID=$(databricks account service-principals get "$SP_ID" --output json | jq -r '.applicationId')
export CLIENT_SECRET=$(echo "$SECRET_JSON" | jq -r '.secret')
# 3. Assign the service principal to the workspace and grant CAN_QUERY on the endpoint.
databricks account workspace-assignment update "$WORKSPACE_ID" "$SP_ID" \
--json '{"permissions":["USER"]}'
ENDPOINT_ID=$(databricks serving-endpoints get "$ENDPOINT_NAME" --output json | jq -r '.id')
databricks permissions update serving-endpoints "$ENDPOINT_ID" \
--json "{\"access_control_list\":[{\"service_principal_name\":\"$CLIENT_ID\",\"permission_level\":\"CAN_QUERY\"}]}"
# 4. Mint an endpoint-scoped OAuth token. `authorization_details` is required for
# route-optimized endpoints -- a plain `scope=all-apis` token is rejected with
# 401 "Missing authorization details" when used against the route-optimized URL.
TOKEN=$(curl -sS -X POST -u "$CLIENT_ID:$CLIENT_SECRET" \
--data-urlencode "grant_type=client_credentials" \
--data-urlencode "scope=all-apis" \
--data-urlencode "authorization_details=[{\"type\":\"workspace_permission\",\"object_type\":\"serving-endpoints\",\"object_path\":\"/serving-endpoints/$ENDPOINT_ID\",\"actions\":[\"query_inference_endpoint\"]}]" \
"$DATABRICKS_HOST/oidc/v1/token" | jq -r '.access_token')
# 5. Invoke the endpoint at its route-optimized URL.
RO_URL=$(databricks serving-endpoints get "$ENDPOINT_NAME" --output json | jq -r '.endpoint_url')
curl -sS -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"inputs":[[0.12,0.34]]}' "https://$RO_URL"
Az útvonaloptimalizált URL-cím beolvasása
Figyelmeztetés
2025. szeptember 22-től az összes újonnan létrehozott útvonaloptimalizált végpontot kizárólag az útvonaloptimalizált URL-címen keresztül kell lekérdezni. Az ezen dátum után létrehozott végpontok nem támogatják a munkaterület URL-címén keresztüli lekérdezést.
Ha az útvonaloptimalizált végpont 2025. szeptember 22. előtt lett létrehozva:
A szabványos munkaterület URL-címe a végpont lekérdezésére is használható. A szabványos munkaterület URL-elérési útja nem biztosítja az útvonaloptimalizálás előnyeit.
https://<databricks-workspace>/serving-endpoints/<endpoint-name>/invocationsAz ezen dátum előtt létrehozott útvonaloptimalizált végpontok továbbra is támogatják a meghívások URL-címeit: az útvonaloptimalizált URL-címet és a szabványos munkaterület URL-elérési útját.
Útvonaloptimalizált végpont létrehozásakor a rendszer a következő útvonaloptimalizált URL-címet hozza létre a végponthoz.
https://<unique-id>.<shard>.serving.azuredatabricks.net/<workspace-id>/serving-endpoints/<endpoint-name>/invocations
Ezt az URL-címet az alábbiakból szerezheti be:
Felhasználói felület kiszolgálása
REST API
Használja az GET /api/2.0/serving-endpoints/{name} API-hívást. Az URL-cím a végpont válaszobjektumában a következőképpen endpoint_urljelenik meg: . Ez a mező csak akkor lesz feltöltve, ha a végpont útvonaloptimalizált.
GET /api/2.0/serving-endpoints/my-endpoint
{
"name": "my-endpoint"
}
Databricks SDK
Használja a Serving Endpoints API get hívást. Az URL-cím a végpont válaszobjektumában a következőképpen endpoint_urljelenik meg: . Ez a mező csak akkor lesz feltöltve, ha a végpont útvonaloptimalizált.
from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()
workspace.serving_endpoints.get("my-endpoint")
OAuth-jogkivonat lekérése és a végpont lekérdezése
Az útvonaloptimalizált végpont lekérdezéséhez OAuth-jogkivonatot kell használnia. A Databricks szolgáltatásnevek használatát javasolja az éles alkalmazásokban az OAuth-jogkivonatok programozott lekéréséhez. Az alábbi szakasz ismerteti az ajánlott útmutatást az OAuth token tesztelési és éles környezetekben való használatához.
OAuth-jogkivonat lekérése a kiszolgálói felhasználói felület használatával
Az alábbi lépések bemutatják, hogyan lehet jogkivonatot lekérni a kiszolgáló felhasználói felületén. Ezek a lépések a végpont fejlesztéséhez és teszteléséhez ajánlottak.
Éles használat esetén, például az útvonaloptimalizált végpont alkalmazáson belüli használata esetén a jogkivonat egy szolgáltatásnév használatával lesz lekérve. A gyakorlati felhasználási esetekhez szükséges OAuth-jogkivonat lekéréséhez javasolt útmutatásért tekintse meg a programozott módon történő OAuth-jogkivonat lekérését.
A munkaterület kiszolgálói felhasználói felületén:
- A Végpontok kiszolgálása lapon válassza ki az útvonaloptimalizált végpontot a végpont részleteinek megtekintéséhez.
- A végpont részletei lapon válassza a Használat gombot.
- Válassza a Jogkivonat lekérése lapot.
- Válassza az OAuth-jogkivonat beolvasása gombot. Ez a jogkivonat 1 órán át érvényes. Új jogkivonat lekérése, ha az aktuális jogkivonat lejár.
Az OAuth-jogkivonat lekérése után kérje le a végpontot a végpont URL-címével és az OAuth-jogkivonattal.
REST API
A következő egy REST API-példa:
URL="<endpoint-url>"
OAUTH_TOKEN="<token>"
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OAUTH_TOKEN" \
--data "@data.json" \
"$URL"
Python
A következő egy Python-példa:
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)
OAuth-token programozott lekérése
Éles forgatókönyvek esetén a Databricks azt javasolja, hogy állítsa be a szolgáltatási főazonosítókat az alkalmazásába, hogy programozottan lekérhesse az OAuth-jogkivonatokat. Ezek a lekért jogkivonatok az útvonaloptimalizált végpontok lekérdezésére szolgálnak.
Kövesse az Szolgáltatásnévazonosító hozzáférésének engedélyezése az Azure Databrickshez OAuth-hitelesítéssel című témakörben ismertetett lépéseket a 2. lépésig a szolgáltatásnévazonosító létrehozásához, az engedélyek hozzárendeléséhez, valamint egy OAuth-titkos kulcs létrehozásához a szolgáltatásnévazonosítóhoz. A szolgáltatásnév létrehozása után legalább lekérdezési engedélyt kell adnia a szolgáltatásnévnek a végponton. Lásd: Engedélyek kezelése egy végpontot kiszolgáló modellen.
A Databricks Python SDK egy API-t biztosít egy útvonaloptimalizált végpont közvetlen lekérdezéséhez.
Megjegyzés:
A Databricks SDK a Go-ban is elérhető, lásd: Databricks SDK for Go.
A következő példához az alábbiakra van szükség egy útvonaloptimalizált végpont lekérdezéséhez a Databricks SDK használatával:
- Kiszolgálóvégpont neve (az SDK a név alapján lekéri a megfelelő végpont URL-címét)
- Szolgáltatásfő kliensazonosítója
- Szolgáltatásnév titkos kódja
- Munkaterület állomásneve
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 = ....)
OAuth-jogkivonat manuális lekérése
Olyan esetekben, amikor a Databricks SDK vagy a kiszolgáló felhasználói felület nem használható az OAuth-jogkivonat lekérésére, manuálisan is lekérhet egy OAuth-jogkivonatot. Az ebben a szakaszban található útmutatás elsősorban azokra a forgatókönyvekre vonatkozik, amelyekben a felhasználók olyan testreszabott ügyfélrel rendelkeznek, amelyet a végpont éles környezetben való lekérdezéséhez szeretnének használni.
Ha manuálisan kér le egy OAuth-jogkivonatot, meg kell adnia authorization_details a kérésben.
- A
<token-endpoint-URL>-t úgy hozhatja létre, hogy ahttps://<databricks-instance>-t a Databricks üzembe helyezési munkaterületének URL-címére cseréli ahttps://<databricks-instance>/oidc/v1/token-ben. Például:https://my-workspace.0.azuredatabricks.net/oidc/v1/token
- Cserélje le
<client-id>a szolgáltatásnév objektumának ügyfélazonosítójával, amely alkalmazásazonosítóként is ismert. - Cserélje le a(z)
<client-secret>a szolgáltatásfelelős által létrehozott OAuth titkos kódjára.
- Cserélje le
<endpoint-id>az útvonaloptimalizált végpont végpontazonosítójára. Ez annak a végpontnak az alfa-numerikus azonosítója, amelyet ahostNamevégpont URL-címében talál. Például, ha a kiszolgáló végpontja ahttps://abcdefg.0.serving.azuredatabricks.net/9999999/serving-endpoints/test, akkor a végpont azonosítója aabcdefg.
- Cserélje le a(z)
<action>elemet a szolgáltatásnévhez adott műveleti engedélyre. A művelet lehetquery_inference_endpointvagymanage_inference_endpoint.
REST API
A következő egy REST API-példa:
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"'"]}]'
Python
A következő egy Python-példa:
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}")
Az OAuth-jogkivonat lekérése után kérje le a végpontot a végpont URL-címével és az OAuth-jogkivonattal.
REST API
A következő egy REST API-példa:
URL="<endpoint-url>"
OAUTH_TOKEN="<token>"
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OAUTH_TOKEN" \
--data "@data.json" \
"$URL"
Python
A következő egy Python-példa:
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)
Hívás ügynökből vagy külső alkalmazásból
Az útvonaloptimalizált végpontokat lekérdező AI-kódolási asszisztensek és külső alkalmazások nem használhatják a fejlesztő személyes hozzáférési jogkivonatát vagy a munkaterület OAuth-jogkivonatait. Szolgáltatásnevet kell használniuk az OAuth M2M-folyamattal, és a(z) authorization_details elemet bele kell foglalniuk a tokenkérelembe. A folyamat a következő:
- Hozzon létre egy service principalt fiókszinten, valamint egy OAuth-titkot hozzá. Lásd: Szolgáltatás főfelhasználó hozzáférésének engedélyezése az Azure Databrickshez OAuth használatával.
- Rendelje hozzá a szolgáltatásnevet a munkaterülethez, és adja meg
CAN_QUERYa végponton. - Az alkalmazásból hozzon létre egy végpontra érvényes jogkivonatot a(z)
POST <workspace-host>/oidc/v1/tokenmeghívásával, a szolgáltatásnév hitelesítő adataival, valamint a(z)authorization_detailshasználatával, amely a végpontazonosítóra hivatkozik. Lásd: OAuth-jogkivonat manuális lekérése. - Hívja meg az útvonalra optimalizált URL-címet a kapott tokennel.
A fenti Gyors üzembe helyezés szakasz egyetlen másolható szkriptet tartalmaz, amely minden lépést lefed.
Hibaelhárítás
| Hiba | A probléma oka | Kijavítás |
|---|---|---|
401 Malformed token az útvonalra optimalizált URL-címről visszatérve |
A token személyes hozzáférési token vagy klaszter-futásidejű token, nem pedig OAuth JWT. Az útvonaloptimalizált végpontok csak OAuth-jogkivonatokat fogadnak el. | OAuth-token lekéréséhez használjon szolgáltatásnevet az OAuth M2M-folyamat használatával. Lásd: OAuth-jogkivonat beolvasása programozott módon. |
401 Missing authorization details for accessing model serving endpoints az útvonalra optimalizált URL-címről visszatérve |
A tokenkérelem nem tartalmazta azt a authorization_details claimet, amely az adott végpontra korlátozza a token hatókörét. Egy egyszerű scope=all-apis token nem elegendő. |
A(z) authorization_details paramétert a végpontazonosítóra és a(z) query_inference_endpoint műveletre hivatkozva adja át a(z) /oidc/v1/token meghívásakor. Lásd: OAuth-jogkivonat manuális lekérése. |
400 This is a route-optimized endpoint. Please use the correct route-optimized URL provided: ... |
A kérelmet az útvonaloptimalizált URL-cím helyett a munkaterület URL-címére https://<workspace>/serving-endpoints/<name>/invocations küldte. |
Használja a visszaadott URL-címet a endpoint_url következő mezőben GET /api/2.0/serving-endpoints/<name>: . Lásd : Az útvonaloptimalizált URL beolvasása. |
403 Permission denied vissza lett adva az útvonal-optimalizált URL-ből annak ellenére, hogy az OAuth-token authorization_details |
A szolgáltatásnév nem rendelkezik CAN_QUERY a végponton, vagy a művelet authorization_details nem felel meg a megadott engedélynek. |
Adja meg CAN_QUERY a végponton a szolgáltatásnévnek, és használja query_inference_endpoint műveletként. Lásd: Engedélyek kezelése egy végpontot kiszolgáló modellen. |
invalid_scope visszaadva innen: /oidc/v1/token |
A tokenkérelem a(z) all-apis értéktől eltérő hatókörértéket adott át. |
Az útvonaloptimalizált végponti jogkivonatok egyetlen támogatott hatóköre az all-apis. A végpont hatókörének szűkítése a(z) authorization_details használatával történik, nem a(z) scope használatával. |