Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Den här artikeln beskriver hur du hämtar lämpliga autentiseringsuppgifter och webbadress så att du kan fråga din ruttoptimerade modellbetjänings eller funktionsbetjänings slutpunkt.
Kravspecifikation
- En modell som betjänar slutpunkt eller funktionsserverslutpunkt som har routningsoptimering aktiverat. Se Ruttoptimering på serverändpunkter.
- Det går bara att göra förfrågningar mot rout-optimerade slutpunkter med OAuth-tokens. Personliga åtkomsttoken stöds inte.
Hämta den ruttoptimerade URL:en
Varning
Från och med den 22 september 2025 måste alla nyskapade routningsoptimerade slutpunkter endast frågas via den routningsoptimerade URL:en. Slutpunkter som skapats efter det här datumet stöder inte frågor via arbetsytans URL.
Om din routningsoptimerade slutpunkt skapades före den 22 september 2025:
URL för standardarbetsyta kan också användas för att göra förfrågningar till slutpunkten. URL-sökvägen till standardarbetsytan ger inte fördelarna med ruttoptimering.
https://<databricks-workspace>/serving-endpoints/<endpoint-name>/invocationsRoutningsoptimerade slutpunkter som skapats före det här datumet fortsätter att stödja url:er för både anrop: den routningsoptimerade URL-sökvägen och url-sökvägen för standardarbetsytan.
När du skapar en vägoptimerad slutpunkt skapas följande routningsoptimerade URL för slutpunkten.
https://<unique-id>.<shard>.serving.azuredatabricks.net/<workspace-id>/serving-endpoints/<endpoint-name>/invocations
Du kan hämta den här URL:en från följande:
Serveringsgränssnitt
REST-API
Använd API-anropet GET /api/2.0/serving-endpoints/{name} . URL:en finns i svarsobjektet för slutpunkten som endpoint_url. Det här fältet fylls bara i om slutpunkten är routningsoptimerad.
GET /api/2.0/serving-endpoints/my-endpoint
{
"name": "my-endpoint"
}
Databricks SDK
Använd samtalet Serving Endpoints API get . URL:en finns i svarsobjektet för slutpunkten som endpoint_url. Det här fältet fylls bara i om slutpunkten är routningsoptimerad.
from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()
workspace.serving_endpoints.get("my-endpoint")
Hämta en OAuth-token och anropa slutpunkten
Om du vill köra frågor mot din routningsoptimerade slutpunkt måste du använda en OAuth-token. Databricks rekommenderar att du använder tjänstens huvudnamn i dina produktionsprogram för att hämta OAuth-token programmatiskt. I följande avsnitt beskrivs rekommenderad vägledning om hur du hämtar en OAuth-token för test- och produktionsscenarier.
Hämta en OAuth-token med hjälp av användargränssnittet för servering
Följande steg visar hur du hämtar en token i användargränssnittet för servering. De här stegen rekommenderas för utveckling och testning av slutpunkten.
För användning i produktion, som att använda din ruttoptimerade slutpunkt i en applikation, hämtas din token med hjälp av ett tjänsthuvud. Se Hämta en OAuth-token programmatiskt för rekommenderad vägledning för att hämta din OAuth-token för produktionsanvändningsfall.
Från arbetsytans serveringsgränssnitt :
- På sidan Serveringsslutpunkter väljer du din routningsoptimerade slutpunkt för att se slutpunktsinformation.
- På sidan slutpunktsinformation väljer du knappen Använd .
- Välj fliken Hämta token.
- Välj knappen 'Hämta OAuth-token' . Den här token är giltig i 1 timme. Hämta en ny token om din aktuella token upphör att gälla.
När du har hämtat OAuth-token skickar du en förfrågan till slutpunkten med hjälp av slutpunkts-URL och OAuth-token.
REST-API
Följande är ett REST API-exempel:
URL="<endpoint-url>"
OAUTH_TOKEN="<token>"
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OAUTH_TOKEN" \
--data "@data.json" \
"$URL"
python
Följande är ett Python-exempel:
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ämta en OAuth-token programmatiskt
För produktionssyften rekommenderar Databricks att du konfigurerar tjänstekonton för att integrera med ditt program och hämta OAuth-token på ett automatiserat sätt. Dessa hämtade token används för att skicka frågor till ruttoptimerade slutpunkter.
Följ stegen i Auktorisera tjänstens huvudnamnsåtkomst till Azure Databricks med OAuth via steg 2 för att skapa tjänstens huvudnamn, tilldela behörigheter och skapa en OAuth-hemlighet för tjänstens huvudnamn. När tjänstehuvudkontot har skapats måste du ge tjänstehuvudkontot minst begärandebehörighet på slutpunkten. Se Hantera behörigheter för en modell som betjänar slutpunkten.
Databricks Python SDK tillhandahåller ett API för att direkt fråga en routningsoptimerad slutpunkt.
Anmärkning
Databricks SDK är också tillgängligt i Go, se Databricks SDK för Go.
Nästa exempel kräver följande för att köra frågor mot en routningsoptimerad slutpunkt med hjälp av Databricks SDK:
- Serverdelsnamn (SDK hämtar rätt slutpunkts-URL baserat på det här namnet)
- Klient-ID för tjänstens huvudnamn
- Tjänstens huvudnamnshemlighet
- Värdnamn för arbetsyta
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 = ....)
Hämta OAuth-tokenen manuellt
För scenarier där Databricks SDK eller serveringsgränssnittet inte kan användas för att hämta din OAuth-token kan du manuellt hämta en OAuth-token. Vägledningen i det här avsnittet gäller främst scenarier där användare har en anpassad klient som de vill använda för att köra frågor mot slutpunkten i produktionen.
När du hämtar en OAuth-token manuellt måste du ange authorization_details i begäran.
- Skapa
<token-endpoint-URL>genom att ersättahttps://<databricks-instance>med arbetsytans URL för din Databricks-distribution ihttps://<databricks-instance>/oidc/v1/token. Till exempel:https://my-workspace.0.azuredatabricks.net/oidc/v1/token
- Ersätt
<client-id>med tjänstens huvudnamns klient-ID, som även kallas program-ID. - Ersätt
<client-secret>med tjänstens huvudnamns OAuth-hemlighet som du skapade.
- Ersätt
<endpoint-id>med slutpunkts-ID för den routningsoptimerade slutpunkten. Det här är det alfanumeriska ID:t för slutpunkten som du hittar ihostNameslutpunkts-URL:en. Om serverdelsslutpunkten till exempel ärhttps://abcdefg.0.serving.azuredatabricks.net/9999999/serving-endpoints/test, är slutpunkts-ID:tabcdefg.
- Ersätt
<action>med åtgärdsbehörigheten som ges till tjänstens huvudnamn. Åtgärden kan varaquery_inference_endpointellermanage_inference_endpoint.
REST-API
Följande är ett REST API-exempel:
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
Följande är ett Python-exempel:
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}")
När du har hämtat OAuth-token skickar du en förfrågan till slutpunkten med hjälp av slutpunkts-URL och OAuth-token.
REST-API
Följande är ett REST API-exempel:
URL="<endpoint-url>"
OAUTH_TOKEN="<token>"
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OAUTH_TOKEN" \
--data "@data.json" \
"$URL"
python
Följande är ett Python-exempel:
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)