Megosztás a következőn keresztül:


Útvonaloptimalizált kiszolgálóvégpontok lekérdezése

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.

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>/invocations

  • Az 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

útvonaloptimalizált végpont URL-címe

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:

  1. A Végpontok kiszolgálása lapon válassza ki az útvonaloptimalizált végpontot a végpont részleteinek megtekintéséhez.
  2. A végpont részletei lapon válassza a Használat gombot.
  3. Válassza a Jogkivonat lekérése lapot.
  4. 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-jogkivonat programozott beolvasása

É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 Azure Databricks szolgáltatásnévhez való hozzáférésének engedélyezése az OAuthtal a 2. lépésben a szolgáltatásnév létrehozásához, az engedélyek hozzárendeléséhez és egy OAuth-titkos kód létrehozásához a szolgáltatásnévhez. 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 a https://<databricks-instance>-t a Databricks üzembe helyezési munkaterületének URL-címére cseréli a https://<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 a hostName végpont URL-címében talál. Például, ha a kiszolgáló végpontja a https://abcdefg.0.serving.azuredatabricks.net/9999999/serving-endpoints/test, akkor a végpont azonosítója a abcdefg.
  • Cserélje le <action> a szolgáltatásnévnek adott műveleti engedélyre. A művelet lehet vagy query_inference_endpointmanage_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)