Configurer l'accès aux ressources à partir des endpoints de mise en service de modèles
Cet article décrit comment configurer l'accès aux ressources externes et privées à partir des Endpoint de service de modèles. Model Serving prend en charge les variables d'environnement en texte brut et les variables d'environnement basées sur des secrets à l'aide des secrets Databricks.
Exigences
Pour les variables d'environnement basées sur les secrets,
- Le créateur d'endpoint doit disposer d'un accès en lecture aux secrets Databricks référencés dans les configurations.
- Vous devez stocker les informations d'identification, telles que votre clé API ou d'autres jetons, en tant que secret Databricks.
Ajouter des variables d'environnement en texte brut
Utilisez des variables d'environnement en texte brut pour définir des variables qui n'ont pas besoin d'être masquées. Vous pouvez définir des variables dans l'interface utilisateur de Serving, l'API REST ou le SDK lorsque vous créez ou mettez à jour un Endpoint.
- Serving UI
- REST API
- WorkspaceClient SDK
- MLflow Deployments SDK
Depuis l’interface utilisateur Serving, vous pouvez ajouter une variable d’environnement dans **Configurations avancées** :

Voici un exemple de création d’un endpoint de service à l’aide de l’API REST POST /api/2.0/serving-endpoints et du champ environment_vars pour configurer votre variable d’environnement.
{
"name": "endpoint-name",
"config": {
"served_entities": [
{
"entity_name": "model-name",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars": {
"TEXT_ENV_VAR_NAME": "plain-text-env-value"
}
}
]
}
}
Voici un exemple de création d'un endpoint de service à l'aide du SDK WorkspaceClient et du champ environment_vars pour configurer votre variable d'environnement.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ServedEntityInput, EndpointCoreConfigInput, ServingModelWorkloadType
w = WorkspaceClient()
endpoint_name = "example-add-model"
model_name = "main.default.addmodel"
w.serving_endpoints.create_and_wait(
name=endpoint_name,
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name = model_name,
entity_version = "2",
workload_type = ServingModelWorkloadType("CPU"),
workload_size = "Small",
scale_to_zero_enabled = False,
environment_vars = {
"MY_ENV_VAR": "value_to_be_injected",
"ADS_TOKEN": "abcdefg-1234"
}
)
]
)
)
Voici un exemple de création d'un Endpoint de service à l'aide du SDK Mlflow Deployments et du champ environment_vars pour configurer votre variable d'environnement.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": True,
"environment_vars": {
"MY_ENV_VAR": "value_to_be_injected",
"ADS_TOKEN": "abcdefg-1234"
}
}
]
}
)
Consigner les DataFrames de recherche de caractéristiques dans les tables d'inférence
Si vous avez activé les tables d'inférence sur votre Endpoint, vous pouvez consigner votre data frame de recherche automatique de fonctionnalités dans cette table d'inférence en utilisant ENABLE_FEATURE_TRACING. Ceci nécessite MLflow 2.14.0 ou une version supérieure.
Définissez ENABLE_FEATURE_TRACING comme variable d'environnement dans l'interface utilisateur de Serving, l'API REST ou le SDK lorsque vous créez ou mettez à jour un endpoint.
- Serving UI
- REST API
- WorkspaceClient SDK
- MLflow Deployments SDK
- Dans Configurations avancées , sélectionnez **+ Ajouter des variables d'environnement**.
- Saisissez
ENABLE_FEATURE_TRACINGcomme nom d'environnement. - Dans le champ de droite, saisissez
true.

Voici un exemple de création d'un endpoint de déploiement à l'aide de l'API REST POST /api/2.0/serving-endpoints et du champ environment_vars pour configurer la variable d'environnement ENABLE_FEATURE_TRACING.
{
"name": "endpoint-name",
"config": {
"served_entities": [
{
"entity_name": "model-name",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars": {
"ENABLE_FEATURE_TRACING": "true"
}
}
]
}
}
Voici un exemple de création d'un endpoint de service utilisant le SDK WorkspaceClient et le champ environment_vars pour configurer la variable d'environnement ENABLE_FEATURE_TRACING.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ServedEntityInput, EndpointCoreConfigInput, ServingModelWorkloadType
w = WorkspaceClient()
endpoint_name = "example-add-model"
model_name = "main.default.addmodel"
w.serving_endpoints.create_and_wait(
name=endpoint_name,
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name = model_name,
entity_version = "2",
workload_type = ServingModelWorkloadType("CPU"),
workload_size = "Small",
scale_to_zero_enabled = False,
environment_vars = {
"ENABLE_FEATURE_TRACING": "true"
}
)
]
)
)
Voici un exemple de création d'un Endpoint de service utilisant le SDK Mlflow Deployments et le champ environment_vars pour configurer la variable d'environnement ENABLE_FEATURE_TRACING.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": True,
"environment_vars": {
"ENABLE_FEATURE_TRACING": "true"
}
}
]
}
)
Ajouter des variables d'environnement basées sur des secrets
Vous pouvez stocker en toute sécurité les identifiants à l'aide des secrets Databricks et référencer ces secrets dans la mise à disposition de modèles à l'aide de variables d'environnement basées sur les secrets. Cela permet de récupérer les identifiants à partir des Endpoint de mise en service du modèle au moment du service.
Par exemple, vous pouvez transmettre des informations d'identification pour appeler OpenAI et d'autres endpoints de modèle externes ou accéder à des emplacements de stockage de données externes directement à partir de la diffusion de modèles.
Databricks recommande cette fonctionnalité pour le déploiement des variantes de modèles OpenAI et LangChain MLflow pour le service. Il est également applicable aux autres modèles SaaS nécessitant des informations d'identification, étant entendu que le modèle d'accès est basé sur l'utilisation de variables d'environnement, de clés API et de jetons.
Étape 1 : Créer un Secret Scope
Pendant le service de modèles, les secrets sont récupérés des secrets Databricks par le Secret Scope et la clé. Celles-ci sont attribuées aux noms de variables d'environnement secrètes qui peuvent être utilisées à l'intérieur du modèle.
Tout d'abord, créez un Secret Scope. Voir Gérer les Secret Scope.
Voici les commandes CLI :
databricks secrets create-scope my_secret_scope
Vous pouvez ensuite ajouter votre secret à un Secret Scope et à une clé souhaités, comme indiqué ci-dessous :
databricks secrets put-secret my_secret_scope my_secret_key
Les informations secrètes et le nom de la variable d'environnement peuvent ensuite être transmis à la configuration de votre Endpoint lors de la création du Endpoint ou comme mise à jour de la configuration d'un Endpoint existant.
Étape 2 : Ajouter des Secret Scope à la configuration de l'endpoint
Vous pouvez ajouter le Secret Scope à une variable d'environnement et transmettre cette variable à votre Endpoint lors de la création du Endpoint ou des mises à jour de configuration. Consultez Créer des Endpoints personnalisés de service de modèles.
- Serving UI
- REST API
- WorkspaceClient SDK
- MLflow Deployments SDK
Depuis l'interface utilisateur de Serving, vous pouvez ajouter une variable d'environnement dans les Configurations avancées . La variable d'environnement basée sur les secrets doit être fournie en utilisant la syntaxe suivante : {{secrets/scope/key}}. Sinon, la variable d'environnement est considérée comme une variable d'environnement en texte brut.

Voici un exemple de création d'un endpoint de déploiement à l'aide de l'API REST. Lors de la création de l'Endpoint de déploiement de modèle et des mises à jour de configuration, vous pouvez fournir une liste de spécifications de variables d'environnement secrètes pour chaque modèle déployé dans la requête API en utilisant le champ environment_vars.
L'exemple suivant attribue la valeur du secret créé dans le code fourni à la variable d'environnement OPENAI_API_KEY.
{
"name": "endpoint-name",
"config": {
"served_entities": [
{
"entity_name": "model-name",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars": {
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
}
]
}
}
Vous pouvez également mettre à jour un Endpoint de diffusion, comme dans l'exemple d'API REST PUT /api/2.0/serving-endpoints/{name}/configsuivant :
{
"served_entities": [
{
"entity_name": "model-name",
"entity_version": "2",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars": {
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
}
]
}
Voici un exemple de création d'un endpoint de service à l'aide du SDK WorkspaceClient. Lors de la création de l'Endpoint de déploiement de modèle et des mises à jour de configuration, vous pouvez fournir une liste de spécifications de variables d'environnement secrètes pour chaque modèle déployé dans la requête API en utilisant le champ environment_vars.
L'exemple suivant attribue la valeur du secret créé dans le code fourni à la variable d'environnement OPENAI_API_KEY.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ServedEntityInput, EndpointCoreConfigInput, ServingModelWorkloadType
w = WorkspaceClient()
endpoint_name = "example-add-model"
model_name = "main.default.addmodel"
w.serving_endpoints.create_and_wait(
name=endpoint_name,
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name = model_name,
entity_version = "2",
workload_type = ServingModelWorkloadType("CPU"),
workload_size = "Small",
scale_to_zero_enabled = False,
environment_vars = {
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
)
]
)
)
Voici un exemple de création d'un endpoint de service à l'aide du SDK MLflow Deployments. Lors de la création de l'Endpoint de déploiement de modèle et des mises à jour de configuration, vous pouvez fournir une liste de spécifications de variables d'environnement secrètes pour chaque modèle déployé dans la requête API en utilisant le champ environment_vars.
L'exemple suivant attribue la valeur du secret créé dans le code fourni à la variable d'environnement OPENAI_API_KEY.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": True,
"environment_vars": {
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
}
]
}
)
Après la création ou la mise à jour de l'Endpoint, le service de modèle récupère automatiquement la clé secrète du Secret Scope Databricks et renseigne la variable d'environnement que votre code d'inférence de modèle peut utiliser.
Exemple de Notebook
Consultez le Notebook suivant pour un exemple de configuration d'une clé API OpenAI pour une chaîne Retrieval QA LangChain déployée derrière les Endpoints de déploiement de modèles avec des variables d'environnement basées sur des secrets.