Erstellen und verwalten Sie externe Modellanbieter (Modellanbieterdienste)

Registrieren Sie einen externen Modellanbieter als Modellanbieter-Service, gewähren Sie ihm den Zugriff, konfigurieren Sie die Funktionen des Unity AI Gateway und löschen Sie ihn.

Requirements

  • CREATE SERVICE für das Schema, in dem Sie den Modellanbieter-Dienst erstellen, sowie USE CATALOG und USE SCHEMA für dessen Katalog und Schema.
  • Die Anmeldeinformationen für den externen Anbieter, den Sie registrieren möchten (z. B. einen OpenAI-API-Schlüssel oder ein AWS-Zugriffstastenpaar).
  • Um Azure OpenAI oder Microsoft Foundry mit einer Dienstanmeldeinformation statt mit einem Schlüssel oder Geheimnis zu authentifizieren, benötigen Sie eine vorhandene Dienstanmeldeinformation sowie ACCESS dafür. Weitere Informationen finden Sie unter Authentifizieren von Azure OpenAI oder Microsoft Foundry mit Dienstanmeldeinformationen.

Erstellen Sie einen Modell-Provider-Dienst

Modellanbieterdienste und Modelldienste teilen einen namespace mit einem einzigen Namen innerhalb eines Unity-Katalogschemas. Sie können keinen Namen für einen Modellanbieterdienst verwenden, wenn dieser Name im Schema bereits von einem Modelldienst verwendet wird, und umgekehrt.

Sie können einen Modellanbieter-Service in der Unity AI Gateway UI oder im Catalog Explorer erstellen oder programmatisch mit der REST API, den Azure Databricks SDKs, der Azure Databricks CLI oder Terraform.

Benutzeroberfläche

  1. Führen Sie einen der folgenden Schritte aus:
    • In der Seitenleiste des Arbeitsbereichs klicken Sie auf AI Gateway, öffnen Sie dann den Reiter Anbieter und klicken Sie auf Anbieter.
    • Im Katalog-Explorer gehen Sie zu dem Schema, in dem Sie den Modellanbieterdienst erstellen möchten, klicken Sie auf Dienst erstellen>und wählen dann im Dialogfeld Dienst erstellenModellanbieter aus.
  2. Geben Sie einen Namen für den Modellanbieterdienst ein, und wählen Sie den Katalog und das Schema aus, in dem er erstellt werden soll. Wenn Sie mit dem Katalog-Explorer beginnen, füllt der Katalog-Explorer den Katalog und das Schema vor.
  3. Wählen Sie den Anbietertyp aus, und geben Sie die Verbindungsdetails und Anmeldeinformationen des Anbieters ein.
  4. Klicke auf Erstellen. Azure Databricks verschlüsselt und speichert die Anmeldeinformationen. Die Benutzeroberfläche zeigt sie nach diesem Punkt nicht an.

REST API

Senden Sie eine POST an /api/2.1/unity-catalog/model-provider-services und übergeben Sie parent und model_provider_service_id als Abfrageparameter. Legen Sie provider_type und genau einen passenden Provider-Block fest; targets legt die zulässigen erreichbaren Upstream-Modelle fest, und Geheimnisse werden inline im Klartext angegeben:

databricks api post \
  "/api/2.1/unity-catalog/model-provider-services?parent=schemas/main.default&model_provider_service_id=my_provider" \
  --json '{
  "comment": "Routes to a custom OpenAI-compatible provider",
  "config": {
    "provider_type": "EXTERNAL_MODEL_PROVIDER_TYPE_CUSTOM",
    "targets": [
      { "model": "gpt-4o", "native_api_types": ["openai/v1/chat/completions"] }
    ],
    "custom": {
      "direct": {
        "base_url": "https://api.example.com/v1",
        "api_key": { "plaintext": "dummy-api-key" }
      }
    }
  }
}'

CLI

Übergeben Sie das übergeordnete Schema und einen Leaf-Namen und geben Sie die Konfiguration mit --json an. Legen Sie provider_type und genau einen passenden Provider-Block fest; targets führt die erreichbaren Upstream-Modelle auf einer Zulassungsliste, und Geheimnisse werden inline im Klartext bereitgestellt. Um die CLI zu installieren, siehe Installieren oder aktualisieren Sie die Databricks-CLI.

databricks ai-gateway create-model-provider-service schemas/main.default my_provider --json '{
  "comment": "Routes to a custom OpenAI-compatible provider",
  "config": {
    "provider_type": "EXTERNAL_MODEL_PROVIDER_TYPE_CUSTOM",
    "targets": [
      { "model": "gpt-4o", "native_api_types": ["openai/v1/chat/completions"] }
    ],
    "custom": {
      "direct": {
        "base_url": "https://api.example.com/v1",
        "api_key": { "plaintext": "dummy-api-key" }
      }
    }
  }
}'

Terraform

Erstellen und verwalten Sie einen Modell-Provider-Service mit dem Databricks Terraform-Anbieter und der databricks_ai_gateway_model_provider_service-Ressource . Halten Sie reale Schlüssel aus der Quellcodekontrolle heraus, indem Sie den API-Schlüssel durch eine Variable sensitive = true leiten lassen (setzen Sie ihn mit -var oder einer TF_VAR_provider_api_key Umgebungsvariable):

variable "provider_api_key" {
  type      = string
  sensitive = true
}

resource "databricks_ai_gateway_model_provider_service" "example" {
  parent                    = "schemas/main.default"
  model_provider_service_id = "my_provider"
  comment                   = "Routes to a custom OpenAI-compatible provider"

  config = {
    provider_type = "EXTERNAL_MODEL_PROVIDER_TYPE_CUSTOM"

    targets = [{
      model            = "gpt-4o"
      native_api_types = ["openai/v1/chat/completions"]
    }]

    custom = {
      direct = {
        base_url = "https://api.example.com/v1"
        api_key  = { plaintext = var.provider_api_key }
      }
    }
  }
}

Python SDK

Erstellen und verwalten Sie einen Modell-Provider-Dienst mit dem Databricks SDK für Python:

from databricks.sdk.service import catalog as c

model_provider_service = w.ai_gateway.create_model_provider_service(
    parent="schemas/main.default",
    model_provider_service_id="my_provider",
    model_provider_service=c.ModelProviderService(
        comment="Routes to a custom OpenAI-compatible provider",
        config=c.ModelProviderServiceConfig(
            provider_type=(
                c.ModelProviderServiceConfigExternalModelProviderType
                .EXTERNAL_MODEL_PROVIDER_TYPE_CUSTOM
            ),
            targets=[
                c.ModelProviderServiceConfigModelTargetConfig(
                    model="gpt-4o",
                    native_api_types=["openai/v1/chat/completions"],
                )
            ],
            custom=c.ModelProviderServiceConfigCustomProviderConfig(
                direct=c.ModelProviderServiceConfigCustomProviderDirectConfig(
                    base_url="https://api.example.com/v1",
                    api_key=c.ModelProviderServiceConfigProviderSecret(
                        plaintext="dummy-api-key"
                    ),
                )
            ),
        ),
    ),
)

Go Software Development Kit (SDK)

Erstellen und verwalten Sie einen Modellanbieterdienst mit dem Databricks SDK für Go:

modelProviderService, err := w.AiGateway.CreateModelProviderService(ctx,
	catalog.CreateModelProviderServiceRequest{
		Parent:                 "schemas/main.default",
		ModelProviderServiceId: "my_provider",
		ModelProviderService: catalog.ModelProviderService{
			Comment: "Routes to a custom OpenAI-compatible provider",
			Config: &catalog.ModelProviderServiceConfig{
				ProviderType: catalog.ModelProviderServiceConfigExternalModelProviderTypeExternalModelProviderTypeCustom,
				Targets: []catalog.ModelProviderServiceConfigModelTargetConfig{{
					Model:          "gpt-4o",
					NativeApiTypes: []string{"openai/v1/chat/completions"},
				}},
				Custom: &catalog.ModelProviderServiceConfigCustomProviderConfig{
					Direct: &catalog.ModelProviderServiceConfigCustomProviderDirectConfig{
						BaseUrl: "https://api.example.com/v1",
						ApiKey: &catalog.ModelProviderServiceConfigProviderSecret{
							Plaintext: "dummy-api-key",
						},
					},
				},
			},
		},
	})

Java SDK

Erstellen und verwalten Sie einen Modellanbieterdienst mit dem Databricks SDK für Java:

ModelProviderServiceConfig config =
    new ModelProviderServiceConfig()
        .setProviderType(
            ModelProviderServiceConfigExternalModelProviderType
                .EXTERNAL_MODEL_PROVIDER_TYPE_CUSTOM)
        .setTargets(
            Collections.singletonList(
                new ModelProviderServiceConfigModelTargetConfig()
                    .setModel("gpt-4o")
                    .setNativeApiTypes(
                        Collections.singletonList("openai/v1/chat/completions"))))
        .setCustom(
            new ModelProviderServiceConfigCustomProviderConfig()
                .setDirect(
                    new ModelProviderServiceConfigCustomProviderDirectConfig()
                        .setBaseUrl("https://api.example.com/v1")
                        .setApiKey(
                            new ModelProviderServiceConfigProviderSecret()
                                .setPlaintext("dummy-api-key"))));

ModelProviderService modelProviderService =
    w.aiGateway()
        .createModelProviderService(
            new CreateModelProviderServiceRequest()
                .setParent("schemas/main.default")
                .setModelProviderServiceId("my_provider")
                .setModelProviderService(
                    new ModelProviderService()
                        .setComment("Routes to a custom OpenAI-compatible provider")
                        .setConfig(config)));

JS SDK

Erstellen und verwalten Sie einen Modellanbieterdienst mit dem Databricks AI Gateway SDK für JavaScript:

import { ModelProviderServiceConfig_ExternalModelProviderType as ProviderType } from '@databricks/sdk-aigateway/v1';

const created = await client.createModelProviderService({
  parent: 'schemas/main.default',
  modelProviderServiceId: 'my_provider',
  modelProviderService: {
    comment: 'Routes to a custom OpenAI-compatible provider',
    config: {
      providerType: ProviderType.EXTERNAL_MODEL_PROVIDER_TYPE_CUSTOM,
      targets: [{ model: 'gpt-4o', nativeApiTypes: ['openai/v1/chat/completions'] }],
      provider: {
        $case: 'custom',
        custom: {
          providerMode: {
            $case: 'direct',
            direct: {
              baseUrl: 'https://api.example.com/v1',
              authMode: {
                $case: 'apiKey',
                apiKey: {
                  value: { $case: 'plaintext', plaintext: 'dummy-api-key' },
                },
              },
            },
          },
        },
      },
    },
  },
});

Die vollständige Liste der Anbieter und ihrer Authentifizierungsmethoden finden Sie unter Verwalten externer Modellanbieter (Modellanbieterdienste).

Authentifizieren Sie Azure OpenAI oder Microsoft Foundry mit Dienstanmeldeinformationen

Sie können einen Azure OpenAI- oder Microsoft Foundry-Anbieter mit einer Service-Credential authentifizieren, anstatt einen API-Schlüssel oder ein Microsoft Entra ID Service Principal Client Secret zu speichern. Dienstanmeldeinformationen umfassen eine von Unity Catalog verwaltete Azure-Identität, sodass kein langlebiges Geheimnis in den Dienst des Modellanbieters kopiert wird: Azure Databricks bezieht von dieser Identität kurzlebige Token, um jede Anfrage zu authentifizieren.

Erstellen Sie den Modell-Provider-Service, wie beschrieben in Create a Model Provider Service. Wählen Sie Azure OpenAI oder Microsoft Foundry als Anbietertyp aus und geben Sie dessen Verbindungsdetails ein, einschließlich der Endpunkt-Basis-URL. Dann setze die Auth-Methode auf Service Credential und wähle die Zugangsdaten aus, anstatt einen API-Schlüssel oder ein Client-Geheimnis einzugeben. Eine Service-Zugangsdaten ersetzt nur das Geheimnis, daher ist die Endpunkt-Basis-URL weiterhin erforderlich.

Bestätigen Sie die folgenden Anforderungen:

  • Der Besitzer des Dienstes des Modellanbieters hat ACCESS auf der Dienstanmeldeinformation. Da Azure Databricks den Zugriff des Besitzers beim Ausstellen von Anfragen erneut überprüft, muss der Besitzer ihn so lange behalten, wie der Anbieter genutzt wird. Wenn es widerrufen wird, werden Abfragen für alle unterbunden, auch für Aufrufer, die EXECUTE beim Anbieter halten. Um dem Besitzer Zugriff auf die Zugangsberechtigung zu gewähren:

    GRANT ACCESS ON SERVICE CREDENTIAL <service-credential-name> TO `<model-provider-service-owner>`;
    
  • Der Zweck der Anmeldeinformation ist Dienst, nicht die Speicherung.

  • Die Zugangsberechtigung ist in den Arbeitsbereichen verfügbar, aus denen Anfragen kommen. Die Workspace-Bindungen gelten weiterhin, sodass eine Anfrage aus einem Workspace, an den die Anmeldeinformationen nicht gebunden sind, dort fehlschlägt, obwohl der Dienst des Modellanbieters selbst von jedem Workspace aus erreichbar ist, der sich denselben Metastore teilt.

  • Die Azure-Identität der Servicezugangsdaten ist autorisiert, um die von Ihnen geplanten Azure OpenAI- oder Microsoft Foundry-Deployments aufzurufen. Informationen zum Erstellen einer Dienstanmeldeinformationen finden Sie unter Erstellen von Dienstanmeldeinformationen.

Anrufer, die den Anbieter anfragen, benötigen dieselben Zuschüsse wie jeder andere Anbieter. Sie benötigen keine Privilegien auf der Service-Berechtigung, was die Berechtigung selbst außerhalb ihrer Reichweite hält.

Der Dienst des Modellanbieters identifiziert einen Zugangsnachweis anhand seiner internen Kennung, sodass Sie ihn umbenennen können, ohne dass Abfragen fehlschlagen.

Wenn Sie eine Zugangsdaten löschen, schlagen Abfragen fehl und es gibt keine Warnung, dass ein Modellanbieter-Dienst darauf verweist. Bestätigen Sie, dass es keine Hinweise auf diese Berechtigung gibt, bevor Sie sie löschen.

Sie können einen bestehenden Modellanbieter-Dienst nicht von der Authentifizierung mit Service-Anmeldedaten auf die Authentifizierung mit API-Schlüssel oder Client-Secret umstellen. Erstelle stattdessen einen neuen Modellanbieter-Dienst.

Senden Sie einen benutzerdefinierten Provider-API-Schlüssel in einem Header

Ein benutzerdefinierter Anbieter sendet standardmäßig seinen API-Schlüssel als Inhabertoken. Wenn Ihr Endpunkt den Schlüssel stattdessen in einem bestimmten Header erwartet, verwenden Sie die API-Schlüssel-Header-Authentifizierung und benennen Sie den Header selbst. Azure Databricks sendet dann den Schlüssel bei jeder ausgehenden Anfrage als .<header name>: <header value>

Erstellen Sie den Modell-Provider-Service, wie beschrieben in Create a Model Provider Service. Wählen Sie als Providertyp Benutzerdefiniert aus, setzen Sie die Authentifizierungsmethode auf API-Schlüssel im Header und geben Sie den von Ihrem Endpunkt erwarteten Headernamen (z. B. X-API-Key oder Ocp-Apim-Subscription-Key) sowie den Headerwert an.

Die beiden Methoden schließen einander aus: Ein benutzerdefinierter Anbieter verwendet entweder ein Bearer-Token oder einen benannten Header, nicht beides. Die Header-Authentifizierung benötigt genau einen Header.

Der Header-Name muss ein gültiger HTTP-Header-Name sein: Buchstaben, Ziffern und die Zeichen !#$%&'*+-.^_`|~, bis zu 255 Zeichen. Jedes andere Zeichen ist unzulässig, einschließlich Leerzeichen, Doppelpunkten, Schrägstrichen und Zeilenumbrüchen.

Gewähren Sie Zugang zu einem Modellanbieter-Service

Standardmäßig kann nur der Inhaber des Modellanbieter-Dienstes es abfragen. Damit andere einen Service eines Modellanbieters abfragen können, gewähren Sie ihnen dafür EXECUTE sowie USE CATALOG und USE SCHEMA für den zugehörigen Katalog und das zugehörige Schema. Wenn der Modellanbieterdienst in eine Inferenztabelle protokolliert, gewähren Sie SELECT für die Tabelle, damit er die protokollierten Anfragen und Antworten lesen kann.

Benutzeroberfläche

  1. Öffnen Sie den Modellanbieterdienst im Katalogexplorer oder gehen Sie zu AI Gateway und wählen Sie den Dienst aus.
  2. Wechseln Sie zur Registerkarte Berechtigungen.
  3. Klicken Sie auf Erlauben.
  4. Wählen Sie die Benutzer, Gruppen oder Dienstprinzipale aus, um Zugriff zu gewähren.
  5. Wählen Sie die EXECUTE-Berechtigung aus .
  6. Klicken Sie auf Erlauben.

REST API

databricks api patch \
  "/api/2.1/unity-catalog/permissions/model_provider_service/main.default.my_provider" \
  --json '{
    "changes": [
      { "principal": "data-team", "add": ["EXECUTE"] }
    ]
  }'

Weitere Informationen zum Gewähren und Ermitteln von Zugriff finden Sie unter Externe Modellanbieter (Model-Provider-Dienste) ermitteln und den Zugriff darauf verwalten.

Konfigurieren von Features

Da der Dienst eines Modellanbieters über das Unity AI Gateway weitergeleitet wird, wenden Sie dieselben Governance- und Observability-Funktionen an, die Sie für den sonstigen Datenverkehr über das Unity AI Gateway verwenden:

Aktualisieren Sie einen Modellanbieterdienst

Sie müssen Besitzer sein oder über MANAGE verfügen. Der Anbietertyp ist unveränderlich.

Benutzeroberfläche

Bearbeiten Sie die Konfiguration des Modellanbieterdienstes aus der Unity AI Gateway UI oder dem Catalog Explorer. Änderungen werden direkt übernommen.

REST API

databricks api patch \
  "/api/2.1/unity-catalog/model-provider-services/main.default.my_provider?update_mask=comment" \
  --json '{"comment": "Updated: routes to a custom provider"}'

CLI

databricks ai-gateway update-model-provider-service model-provider-services/main.default.my_provider comment \
  --json '{"comment": "Updated: routes to a custom provider"}'

Terraform

Bearbeiten Sie databricks_ai_gateway_model_provider_service (oder jedes andere änderbare Feld) in der Ressource comment und wenden Sie sie erneut an. Änderungen werden direkt übernommen.

Python SDK

from databricks.sdk.service import catalog as c
from google.protobuf.field_mask_pb2 import FieldMask

updated = w.ai_gateway.update_model_provider_service(
    name="model-provider-services/main.default.my_provider",
    update_mask=FieldMask(paths=["comment"]),
    model_provider_service=c.ModelProviderService(
        comment="Updated: routes to a custom provider"
    ),
)

Go Software Development Kit (SDK)

updated, err := w.AiGateway.UpdateModelProviderService(ctx,
	catalog.UpdateModelProviderServiceRequest{
		Name:       "model-provider-services/main.default.my_provider",
		UpdateMask: *fieldmask.New([]string{"comment"}),
		ModelProviderService: catalog.ModelProviderService{
			Comment: "Updated: routes to a custom provider",
		},
	})

Java SDK

ModelProviderService updated =
    w.aiGateway()
        .updateModelProviderService(
            new UpdateModelProviderServiceRequest()
                .setName("model-provider-services/main.default.my_provider")
                .setUpdateMask(FieldMask.newBuilder().addPaths("comment").build())
                .setModelProviderService(
                    new ModelProviderService()
                        .setComment("Updated: routes to a custom provider")));

JS SDK

import { modelProviderServiceFieldMask } from '@databricks/sdk-aigateway/v1';

const updated = await client.updateModelProviderService({
  modelProviderService: {
    name: 'model-provider-services/main.default.my_provider',
    comment: 'Updated: routes to a custom provider',
  },
  updateMask: modelProviderServiceFieldMask('comment'),
});

Löschen eines Modellanbieterdiensts

Sie müssen Besitzer sein oder über MANAGE verfügen.

Benutzeroberfläche

Öffnen Sie den Modell-Provider-Service in der Unity AI Gateway UI oder im Catalog Explorer und wählen Sie im Kebab-Menü Löschen .

REST API

databricks api delete "/api/2.1/unity-catalog/model-provider-services/main.default.my_provider"

CLI

databricks ai-gateway delete-model-provider-service model-provider-services/main.default.my_provider

Terraform

Führe terraform destroy aus, oder entferne den Ressourcenblock und wende ihn erneut an.

Python SDK

w.ai_gateway.delete_model_provider_service(
    name="model-provider-services/main.default.my_provider"
)

Go Software Development Kit (SDK)

err := w.AiGateway.DeleteModelProviderService(ctx,
	catalog.DeleteModelProviderServiceRequest{
		Name: "model-provider-services/main.default.my_provider",
	})

Java SDK

w.aiGateway()
    .deleteModelProviderService(
        new DeleteModelProviderServiceRequest()
            .setName("model-provider-services/main.default.my_provider"));

JS SDK

await client.deleteModelProviderService({
  name: 'model-provider-services/main.default.my_provider',
});

Nächste Schritte