Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como buscar as credenciais de autenticação e a URL apropriadas para que você possa consultar seu modelo de serviço otimizado por rota ou o endpoint de serviço de recursos.
Requisitos
- Um endpoint de serviço de modelo ou endpoint de serviço de funcionalidade que tem a otimização de rota habilitada. Otimização de rota em pontos de extremidade do serviço.
- A consulta de endpoints otimizados por rota suporta apenas o uso de tokens OAuth. Não há suporte para tokens de acesso pessoal.
Buscar a URL com otimização de rota
Aviso
A partir de 22 de setembro de 2025, todos os endpoints otimizados por rota recém-criados devem ser consultados exclusivamente por meio da URL otimizada por rota. Os pontos de extremidade criados após essa data não dão suporte à consulta por meio da URL do espaço de trabalho.
Se o ponto de extremidade com otimização de rota tiver sido criado antes de 22 de setembro de 2025:
A URL padrão do workspace também pode ser utilizada para consultar o endpoint. O caminho da URL do espaço de trabalho padrão não oferece os benefícios da otimização de rota.
https://<databricks-workspace>/serving-endpoints/<endpoint-name>/invocationsOs pontos de extremidade com otimização de rota criados antes dessa data continuam a dar suporte a ambos os URLs de invocação: o caminho de URL otimizado para rota e o caminho de URL padrão do espaço de trabalho.
Quando você cria um ponto de extremidade com otimização de rota, a URL com otimização de rota a seguir é criada para o ponto de extremidade.
https://<unique-id>.<shard>.serving.azuredatabricks.net/<workspace-id>/serving-endpoints/<endpoint-name>/invocations
Você pode obter essa URL a partir do seguinte:
Interface do usuário de serviço
API REST
Use a chamada à GET /api/2.0/serving-endpoints/{name} API. A URL está presente no objeto de resposta do endpoint como endpoint_url. Esse campo só será preenchido se o ponto de extremidade for otimizado para rota.
GET /api/2.0/serving-endpoints/my-endpoint
{
"name": "my-endpoint"
}
SDK do Databricks
Use a Serving Endpoints API get chamada. A URL está presente no objeto de resposta do endpoint como endpoint_url. Esse campo só será preenchido se o ponto de extremidade for otimizado para rota.
from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()
workspace.serving_endpoints.get("my-endpoint")
Buscar um token OAuth e consultar o endpoint
Para consultar o ponto de extremidade com otimização de rota, você deve usar um token OAuth. Databricks recomenda usar principais de serviço em seus aplicativos de produção para buscar tokens OAuth programaticamente. As seções a seguir descrevem as diretrizes recomendadas sobre como buscar um token OAuth para cenários de teste e produção.
Buscar um token OAuth usando a IU de Serviço
As etapas a seguir mostram como buscar um token na interface do usuário de serviço. Estas etapas são recomendadas para o desenvolvimento e teste do ponto de extremidade.
Para uso em produção, como no uso do endpoint otimizado para rota em um aplicativo, o token é buscado usando um principal de serviço. Consulte Buscar um token OAuth programaticamente para obter diretrizes recomendadas para buscar seu token OAuth para casos de uso de produção.
Na IU de Serviço do espaço de trabalho:
- Na página Pontos de Extremidade de Servimento, selecione o ponto de extremidade otimizado por rota para ver os detalhes.
- Na página de detalhes do ponto de extremidade, selecione o botão Usar.
- Selecione a guia Fetch Token.
- Selecione o botão Buscar Token OAuth. Esse token é válido por 1 dias. Busque um novo token se o token atual expirar.
Depois de buscar o token OAuth, consulte seu ponto de extremidade usando a URL do ponto de extremidade e o token OAuth.
API REST
Veja a seguir um exemplo de API REST:
URL="<endpoint-url>"
OAUTH_TOKEN="<token>"
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OAUTH_TOKEN" \
--data "@data.json" \
"$URL"
Python
Veja a seguir um exemplo do 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)
Buscar um token OAuth programaticamente
Para cenários de produção, o Databricks recomenda configurar entidades de serviço para inserir no seu aplicativo e buscar tokens OAuth programaticamente. Os tokens buscados são usados para consultar endpoints otimizados para rotas.
Siga as etapas em Autorizar o acesso da entidade de serviço ao Azure Databricks com o OAuth até a etapa 2 para criar sua entidade de serviço, atribuir permissões e criar um segredo OAuth para sua entidade de serviço. Depois que a entidade de serviço for criada, você deverá conceder à entidade de serviço pelo menos permissão de Consulta no ponto de extremidade. Consulte Gerenciar permissões em um endpoint de servir modelo.
O Python SDK do Databricks fornece uma API para consultar diretamente um endpoint otimizado para rota.
Observação
O SDK do Databricks também está disponível no Go, consulte o SDK do Databricks para Go.
O próximo exemplo requer o seguinte para consultar um endpoint otimizado por rota por meio do SDK do Databricks:
- Nome do ponto de extremidade de serviço (o SDK busca a URL de ponto de extremidade correta com base nesse nome)
- ID do cliente principal de serviço
- Segredo da entidade de serviço
- Nome do host do espaço de trabalho
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 = ....)
Obter um token OAuth manualmente
Para cenários em que o SDK do Databricks ou a interface do usuário de serviço não podem ser usados para buscar seu token OAuth, você pode buscar manualmente um token OAuth. As orientações nesta seção se aplicam principalmente a cenários em que os usuários têm um cliente personalizado que desejam usar para consultar o endpoint em produção.
Ao buscar um token OAuth manualmente, você deve especificar authorization_details na solicitação.
- Construa a
<token-endpoint-URL>substituindohttps://<databricks-instance>pela URL do workspace da sua implantação do Databricks emhttps://<databricks-instance>/oidc/v1/token. Por exemplo,https://my-workspace.0.azuredatabricks.net/oidc/v1/token
- Substitua
<client-id>pela ID de cliente da entidade de serviço, também é conhecida como ID de aplicativo. - Substitua
<client-secret>pelo segredo do OAuth da entidade de serviço que você criou.
- Substitua
<endpoint-id>pela ID do ponto de extremidade com otimização de rota. Esta é a ID alfanumérica do ponto de extremidade que pode ser encontrado nahostNameda URL do ponto de extremidade. Por exemplo, se o ponto de extremidade de serviço forhttps://abcdefg.0.serving.azuredatabricks.net/9999999/serving-endpoints/test, a ID do ponto de extremidade seráabcdefg.
- Substitua
<action>pela permissão de ação fornecida à entidade de serviço. A ação pode serquery_inference_endpointoumanage_inference_endpoint.
API REST
Veja a seguir um exemplo de API REST:
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
Veja a seguir um exemplo do 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}")
Depois de buscar o token OAuth, consulte seu ponto de extremidade usando a URL do ponto de extremidade e o token OAuth.
API REST
Veja a seguir um exemplo de API REST:
URL="<endpoint-url>"
OAUTH_TOKEN="<token>"
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OAUTH_TOKEN" \
--data "@data.json" \
"$URL"
Python
Veja a seguir um exemplo do 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)