Tworzenie i zarządzanie modelowymi API (usługi modelowe)

Twórz, udostępniaj i zarządzaj własnymi API modelu (usługami modelowymi) w Unity Catalog.

Wskazówka

Interfejsy API modeli dostarczane przez system w schemacie system.ai są gotowe do wykonywania zapytań bez żadnej konfiguracji. Stwórz własne API modelu tylko wtedy, gdy chcesz zarządzać dodatkowymi modelami lub udostępnić niestandardowy punkt końcowy.

Requirements

  • Obszar roboczy usługi Azure Databricks w regionie obsługiwanym przez Unity Gateway.
  • Katalog Unity włączony dla obszaru roboczego. Zobacz Umożliwienie obszaru roboczego dla Unity Catalog.
  • Aby utworzyć usługę modelową, musisz mieć:
    • USE CATALOG, USE SCHEMA i CREATE SERVICE w katalogu i schemacie, w którym tworzysz usługę modelu.
    • EXECUTE dla każdego modelu, do którego usługa modeli odwołuje się jako do miejsca docelowego.
    • EXECUTE, USE CATALOG oraz USE SCHEMA w każdej usłudze dostawcy modeli, do której odwołuje się usługa modelu jako do miejsca docelowego.
    • USE CATALOG, USE SCHEMA i CREATE TABLE w katalogu i schemacie, w których tworzona jest tabela inferencji, jeśli włączysz rejestrowanie inferencji.

Utwórz usługę modelu

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

Usługi modeli i usługi dostawców modeli współdzielą wspólną przestrzeń nazw w schemacie Unity Catalog. Nie można użyć nazwy usługi modelowej, jeśli taka nazwa jest już używana przez usługę dostawcy modelu w schemacie, i odwrotnie.

interfejs użytkownika

  1. Wykonaj jedną z następujących czynności:
    • Na pasku bocznym obszaru roboczego kliknij pozycję Brama sztucznej inteligencji, a następnie kliknij pozycję Utwórz.
    • W Eksploratorze wykazu przejdź do schematu, w którym chcesz utworzyć usługę modelową, a następnie kliknij Utwórz>Usługa>Usługa modelowa.
  2. Wprowadź nazwę usługi modelu, a następnie wybierz katalog i schemat, w którym ma zostać utworzona. Jeśli zaczniesz od Eksploratora wykazu, Eksplorator wykazu wstępnie wypełnia wykaz i schemat.
  3. Wybierz główne miejsce do obsługi. Miejscem docelowym może być model hostowany przez Databricks, do którego masz EXECUTE i który może być obsługiwany przez Unity Gateway, albo usługa dostawcy modeli, do której masz EXECUTE, USE CATALOG i USE SCHEMA.
  4. Kliknij pozycję Utwórz.

Po utworzeniu usługi modelu Azure Databricks otworzy stronę przeglądu, na której można rozpocząć lub skonfigurować dodatkowe funkcje, takie jak rejestrowanie wnioskowania.

interfejs API REST

Wyślij POST do /api/2.1/unity-catalog/model-services, przekazując parent i model_service_id jako parametry zapytania. Konfiguracja routingu musi mieć co najmniej jedno miejsce docelowe:

databricks api post \
  "/api/2.1/unity-catalog/model-services?parent=schemas/main.default&model_service_id=my_model_service" \
  --json '{
  "comment": "Routes chat traffic to a foundation model",
  "config": {
    "routing": {
      "destinations": [
        {
          "name": "primary",
          "destination_type": "DESTINATION_TYPE_PAY_PER_TOKEN_FOUNDATION_MODEL",
          "pay_per_token_config": { "model": "models/system.ai.databricks-gpt-5" },
          "traffic_percentage": 100
        }
      ]
    }
  }
}'

CLI

Przekaż schemat nadrzędny i nazwę liścia, a konfigurację podaj za pomocą --json. Konfiguracja routingu musi mieć przynajmniej jedno miejsce docelowe. Aby zainstalować interfejs wiersza polecenia CLI, zobacz Instalowanie lub aktualizowanie interfejsu Databricks CLI.

databricks ai-gateway create-model-service schemas/main.default my_model_service --json '{
  "comment": "Routes chat traffic to a foundation model",
  "config": {
    "routing": {
      "destinations": [
        {
          "name": "primary",
          "destination_type": "DESTINATION_TYPE_PAY_PER_TOKEN_FOUNDATION_MODEL",
          "pay_per_token_config": { "model": "models/system.ai.databricks-gpt-5" },
          "traffic_percentage": 100
        }
      ]
    }
  }
}'

Terraform

Stwórz i zarządzaj usługą modelową z dostawcą Databricks Terraform oraz zasobem databricks_ai_gateway_model_service :

resource "databricks_ai_gateway_model_service" "example" {
  parent           = "schemas/main.default"
  model_service_id = "my_model_service"
  comment          = "Routes chat traffic to a foundation model"

  config = {
    routing = {
      destinations = [{
        name                 = "primary"
        destination_type     = "DESTINATION_TYPE_PAY_PER_TOKEN_FOUNDATION_MODEL"
        pay_per_token_config = { model = "models/system.ai.databricks-gpt-5" }
        traffic_percentage   = 100
      }]
    }
  }
}

DABs (Beta)

Zdefiniuj usługę modelową w bundlu i wdroż ją za pomocą databricks bundle deploy. Konfiguracja routingu musi mieć co najmniej jedno miejsce docelowe:

resources:
  model_services:
    my_model_service:
      parent: schemas/main.default
      model_service_id: my_model_service
      comment: Routes chat traffic to a foundation model
      config:
        routing:
          destinations:
            - name: primary
              destination_type: DESTINATION_TYPE_PAY_PER_TOKEN_FOUNDATION_MODEL
              pay_per_token_config:
                model: models/system.ai.databricks-gpt-5
              traffic_percentage: 100

Zestaw SDK dla języka Python

Stwórz i zarządzaj usługą modelu za pomocą Databricks SDK dla Pythona:

from databricks.sdk.service import catalog as c

model_service = w.ai_gateway.create_model_service(
    parent="schemas/main.default",
    model_service_id="my_model_service",
    model_service=c.ModelService(
        comment="Routes chat traffic to a foundation model",
        config=c.ModelServiceConfig(
            routing=c.ModelServiceConfigRoutingConfig(
                destinations=[
                    c.ModelServiceConfigDestinationConfig(
                        name="primary",
                        destination_type=(
                            c.ModelServiceConfigDestinationConfigDestinationType
                            .DESTINATION_TYPE_PAY_PER_TOKEN_FOUNDATION_MODEL
                        ),
                        pay_per_token_config=c.ModelServiceConfigPayPerTokenConfig(
                            model="models/system.ai.databricks-gpt-5"
                        ),
                        traffic_percentage=100,
                    )
                ]
            )
        ),
    ),
)

Zestaw SDK dla języka Go

Utwórz usługę modelową i zarządzaj nią za pomocą Databricks SDK for Go:

modelService, err := w.AiGateway.CreateModelService(ctx, catalog.CreateModelServiceRequest{
	Parent:         "schemas/main.default",
	ModelServiceId: "my_model_service",
	ModelService: catalog.ModelService{
		Comment: "Routes chat traffic to a foundation model",
		Config: &catalog.ModelServiceConfig{
			Routing: &catalog.ModelServiceConfigRoutingConfig{
				Destinations: []catalog.ModelServiceConfigDestinationConfig{{
					Name:            "primary",
					DestinationType: catalog.ModelServiceConfigDestinationConfigDestinationTypeDestinationTypePayPerTokenFoundationModel,
					PayPerTokenConfig: &catalog.ModelServiceConfigPayPerTokenConfig{
						Model: "models/system.ai.databricks-gpt-5",
					},
					TrafficPercentage: 100,
				}},
			},
		},
	},
})

Java SDK

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

ModelServiceConfig config =
    new ModelServiceConfig()
        .setRouting(
            new ModelServiceConfigRoutingConfig()
                .setDestinations(
                    Collections.singletonList(
                        new ModelServiceConfigDestinationConfig()
                            .setName("primary")
                            .setDestinationType(
                                ModelServiceConfigDestinationConfigDestinationType
                                    .DESTINATION_TYPE_PAY_PER_TOKEN_FOUNDATION_MODEL)
                            .setPayPerTokenConfig(
                                new ModelServiceConfigPayPerTokenConfig()
                                    .setModel("models/system.ai.databricks-gpt-5"))
                            .setTrafficPercentage(100L))));

ModelService modelService =
    w.aiGateway()
        .createModelService(
            new CreateModelServiceRequest()
                .setParent("schemas/main.default")
                .setModelServiceId("my_model_service")
                .setModelService(
                    new ModelService()
                        .setComment("Routes chat traffic to a foundation model")
                        .setConfig(config)));

JS SDK

Stwórz i zarządzaj usługą modelu za pomocą Databricks AI Gateway SDK dla JavaScript:

import { ModelServiceConfig_DestinationConfig_DestinationType as DestType } from '@databricks/sdk-aigateway/v1';

const created = await client.createModelService({
  parent: 'schemas/main.default',
  modelServiceId: 'my_model_service',
  modelService: {
    comment: 'Routes chat traffic to a foundation model',
    config: {
      routing: {
        destinations: [
          {
            name: 'primary',
            destinationType: DestType.DESTINATION_TYPE_PAY_PER_TOKEN_FOUNDATION_MODEL,
            typeConfig: {
              $case: 'payPerTokenConfig',
              payPerTokenConfig: { model: 'models/system.ai.databricks-gpt-5' },
            },
            trafficPercentage: 100,
          },
        ],
      },
    },
  },
});

Przyznaj dostęp do usługi modelowej

Domyślnie tylko właściciel usługi modelu może wysyłać do niej zapytania. Aby umożliwić innym wysyłanie zapytań do usługi modelu, przyznaj im uprawnienie EXECUTE do niej, a także USE CATALOG i USE SCHEMA do jej katalogu i schematu. Jeśli usługa modelu zapisuje logi w tabeli inferencji, przyznaj SELECT do tabeli, aby umożliwić odczytywanie zarejestrowanych żądań i odpowiedzi.

interfejs użytkownika

  1. Otwórz usługę modelu w Eksploratorze katalogu lub przejdź do AI 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_service/main.default.my_model_service" \
  --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_service main.default.my_model_service \
  --json '{"changes": [{"principal": "data-team", "add": ["EXECUTE"]}]}'

Terraform

Grant EXECUTE z dostawcą Databricks Terraform i zasobem databricks_grant :

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

DAB (Beta)

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

resources:
  model_services:
    my_model_service:
      parent: schemas/main.default
      model_service_id: my_model_service
      comment: Routes chat traffic to a foundation model
      config:
        routing:
          destinations:
            - name: primary
              destination_type: DESTINATION_TYPE_PAY_PER_TOKEN_FOUNDATION_MODEL
              pay_per_token_config:
                model: models/system.ai.databricks-gpt-5
              traffic_percentage: 100
      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_service",
    full_name="main.default.my_model_service",
    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_service",
	FullName:      "main.default.my_model_service",
	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_service")
        .setFullName("main.default.my_model_service")
        .setChanges(Arrays.asList(
            new PermissionsChange().setPrincipal("data-team").setAdd(Arrays.asList(Privilege.EXECUTE)))));

Więcej informacji na temat przyznawania dostępu i uzyskiwania informacji o nim znajdziesz w artykule Odnajdywanie i zarządzanie dostępem do interfejsów API modeli (usługi modeli).

Skonfiguruj funkcje w usłudze modelu

Konfigurujesz funkcje, takie jak limity liczby żądań, rejestrowanie inferencji i mechanizmy ochronne, dla usługi modelu w interfejsie Unity Gateway, tak samo jak konfigurujesz je w punkcie końcowym Unity Gateway. Zobacz:

Logowanie wnioskowania

Po włączeniu rejestrowania inferencji usługa Azure Databricks utworzy nową, pustą tabelę Unity Catalog ze wstępnie zdefiniowanym schematem w lokalizacji, którą określisz. Należy zwrócić uwagę na następujące kwestie:

  • Musisz mieć USE CATALOG, USE SCHEMA i CREATE TABLE w katalogu docelowym i schemacie.
  • Twórcą usługi modelu jest właściciel tabeli wnioskowania. Żaden inny użytkownik nie ma dostępu, chyba że przyznasz mu dostęp.
  • Jeśli tabela już istnieje w określonej lokalizacji, tworzenie usługi modelu zakończy się niepowodzeniem.
  • Tabela inferencyjna ma cykl życia niezależny od usługi modelu. Jeśli usuniesz tabelę, usługa modelowa nadal działa, ale przestaje rejestrować.

Więcej o tabelach wnioskowania można znaleźć w artykule Dzienniki zapytań i odpowiedzi na tabele wnioskowania.

Zaktualizuj usługę modelu

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

interfejs użytkownika

Edycja konfiguracji usługi modelowej z interfejsu Unity Gateway lub Catalog Explorer. Zmiany są stosowane na miejscu.

interfejs API REST

databricks api patch \
  "/api/2.1/unity-catalog/model-services/main.default.my_model_service?update_mask=comment" \
  --json '{"comment": "Updated: routes chat traffic"}'

CLI

databricks ai-gateway update-model-service model-services/main.default.my_model_service comment \
  --json '{"comment": "Updated: routes chat traffic"}'

Terraform

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

DABs (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_service(
    name="model-services/main.default.my_model_service",
    update_mask=FieldMask(paths=["comment"]),
    model_service=c.ModelService(comment="Updated: routes chat traffic"),
)

Zestaw SDK dla języka Go

updated, err := w.AiGateway.UpdateModelService(ctx, catalog.UpdateModelServiceRequest{
	Name:         "model-services/main.default.my_model_service",
	UpdateMask:   *fieldmask.New([]string{"comment"}),
	ModelService: catalog.ModelService{Comment: "Updated: routes chat traffic"},
})

Java SDK

ModelService updated =
    w.aiGateway()
        .updateModelService(
            new UpdateModelServiceRequest()
                .setName("model-services/main.default.my_model_service")
                .setUpdateMask(FieldMask.newBuilder().addPaths("comment").build())
                .setModelService(
                    new ModelService().setComment("Updated: routes chat traffic")));

JS SDK

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

const updated = await client.updateModelService({
  modelService: {
    name: 'model-services/main.default.my_model_service',
    comment: 'Updated: routes chat traffic',
  },
  updateMask: modelServiceFieldMask('comment'),
});

Usuń usługę modelową

Musisz być właścicielem lub mieć MANAGE. Nie można usunąć usług modelu dostarczanych przez system w system.ai.

interfejs użytkownika

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

interfejs API REST

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

CLI

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

Terraform

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

DABs (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_service(name="model-services/main.default.my_model_service")

Zestaw SDK dla języka Go

err := w.AiGateway.DeleteModelService(ctx, catalog.DeleteModelServiceRequest{
	Name: "model-services/main.default.my_model_service",
})

Java SDK

w.aiGateway()
    .deleteModelService(
        new DeleteModelServiceRequest().setName("model-services/main.default.my_model_service"));

JS SDK

await client.deleteModelService({ name: 'model-services/main.default.my_model_service' });

Następne kroki