Tworz i zarządzaj dostawcami za pomocą Model Provider Services

Dowiedz się, jak zarejestrować dostawcę jako usługę modelowego dostawcy, przyznawać do niego dostęp, konfigurować funkcje Unity Gateway i usuwać go.

Requirements

  • CREATE SERVICE w schemacie, w którym tworzysz usługę dostawcy modelu, a także USE CATALOG i USE SCHEMA w jego katalogu i schemacie.
  • Poświadczenia dostawcy zewnętrznego, który chcesz zarejestrować (na przykład klucz interfejsu API OpenAI lub para kluczy dostępu platformy AWS).
  • Aby uwierzytelnić Azure OpenAI lub Microsoft Foundry za pomocą poświadczenia serwisowego zamiast klucza lub sekretu, musisz mieć istniejące dane ACCESS uwierzytelniające i na nim zawarte. Zobacz Jak uwierzytelniać Azure OpenAI lub Microsoft Foundry za pomocą poświadczeń usługi.

Aby powiązać poświadczenie dostawcy z sekretem Unity Catalog należącym do klienta zamiast przechowywać wartość bezpośrednio, musisz mieć istniejący sekret Unity Catalog oraz READ SECRET do niego. Zobacz Jak zabezpieczyć poświadczenie dostawcy za pomocą wpisu tajnego w Unity Catalog.

Stwórz modelową usługę dostawcy

Usługi dostawcy modeli i usługi modeli współdzielą tę samą przestrzeń nazw w schemacie Unity Catalog. Nie można użyć nazwy usługi dostawcy modeli, jeśli usługa modelu w schemacie już jej używa, i odwrotnie.

Stwórz usługę dostawcy modelu w interfejsie Unity Gateway lub Catalog Explorer. Aby stworzyć go programatycznie, użyj REST API, SDK Azure Databricks, Databricks CLI, Terraform lub Declarative Automation Bundles (DAB).

interfejs użytkownika

  1. Wykonaj jedną z następujących czynności:
    • W pasku bocznym workspace kliknij Unity Gateway, następnie otwórz zakładkę Providers i kliknij Provider.
    • W Eksploratorze katalogu przejdź do schematu, gdzie chcesz utworzyć usługę dostawcy modelu, kliknij Utwórz>usługę, a następnie wybierz usługę dostawcy modelu w oknie Utwórz usługę .
  2. Wprowadź nazwę usługi dostawcy modelu, a następnie wybierz katalog i schemat, w których ma zostać utworzona. Jeśli zaczniesz od Eksploratora wykazu, Eksplorator wykazu wstępnie wypełnia wykaz i schemat.
  3. Wybierz typ dostawcy i wprowadź szczegóły połączenia i poświadczenia dostawcy.
  4. Kliknij pozycję Utwórz. Azure Databricks szyfruje i przechowuje poświadczenia. Interfejs użytkownika nie wyświetla ich po tym punkcie.

interfejs API REST

Wyślij POST do /api/2.1/unity-catalog/model-provider-services, przekazując parent i model_provider_service_id jako parametry zapytania. Ustaw provider_type i dokładnie jeden odpowiadający blok dostawcy; targets określa listę dozwolonych osiągalnych modeli nadrzędnych, a sekrety są podawane bezpośrednio jako jawny tekst:

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

Przekaż schemat nadrzędny i nazwę liścia, a konfigurację podaj za pomocą --json. ustaw provider_type i dokładnie jeden pasujący blok dostawcy; targets pozwala na listę dostępnych modeli w górnym biegu, a sekrety są podawane w linii jako tekst jawny. Aby zainstalować interfejs wiersza polecenia CLI, zobacz Instalowanie lub aktualizowanie interfejsu 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

Utwórz usługę dostawcy modelu i zarządzaj nią za pomocą dostawcy Terraform Databricks oraz zasobu databricks_ai_gateway_model_provider_service. Nie przechowuj prawdziwych kluczy w systemie kontroli wersji; przekaż klucz API za pośrednictwem zmiennej sensitive = true (ustaw ją za pomocą -var lub zmiennej środowiskowej TF_VAR_provider_api_key):

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 }
      }
    }
  }
}

DAB-y (Beta)

Zdefiniuj usługę dostawcy modelu w pakiecie i wdroż ją za pomocą databricks bundle deploy. Przechowuj rzeczywiste klucze poza systemem kontroli wersji, przekazując klucz API za pomocą zmiennej pakietu (ustaw ją za pomocą --var lub zmiennej środowiskowej BUNDLE_VAR_provider_api_key):

variables:
  provider_api_key:
    description: Provider API key.

resources:
  model_provider_services:
    my_provider:
      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}

Zestaw SDK dla języka Python

Stwórz i zarządzaj usługą dostawcy modeli za pomocą SDK Databricks dla 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"
                    ),
                )
            ),
        ),
    ),
)

Zestaw SDK dla języka Go

Stwórz i zarządzaj usługą dostawcy modelu za pomocą SDK Databricks dla 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",
						},
					},
				},
			},
		},
	})

Go Modular SDK

Stwórz i zarządzaj usługą dostawcy modelu za pomocą pakietu Go SDK. Pola opcjonalne są wskaźnikami, więc przykład używa jednolinijowej funkcji pomocniczej, func ptr[T any](v T) *T { return &v }.

modelProviderService, err := c.CreateModelProviderService(ctx,
	aigateway.CreateModelProviderServiceRequest{
		Parent:                 ptr("schemas/main.default"),
		ModelProviderServiceId: ptr("my_provider"),
		ModelProviderService: &aigateway.ModelProviderService{
			Comment: ptr("Routes to a custom OpenAI-compatible provider"),
			Config: &aigateway.ModelProviderServiceConfig{
				ProviderType: aigateway.ModelProviderServiceConfig_ExternalModelProviderType_ExternalModelProviderTypeCustom,
				Targets: []aigateway.ModelProviderServiceConfig_ModelTargetConfig{{
					Model:          ptr("gpt-4o"),
					NativeApiTypes: []string{"openai/v1/chat/completions"},
				}},
				Provider: &aigateway.ModelProviderServiceConfig_Provider_Custom{
					Custom: aigateway.ModelProviderServiceConfig_CustomProviderConfig{
						ProviderMode: &aigateway.ModelProviderServiceConfig_CustomProviderConfig_ProviderMode_Direct{
							Direct: aigateway.ModelProviderServiceConfig_CustomProviderDirectConfig{
								BaseUrl: ptr("https://api.example.com/v1"),
								AuthMode: &aigateway.ModelProviderServiceConfig_CustomProviderDirectConfig_AuthMode_ApiKey{
									ApiKey: aigateway.ModelProviderServiceConfig_ProviderSecret{
										Value: &aigateway.ModelProviderServiceConfig_ProviderSecret_Value_Plaintext{
											Plaintext: "dummy-api-key",
										},
									},
								},
							},
						},
					},
				},
			},
		},
	})

Java SDK

Stwórz i zarządzaj usługą dostawcy modeli za pomocą Databricks SDK dla Javy:

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 Modular SDK

Stwórz i zarządzaj usługą dostawcy modelu za pomocą pakietu JavaScript SDK:

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' },
                },
              },
            },
          },
        },
      },
    },
  },
});

Pełną listę dostawców i ich metod uwierzytelniania znajdziesz w sekcji Dostawcy modeli zewnętrzni wobec Databricks.

Uwierzytelnij Azure OpenAI lub Microsoft Foundry za pomocą poświadczenia serwisowego

Możesz uwierzytelnić dostawcę Azure OpenAI lub Microsoft Foundry za pomocą poświadczenia usługowego zamiast przechowywać klucz API lub sekret klienta usługi Microsoft Entra ID. Dane uwierzytelniające usługi zawierają tożsamość Azure, którą zarządza Unity Catalog, więc żadna długowieczna tajemnica nie jest kopiowana do usługi modelu dostawcy: Azure Databricks pobiera krótkotrwałe tokeny z tej tożsamości, aby uwierzytelnić każde żądanie.

Utwórz usługę modelu dostawcy zgodnie z opisaniem w Utwórz usługę modelu dostawcy. Wybierz Azure OpenAI lub Microsoft Foundry jako typ dostawcy i wprowadź szczegóły połączenia, w tym bazowy adres URL punktu końcowego. Następnie ustaw metodę uwierzytelniania na dane uwierzytelniające usługi i wybierz dane poświadczenia zamiast wpisywać klucz API lub sekret klienta. Dane uwierzytelniające usługi zastępują tylko sekret, więc nadal wymagany jest adres URL bazy końcowej.

Potwierdź następujące wymagania:

  • Właściciel modelu usługi dostawcy posiada ACCESS na tym poświadczeniu usługowym. Ponieważ usługa Azure Databricks ponownie sprawdza dostęp właściciela przy obsłudze żądań, właściciel musi go zachować tak długo, jak ten dostawca jest używany. Jego unieważnienie powoduje zatrzymanie zapytań dla wszystkich, nawet dla wywołujących, którzy mają EXECUTE u dostawcy. Aby udzielić właścicielowi dostępu do uprawnień:

    GRANT ACCESS ON SERVICE CREDENTIAL <service-credential-name> TO `<model-provider-service-owner>`;
    
  • Celem poświadczenia jest służba, a nie przechowywanie.

  • Poświadczenie jest dostępne w przestrzeniach roboczych, z których pochodzą żądania. Powiązania z obszarem roboczym nadal obowiązują, więc żądanie pochodzące z obszaru roboczego, z którym poświadczenie nie jest powiązane, zakończy się niepowodzeniem, mimo że sama usługa dostawcy modelu jest dostępna z dowolnego obszaru roboczego korzystającego ze wspólnego metastore.

  • Tożsamość Azure poświadczenia usługi jest autoryzowana do wywoływania wdrożeń Azure OpenAI lub Microsoft Foundry, które planujesz zapytać. Aby utworzyć poświadczenia usługi, zobacz Tworzenie poświadczeń usługi.

Dzwoniący wysyłający zapytania do dostawcy potrzebują tych samych dotacji, co każdy inny dostawca. Nie potrzebują żadnych uprawnień do poświadczenia konta usługi, dzięki czemu samo poświadczenie pozostaje poza ich zasięgiem.

Usługa dostawcy modeli identyfikuje poświadczenie na podstawie jego wewnętrznego identyfikatora, dzięki czemu można zmienić jego nazwę bez ryzyka niepowodzenia zapytania.

Jeśli usuniesz poświadczenie, wykonanie zapytań kończy się niepowodzeniem i nie pojawia się żadne ostrzeżenie, że odwołuje się do niego usługa dostawcy modelu. Upewnij się, że nie ma żadnych odniesień do tego poświadczenia, zanim go usuniesz.

Nie można przełączać istniejącej usługi dostawcy modelu między poświadczeniem usług a kluczem API ani uwierzytelnianiem sekretem klienta. Zamiast tego stwórz nowy model usługi dostawcy.

Wyślij niestandardowy klucz API dostawcy w nagłówku

Niestandardowy dostawca domyślnie wysyła swój klucz API jako token nośnika. Gdy punkt końcowy oczekuje zamiast tego klucza w określonym nagłówku, użyj uwierzytelniania za pomocą klucza API w nagłówku i samodzielnie nazwij ten nagłówek. Azure Databricks następnie wysyła klucz na każde żądanie wychodzące jako .<header name>: <header value>

Utwórz usługę modelu dostawcy zgodnie z opisaniem w Utwórz usługę modelu dostawcy. Wybierz Custom jako typ dostawcy, następnie ustaw metodę Auth na nagłówek klucza API i podaj nazwę nagłówka , której oczekuje punkt końcowy (np. X-API-Key lub Ocp-Apim-Subscription-Key), wraz z wartością nagłówka.

Te dwie metody wzajemnie się wykluczają: niestandardowy dostawca używa albo tokenu okaziciela, albo nagłówka o określonej nazwie, ale nie obu jednocześnie. Uwierzytelnianie za pomocą nagłówka używa dokładnie jednego nagłówka.

Nazwa nagłówka musi być poprawną nazwą nagłówka HTTP: litery, cyfry i znaki !#$%&'*+-.^_`|~, do 255 znaków. Każdy inny znak zostaje odrzucony, w tym spacje, dwukropki, ukośniki i podziały wiersza.

Zabezpiecz poświadczenie dostawcy za pomocą wpisu tajnego Unity Catalog

Zamiast przechowywać dane poświadczenia dostawcy w linii, możesz skierować model usługi dostawcy na sekret katalogu Unity należący do klienta, który zawiera tę wartość. Azure Databricks odczytuje wpis tajny w czasie wykonywania zapytania, korzystając z uprawnień właściciela usługi dostawcy modelu, i nigdy nie kopiuje tej wartości do usługi dostawcy modelu, więc rotacja wpisu tajnego staje się skuteczna bez konieczności wprowadzania zmian w usłudze dostawcy modelu.

To działa dla każdego dostawcy, którego dane uwierzytelniające to pojedyncza wartość inline: OpenAI, Azure OpenAI, Anthropic, Amazon Bedrock, Amazon Bedrock Mantle, Microsoft Foundry, Google Gemini Enterprise oraz Custom.

Utwórz usługę modelu dostawcy zgodnie z opisaniem w Utwórz usługę modelu dostawcy. Wybierz typ dostawcy i wprowadź szczegóły połączenia. Dla uwierzytelniania (np. klucza API) zmień typ uwierzytelniania z tekstu jawnego na Secret, a następnie wybierz katalog, schemat i sekret, które identyfikują twój sekret Unity Catalog.

Potwierdź następujące wymagania:

  • Właściciel usługi model provider posiada READ SECRET sekret katalogu Unity. Ponieważ usługa Azure Databricks ponownie sprawdza dostęp właściciela przy obsłudze żądań, właściciel musi go zachować tak długo, jak ten dostawca jest używany. Jego unieważnienie powoduje zatrzymanie zapytań dla wszystkich, nawet dla wywołujących, którzy mają EXECUTE u dostawcy. Aby udzielić właścicielowi dostępu do sekretu:

    GRANT READ SECRET ON SECRET <catalog>.<schema>.<secret> TO `<model-provider-service-owner>`;
    
  • Sekret Katalogu Unity istnieje zanim się do niego odwołasz. Aby tworzyć i zarządzać sekretami Katalogu Unity, zobacz Sekrety w Katalogu Unity.

Dzwoniący wysyłający zapytania do dostawcy potrzebują tych samych dotacji, co każdy inny dostawca. Nie potrzebują żadnych uprawnień do sekretu w Unity Catalog, co uniemożliwia im dostęp do wartości sekretu.

Aby przeprowadzić rotację poświadczeń, zaktualizuj wartość wpisu tajnego w Unity Catalog, bez wprowadzania zmian w usłudze dostawcy modelu.

Jeśli usuniesz sekret Unity Catalog, zapytania kończą się niepowodzeniem. Usługa dostawcy modelu zachowuje odwołanie, które jest teraz nieprawidłowe, dzięki czemu widać zależność, a dostawcę można przywrócić, aktualizując go tak, aby odwoływał się do klucza tajnego, który nadal istnieje.

Usunięcie usługi dostawcy modelu nigdy nie usuwa sekretu Unity Catalog, na który się powołuje.

Udziel dostępu do usługi modelowego dostawcy

Domyślnie tylko właściciel usługi dostawcy modelu może wysyłać do niej zapytania. Aby inni mogli wysyłać zapytania do usługi dostawcy modeli, przyznaj im uprawnienie EXECUTE do niej, a także USE CATALOG i USE SCHEMA do jej katalogu i schematu. Jeśli usługa dostawcy modelu rejestruje się w tabeli wnioskowania, przyznaj SELECT w tabeli, aby umożliwić im odczytywanie zarejestrowanych żądań i odpowiedzi.

interfejs użytkownika

  1. Otwórz usługę dostawcy modelu w Eksploratorze Katalogu lub przejdź do Unity Gateway i wybierz usługę.
  2. Przejdź do karty Uprawnienia .
  3. Kliknij Grant.
  4. Wybierz użytkowników, grupy lub nazwy główne usługi, którym chcesz przyznać dostęp.
  5. Wybierz uprawnienie EXECUTE .
  6. Kliknij Grant.

interfejs API REST

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

CLI

Przyznawanie EXECUTE za pomocą interfejsu wiersza polecenia Databricks. Aby zainstalować interfejs wiersza polecenia CLI, zobacz Instalowanie lub aktualizowanie interfejsu Databricks CLI.

databricks grants update model_provider_service main.default.my_provider \
  --json '{"changes": [{"principal": "data-team", "add": ["EXECUTE"]}]}'

Terraform

Grant EXECUTE z dostawcą Databricks Terraform i zasobem databricks_grant :

resource "databricks_grant" "example" {
  model_provider_service = "main.default.my_provider"
  principal              = "data-team"
  privileges             = ["EXECUTE"]
}

DAB-y (Beta)

Dodaj blok grants do zasobu usługi dostawcy modeli w swoim pakiecie i wdroż go ponownie, aby przyznać dostęp.

variables:
  provider_api_key:
    description: Provider API key.

resources:
  model_provider_services:
    my_provider:
      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}
      grants:
        - principal: data-team
          privileges: [EXECUTE]

Zestaw SDK dla języka Python

Nadawanie EXECUTE za pomocą pakietu Databricks SDK dla języka Python:

from databricks.sdk.service import catalog as c

w.grants.update(
    securable_type="model_provider_service",
    full_name="main.default.my_provider",
    changes=[c.PermissionsChange(principal="data-team", add=[c.Privilege.EXECUTE])],
)

Zestaw SDK dla języka Go

Przyznaj EXECUTE za pomocą Databricks SDK for Go:

_, err := w.Grants.Update(ctx, catalog.UpdatePermissions{
	SecurableType: "model_provider_service",
	FullName:      "main.default.my_provider",
	Changes: []catalog.PermissionsChange{{
		Principal: "data-team",
		Add:       []catalog.Privilege{catalog.PrivilegeExecute},
	}},
})

Java SDK

Grant EXECUTE za pomocą pakietu Databricks SDK dla języka Java:

w.grants().update(
    new UpdatePermissions()
        .setSecurableType("model_provider_service")
        .setFullName("main.default.my_provider")
        .setChanges(Arrays.asList(
            new PermissionsChange().setPrincipal("data-team").setAdd(Arrays.asList(Privilege.EXECUTE)))));

Więcej informacji o przyznawaniu i odnajdywaniu dostępu można znaleźć w Odnajdywanie i zarządzanie dostępem do zewnętrznych dostawców modeli (usług dostawców modeli).

Konfigurowanie funkcji

Ponieważ usługa dostawcy modeli jest kierowana przez Unity Gateway, stosuj te same funkcje zarządzania i obserwowalności, jak w przypadku innego ruchu przechodzącego przez Unity Gateway:

Konfiguruj mnożnik cen

Domyślnie Azure Databricks szacuje wydatki na modele zewnętrzne, korzystając z opublikowanych przez dostawców cen listowych. Jeśli ceny u Twojego dostawcy różnią się, skonfiguruj mnożnik cen, aby odzwierciedlał rabaty lub marże. Na przykład 0.8 wykorzystuje 80% ceny katalogowej, a 1.2 120%.

  1. Stwórz usługę dostawcy modelu lub otwórz istniejącą usługę dostawcy modeli w Eksploratorze Katalogu lub Unity Gateway i kliknij Edytuj.
  2. Rozwiń Opcje zaawansowane.
  3. Wprowadź mnożnik ceny.
  4. Kliknij Stwórz lub Zapisz.

Pole mnożnika ceny w sekcji Opcje zaawansowane w oknie dialogowym tworzenia usługi dostawcy modelu

Mnożnik dotyczy wszystkich modeli dostępnych w ramach usługi dostawcy modeli. Obliczony koszt w system.ai_gateway.external_model_spend odzwierciedla skonfigurowany mnożnik. Zmiany dotyczą żądań złożonych po wejściu konfiguracji w życie; wcześniejsze żądania pozostają szacowane na podstawie ceny katalogowej lub wcześniej skonfigurowanego mnożnika.

Skonfigurowany mnożnik wyświetla etykietę Niestandardowe ceny. Skorygowane ceny mają kropkowane podkreślenie w tabelach cen. Najedź kursorem na skorygowaną cenę, aby porównać ją z ceną katalogową dostawcy.

Konfiguruj trasy punktów końcowych dla niestandardowego dostawcy

Trasy punktu końcowego są opcjonalne. Używaj ich, gdy niestandardowy dostawca hostuje różne modele na różnych ścieżkach pod tym samym base_url. Model może obsługiwać wiele typów API. Każdy model ma jedną ścieżkę endpointu współdzieloną przez obsługiwane typy API.

Aby skonfigurować trasę, ustaw endpoint_route w elemencie docelowym na ścieżkę względną, a nie pełny adres URL. Unity Gateway dodaje trasę do końca base_url, po dowolnej ścieżce, którą base_url już zawiera.

interfejs użytkownika

  1. Otwórz okno dialogowe „Utwórz usługę dostawcy modelu”, jak opisano w sekcji „Utwórz usługę dostawcy modelu”, i wybierz Własne w sekcji Dostawca.
  2. W sekcji Models wpisz nazwę modelu, wybierz API types, które model obsługuje, i wpisz ścieżkę względną w polu Endpoint route (optional).
  3. Kliknij Dodaj model. Powtarzaj dla każdego modelu.
  4. Kliknij pozycję Utwórz.

interfejs API REST

Poniższe żądanie konfiguruje oddzielne trasy dla modelu czatu i modelu osadzania:

databricks api post \
  "/api/2.1/unity-catalog/model-provider-services?parent=schemas/main.default&model_provider_service_id=my_provider" \
  --json '{
  "config": {
    "provider_type": "EXTERNAL_MODEL_PROVIDER_TYPE_CUSTOM",
    "targets": [
      {
        "model": "chat-model",
        "native_api_types": ["openai/v1/chat/completions"],
        "endpoint_route": "serve/openai/chat"
      },
      {
        "model": "embedding-model",
        "native_api_types": ["openai/v1/embeddings"],
        "endpoint_route": "serve/openai/embed"
      }
    ],
    "custom": {
      "direct": {
        "base_url": "https://api.example.com/gateway",
        "api_key": { "plaintext": "placeholder-api-key" }
      }
    }
  }
}'

W związku z tym base_url, żądania używają następujących adresów URL upstream:

  • chat-model: https://api.example.com/gateway/serve/openai/chat
  • embedding-model: https://api.example.com/gateway/serve/openai/embed

Jeśli pominiesz endpoint_route lub ustawisz je jako pusty ciąg, Unity Gateway używa base_url bez zmian.

native_api_types wybiera tłumaczenie API dla każdego modelu. Nie wybiera ani nie zmienia trasy nadrzędnej.

Zaktualizuj usługę dostawcy modeli

Musisz być właścicielem lub mieć MANAGE. Typ dostawcy jest niezmienny.

interfejs użytkownika

Edytuj konfigurację usługi dostawcy modeli z interfejsu Unity Gateway lub Eksploratora katalogu. Zmiany są stosowane na miejscu.

interfejs API REST

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

Edytuj databricks_ai_gateway_model_provider_service (lub dowolne inne pole modyfikowalne) w zasobie comment i zastosuj ponownie. Zmiany są stosowane na miejscu.

DAB-y (Beta)

Edytuj comment (lub dowolne inne pole zmienne) w zasobach pakietu i uruchom databricks bundle deploy. Zmiany są stosowane na miejscu.

Zestaw SDK dla języka Python

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"
    ),
)

Zestaw SDK dla języka Go

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",
		},
	})

Go Modular SDK

mask, err := types.NewFieldMask[aigateway.ModelProviderService]("comment")
updated, err := c.UpdateModelProviderService(ctx,
	aigateway.UpdateModelProviderServiceRequest{
		ModelProviderService: &aigateway.ModelProviderService{
			Name:    ptr("model-provider-services/main.default.my_provider"),
			Comment: ptr("Updated: routes to a custom provider"),
		},
		UpdateMask: mask,
	})

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 Modular 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'),
});

Usuwanie usługi dostawcy modelu

Musisz być właścicielem lub mieć MANAGE.

interfejs użytkownika

Otwórz usługę dostawcy modelu w interfejsie Unity Gateway lub Eksploratorze katalogu i wybierz Usuń w menu kebabu.

interfejs API REST

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

Uruchom terraform destroy, albo usuń blok zasobów i zastosuj ponownie.

DAB-y (Beta)

Usuń zasób z pakietu i uruchom databricks bundle deploy, aby go usunąć. databricks bundle destroy Też działa, ale usuwa wszystkie zasoby zarządzane przez pakiet, nie tylko ten.

Zestaw SDK dla języka Python

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

Zestaw SDK dla języka Go

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

Go Modular SDK

err := c.DeleteModelProviderService(ctx,
	aigateway.DeleteModelProviderServiceRequest{
		Name: ptr("model-provider-services/main.default.my_provider"),
	})

Java SDK

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

JS Modular SDK

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

Następne kroki