Skip to content

feat: add Databricks model provider - #20

Open
calvinmclean wants to merge 11 commits into
obot-platform:mainfrom
calvinmclean:feat/databricks-model-provider
Open

calvinmclean wants to merge 11 commits into
obot-platform:mainfrom
calvinmclean:feat/databricks-model-provider

Conversation

@calvinmclean

@calvinmclean calvinmclean commented Sep 14, 2026

Copy link
Copy Markdown
Member

Summary

  • add a Databricks model-provider daemon and registry manifest
  • discover ready Databricks-hosted chat endpoints through the serving-endpoints API with bearer authentication, accepting workspace hosts with or without an explicit HTTPS scheme
  • expose only models whose traffic-receiving entities share a supported Responses API dialect, preferring OpenAIResponses when both dialects are available

Addresses obot-platform/field-issues#61

@calvinmclean
calvinmclean marked this pull request as ready for review September 17, 2026 16:12

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The provider lacks inference forwarding and does not retrieve detailed traffic configuration before filtering endpoints.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds Databricks-hosted model discovery and provider registration.

Changes:

  • Adds authenticated serving-endpoint discovery and dialect filtering.
  • Adds provider configuration and packaging integration.
  • Adds URL, discovery, filtering, and handler tests.
File summaries
File Description
model-providers/databricks-model-provider.yaml Registers the Databricks provider and configuration.
Makefile Includes Databricks tests.
databricks-model-provider/server.go Implements discovery and HTTP serving.
databricks-model-provider/server_test.go Tests discovery and filtering behavior.
databricks-model-provider/main.go Configures validation and daemon startup.
databricks-model-provider/go.mod Defines the Go module.
Review details
  • Files reviewed: 6/6 changed files
  • Comments generated: 2
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread databricks-model-provider/server.go
Comment thread databricks-model-provider/server.go

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Model discovery currently omits eligible endpoints returned on later API pages.

Get a fresh assessment by requesting another Copilot review.

Review details

Suppressed comments (3)

databricks-model-provider/server.go:223

  • Dialect selection currently intersects every configured served entity, rather than only traffic-receiving entities as the PR describes. Databricks exposes active routes under traffic_config.routes with served_entity_name/served_model_name and traffic_percentage; therefore a stale or canary entity receiving 0% traffic can incorrectly hide an otherwise compatible endpoint (or change its selected dialect). Parse the traffic configuration and restrict this intersection to routes with positive traffic, with an explicit fallback for responses that omit routing metadata.
	for _, entity := range config.ServedEntities {
		supported := entity.responseDialects()

databricks-model-provider/server.go:226

  • This intersection is computed over every configured served entity, but a Databricks endpoint can route traffic to only a subset via config.traffic_config.routes. An inactive/canary entity without a Responses API dialect will therefore make common empty and hide an otherwise usable endpoint, while a non-traffic entity can also affect the selected dialect. Resolve route targets and compute the dialect only from entities receiving traffic, with a fallback for responses that omit routing metadata.
	for _, entity := range config.ServedEntities {
		supported := entity.responseDialects()
		for dialect := range common {
			if !supported[dialect] {
				delete(common, dialect)

databricks-model-provider/server.go:226

  • This intersection currently includes every entry in served_entities, but Databricks can retain entities that receive 0% traffic. An endpoint with an active entity supporting Responses and an inactive entity without it will therefore be hidden even though all traffic-receiving entities share a supported dialect. Parse config.traffic_config.routes and intersect only the entities referenced by those routes (and use that same active set for model metadata).
	for _, entity := range config.ServedEntities {
		supported := entity.responseDialects()
		for dialect := range common {
			if !supported[dialect] {
				delete(common, dialect)
  • Files reviewed: 8/8 changed files
  • Comments generated: 1
  • Review effort level: Balanced

Comment thread databricks-model-provider/server.go
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants