Skip to content

Feature Request: Model Serving Endpoint support in Python DABs #4397

Description

@yarri-bryn-cla

Describe the issue

Model Serving Endpoints can currently be defined in conventional Databricks Asset Bundles (YAML-based), but cannot be defined or managed using Python bundles (pyDABs). It is desirable to manage Mosaic AI Gateway & External Model endpoint configurations programmatically, as YAML-only configurations tend to get quite verbose.

The OpenAPI schema for model serving isn't immediately compatible for databricks-bundles packages' codegen because:

  • Enum values containing dashes (e.g. amazon-bedrock) don't presently resolve to valid Python variables.
  • Related model serving types being split across adjacent namespaces (model_serving_endpoints and serving), making the Python API inconsistent with existing usage patterns.

Configuration

This, or a derivative thereof (e.g. resources.add_model_serving_endpoint) are desired:

from databricks.bundles.model_serving_endpoints import ModelServingEndpoint

endpoint = ModelServingEndpoint(
    name="my-endpoint",
    config={
        "served_models": [...],
        "endpoint_tags": [...],
        "provider": "openai",
    },
)

Desired Behavior

  • Model Serving Endpoints can be defined and managed in Python bundles
  • Enums with dashes (e.g. amazon-bedrock) resolve correctly in Python
  • Model serving–related types (e.g. EndpointTag) are accessible from a consistent namespace aligned with the existing API
  • Users can configure Model Serving Endpoints programmatically (e.g. using OmegaConf) across environments
  • Ability to manage Databricks Hosted LLM endpoints in DAB, e.g. AI Gateway config of Databricks GPT 5.2

Actual Behavior

  • Model Serving Endpoints are only supported via YAML in conventional DABs
  • Python bundles lack a ModelServingEndpoint resource
  • Enum values with dashes cause issues in existing Python codegen if model serving namespaces are naively added
  • Model serving types are fragmented across namespaces, making the API awkward to use without changes

Proposed solution (high level)

  • Add a ModelServingEndpoint resource to Python bundles
  • Update Python codegen to handle enum values containing dashes
  • Provide cross-namespace re-exports for model serving types so related APIs are accessible under a consistent namespace
  • Align Python bundle support with existing YAML-based DAB functionality
  • Enable limited attribute management of Databricks Hosted LLM endpoints via DABs/PyDABs

Context

I initially submitted the below solution as a PR, and on request am redirecting to Issue. I currently manage Microsoft AI Foundry serving endpoints in our Azure Databricks workspaces using this implementation:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions