Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как получить соответствующие учетные данные проверки подлинности и URL-адрес, чтобы можно было запросить конечную точку обслуживания модели, оптимизированной для маршрута, или конечной точки обслуживания компонентов .
Требования
- Модель, обслуживающая конечную точку или конечную точку обслуживания компонентов, включающую оптимизацию маршрута. См. статью "Оптимизация маршрутов" для конечных точек обслуживания.
- Запросы к конечным точкам, оптимизированным для маршрутов, поддерживают использование только маркеров OAuth. Личные маркеры доступа не поддерживаются.
Получение URL-адреса, оптимизированного для маршрутизации
Предупреждение
Начиная с 22 сентября 2025 г. все созданные конечные точки, оптимизированные для маршрутов, должны запрашиваться исключительно через URL-адрес, оптимизированный для маршрута. Конечные точки, созданные после этой даты, не поддерживают запросы по URL-адресу рабочей области.
Если конечная точка, оптимизированная для маршрута, создана до 22 сентября 2025 г.:
Url-адрес стандартной рабочей области также можно использовать для запроса конечной точки. Стандартный путь к URL-адресу рабочей области не обеспечивает преимущества оптимизации маршрутов.
https://<databricks-workspace>/serving-endpoints/<endpoint-name>/invocationsКонечные точки, оптимизированные для маршрутов, созданные до этой даты, продолжают поддерживать URL-адреса вызовов: путь URL-адреса, оптимизированный для маршрута, и стандартный путь URL-адреса рабочей области.
При создании оптимизированной для маршрута конечной точки для конечной точки создается следующий URL-адрес, оптимизированный для маршрута.
https://<unique-id>.<shard>.serving.azuredatabricks.net/<workspace-id>/serving-endpoints/<endpoint-name>/invocations
Этот URL-адрес можно получить из следующего:
Обслуживающий пользовательский интерфейс
REST API
GET /api/2.0/serving-endpoints/{name} Используйте вызов API. URL-адрес присутствует в объекте ответа конечной точки как endpoint_url. Это поле заполняется только в том случае, если конечная точка оптимизирована для маршрутизации.
GET /api/2.0/serving-endpoints/my-endpoint
{
"name": "my-endpoint"
}
Databricks SDK
Используйте вызов Serving Endpoints API get. URL-адрес присутствует в объекте ответа конечной точки как endpoint_url. Это поле заполняется только в том случае, если конечная точка оптимизирована для маршрутизации.
from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()
workspace.serving_endpoints.get("my-endpoint")
Получение маркера OAuth и запрос конечной точки
Чтобы запросить конечную точку, оптимизированную для маршрута, необходимо использовать маркер OAuth. Databricks рекомендует использовать субъекты-службы в рабочих приложениях для программного получения маркеров OAuth. В следующих разделах описаны рекомендации по получению токена OAuth для тестовых и производственных сценариев.
Получение маркера OAuth с помощью интерфейса обслуживания
Ниже показано, как получить маркер в пользовательском интерфейсе обслуживания. Эти действия рекомендуется для разработки и тестирования конечной точки.
Для использования в рабочей среде, например с помощью конечной точки, оптимизированной для маршрутизации в приложении, токен извлекается с помощью служебного принципала. Ознакомьтесь с рекомендациями по программному получению токена OAuth для рабочих вариантов использования.
Из пользовательского интерфейса служебного раздела вашей рабочей области:
- На странице "Обслуживание конечных точек" выберите конечную точку, оптимизированную для маршрута, чтобы просмотреть сведения о конечной точке.
- На странице сведений о конечной точке нажмите кнопку "Использовать ".
- Выберите вкладку Получение токена.
- Нажмите кнопку Получить маркер OAuth. Этот маркер действителен в течение 1 часа. Получение нового маркера при истечении срока действия текущего маркера.
После получения маркера OAuth запросите конечную точку с помощью URL-адреса конечной точки и маркера OAuth.
REST API
Ниже приведен пример 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"
Питон
Ниже приведен пример 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)
Извлечение маркера OAuth программным способом
В сценариях эксплуатации Databricks рекомендует настроить учетные записи службы для интеграции в ваше приложение с целью автоматического получения токенов OAuth. Эти токены используются для запроса конечных точек, оптимизированных по маршруту.
Выполните действия, описанные в разделе "Авторизация доступа субъекта-службы к Azure Databricks" с помощью OAuth на шаге 2, чтобы создать субъект-службу, назначить разрешения и создать секрет OAuth для субъекта-службы. После создания субъекта-службы необходимо предоставить субъекту-службе по крайней мере разрешение запроса на конечную точку. См. раздел "Управление разрешениями" в конечной точке обслуживания модели.
Пакет SDK для Python Databricks предоставляет API для прямого запроса к оптимизированной для маршрута конечной точке.
Замечание
Пакет SDK Databricks также доступен в Go, см. в разделе "Пакет SDK Databricks для Go".
В следующем примере требуется выполнить запрос к конечной точке, оптимизированной для маршрутизации, с помощью пакета SDK Databricks:
- Имя конечной точки обслуживания (пакет SDK получает правильный URL-адрес конечной точки на основе этого имени)
- Идентификатор клиента служебного принципала
- Секрет субъекта-службы
- Имя хоста рабочей области
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 вручную
В сценариях, когда пакет SDK Databricks или пользовательский интерфейс обслуживания не может использоваться для получения маркера OAuth, вы можете вручную получить маркер OAuth. Рекомендации в этом разделе в основном относятся к сценариям, в которых у пользователей есть настраиваемый клиент, который они хотят использовать для запроса конечной точки в рабочей среде.
При получении маркера OAuth вручную необходимо указать authorization_details в запросе.
- Создайте
<token-endpoint-URL>, заменивhttps://<databricks-instance>на URL-адрес рабочей области вашего развертывания Databricks вhttps://<databricks-instance>/oidc/v1/token. Например:https://my-workspace.0.azuredatabricks.net/oidc/v1/token
- Замените
<client-id>идентификатором клиента субъекта-службы, который также называется идентификатором приложения. - Замените
<client-secret>, введя созданный секрет OAuth для учетной записи службы.
- Замените
<endpoint-id>идентификатором конечной точки, оптимизированной для маршрута. Это альфа-числовый идентификатор конечной точки, которую можно найти вhostNameURL-адресе конечной точки. Например, если конечная точка обслуживания являетсяhttps://abcdefg.0.serving.azuredatabricks.net/9999999/serving-endpoints/test, идентификатор конечной точки имеет значениеabcdefg.
- Замените
<action>разрешение действия, предоставленное субъекту-службе. Действие может бытьquery_inference_endpointилиmanage_inference_endpoint.
REST API
Ниже приведен пример 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"'"]}]'
Питон
Ниже приведен пример 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}")
После получения маркера OAuth запросите конечную точку с помощью URL-адреса конечной точки и маркера OAuth.
REST API
Ниже приведен пример 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"
Питон
Ниже приведен пример 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)