API zapytywania modeli (usługi modelowe)

Użyj Unity Gateway do wysyłania zapytań do usług modeli w Unity Catalog za pomocą interfejsów API modeli Azure Databricks, przy użyciu zestawu SDK zgodnego z OpenAI, natywnych interfejsów API dostawców lub języka SQL.

Note

Gdy usługa modelu kieruje żądania do miejsca docelowego usługi dostawcy modeli, obowiązują tylko funkcje Unity Gateway tej usługi (takie jak limity szybkości żądań, mechanizmy ochronne, tabele inferencji i mechanizmy awaryjne). Wszelkie funkcje Unity Gateway skonfigurowane w samej usłudze dostawcy modeli są pomijane.

Zacznij zapytywać API modeli

Zapytaj API modelu w dwóch krokach:

Krok 1: Wybierz gotowe do użycia API modelu

Azure Databricks udostępnia gotowe do użycia API modeli w schemaciesystem.ai, takie jak system.ai.claude-sonnet-4-5 i system.ai.gpt-5-6-sol. Są one dostępne od razu bez dodatkowego przygotowania.

Krok 2: Wyślij żądanie za pomocą zunifikowanego API kompatybilnego z OpenAI

Użyj MLflow Chat Completions API z OpenAI Python SDK:

from openai import OpenAI
import os

DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')

client = OpenAI(
  api_key=DATABRICKS_TOKEN,  # your personal access token
  base_url="https://<workspace-url>/ai-gateway/mlflow/v1"  # your Databricks workspace instance
)

chat_completion = client.chat.completions.create(
  messages=[
    {"role": "user", "content": "What is Databricks?"},
  ],
  model="system.ai.claude-sonnet-4-5",
  max_tokens=256
)

print(chat_completion.choices[0].message.content)

Inne opcje znajdziesz w artykule Rozpoczęcie zapytań do LLM na Databricks.

Requirements

Obsługiwane interfejsy API i integracje

Unity Gateway obsługuje następujące API i integracje:

Wykonywanie zapytań dotyczących usług modelu za pomocą ujednoliconych interfejsów API

Ujednolicone interfejsy API oferują interfejs zgodny z interfejsem OpenAI do wykonywania zapytań dotyczących modeli w usłudze Azure Databricks. Ujednolicone interfejsy API umożliwiają bezproblemowe przełączanie modeli od różnych dostawców bez konieczności zmieniania kodu.

API uzupełniania czatów MLflow

Interfejs API do uzupełniania czatów MLflow

Python

from openai import OpenAI
import os

DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')

client = OpenAI(
  api_key=DATABRICKS_TOKEN,
  base_url="https://<workspace-url>/ai-gateway/mlflow/v1"
)

chat_completion = client.chat.completions.create(
  messages=[
    {"role": "user", "content": "Hello!"},
    {"role": "assistant", "content": "Hello! How can I assist you today?"},
    {"role": "user", "content": "What is Databricks?"},
  ],
  model="<model-service>",
  max_tokens=256
)

print(chat_completion.choices[0].message.content)

interfejs API REST

curl \
  -u token:$DATABRICKS_TOKEN \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<model-service>",
    "max_tokens": 256,
    "messages": [
      {"role": "user", "content": "Hello!"},
      {"role": "assistant", "content": "Hello! How can I assist you today?"},
      {"role": "user", "content": "What is Databricks?"}
    ]
  }' \
  https://<workspace-url>/ai-gateway/mlflow/v1/chat/completions

Zastąp element <workspace-url> adresem URL obszaru roboczego usługi Azure Databricks, a element <model-service> w pełni kwalifikowaną nazwą usługi modelowej.

Interfejs API osadzania MLflow

Interfejs API osadzania MLflow

Python

from openai import OpenAI
import os

DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')

client = OpenAI(
  api_key=DATABRICKS_TOKEN,
  base_url="https://<workspace-url>/ai-gateway/mlflow/v1"
)

embeddings = client.embeddings.create(
  input="What is Databricks?",
  model="<model-service>"
)

print(embeddings.data[0].embedding)

interfejs API REST

curl \
  -u token:$DATABRICKS_TOKEN \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<model-service>",
    "input": "What is Databricks?"
  }' \
  https://<workspace-url>/ai-gateway/mlflow/v1/embeddings

Zastąp element <workspace-url> adresem URL obszaru roboczego usługi Azure Databricks, a element <model-service> w pełni kwalifikowaną nazwą usługi modelowej.

Interfejs API nadzorcy

Interfejs API Superwizora

API Nadzorcy () to zgodny z protokołem /mlflow/v1/responses, niezależny od dostawcy API do tworzenia agentów w Wersji Beta. Administratorzy przestrzeni roboczej mogą to włączyć ze strony Zapowiedzi . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks. Wybierz najlepszy model przypadku użycia agenta u dostawców bez konieczności zmieniania kodu.

Python

from openai import OpenAI
import os

DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')

client = OpenAI(
  api_key=DATABRICKS_TOKEN,
  base_url="https://<workspace-url>/ai-gateway/mlflow/v1"
)

response = client.responses.create(
  model="<model-service>",
  input=[{"role": "user", "content": "What is Databricks?"}]
)

print(response.output_text)

interfejs API REST

curl \
  -u token:$DATABRICKS_TOKEN \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<model-service>",
    "input": [
      {"role": "user", "content": "What is Databricks?"}
    ]
  }' \
  https://<workspace-url>/ai-gateway/mlflow/v1/responses

Zastąp element <workspace-url> adresem URL obszaru roboczego usługi Azure Databricks, a element <model-service> w pełni kwalifikowaną nazwą usługi modelowej.

Wykonywanie zapytań dotyczących usług modelu za pomocą polecenia ai_query

Możesz użyć tej ai_query funkcji do zapytań o usługi modelu bezpośrednio z SQL lub Python. Dzięki temu można przechwytywać informacje dotyczące śledzenia użycia dla obciążeń wnioskowania wsadowego.

Note

  • ai_querywsparcie dla Unity Gateway jest dostępne tylko dla modeli dostarczonych przez Azure Databricks. Przekaż nazwę usługi modelu system.ai (na przykład system.ai.claude-sonnet-4-5 lub system.ai.gpt-5-6-sol). Usługi modelowe, które tworzysz w Unity Gateway, nie są jeszcze wspierane.
  • Tylko śledzenie użycia dotyczy ai_query obciążeń wnioskowania wsadowego. Inne funkcje Unity Gateway, takie jak limity liczby żądań, zabezpieczenia, tabele inferencji i mechanizmy zapasowe, nie mają zastosowania.

Aby wysłać zapytanie do usługi modelu za pomocą ai_query, uruchom ai_query względem usługi modelu:

SELECT ai_query(
  'system.ai.claude-sonnet-4-5',
  'Summarize the following text: ' || text_column
) AS summary
FROM my_table
LIMIT 10

Tabela systemu śledzenia wykorzystania (system.ai_gateway.usage) rejestruje żądania przesyłane do ai_query usług modelowych. Te żądania pojawiają się również w wbudowanym panelu użycia.

Aby uzyskać pełną ai_query składnię i informacje o parametrach, zobacz ai_query funkcję. Aby poznać najlepsze praktyki i obsługiwane modele, zobacz Korzystanie z ai_query.

Wykonywanie zapytań dotyczących usług modelu za pomocą natywnych interfejsów API

Natywne interfejsy API oferują interfejsy specyficzne dla dostawcy, umożliwiające wykonywanie zapytań do modeli w Azure Databricks. Użyj natywnych interfejsów API, aby uzyskać dostęp do najnowszych funkcji specyficznych dla dostawcy.

Każdy natywny interfejs API działa tylko z usługami modelu, których bazowy model używa zgodnego formatu interfejsu API:

Aby wysłać zapytanie do usługi modelu niezależnie od jej podstawowego modelu, zamiast tego użyj ujednoliconych interfejsów API .

API odpowiedzi OpenAI

API odpowiedzi OpenAI

Python

from openai import OpenAI
import os

DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')

client = OpenAI(
  api_key=DATABRICKS_TOKEN,
  base_url="https://<workspace-url>/ai-gateway/openai/v1"
)

response = client.responses.create(
  model="<model-service>",
  max_output_tokens=256,
  input=[
    {
      "role": "user",
      "content": [{"type": "input_text", "text": "Hello!"}]
    },
    {
      "role": "assistant",
      "content": [{"type": "output_text", "text": "Hello! How can I assist you today?"}]
    },
    {
      "role": "user",
      "content": [{"type": "input_text", "text": "What is Databricks?"}]
    }
  ]
)

print(response.output)

interfejs API REST

curl \
  -u token:$DATABRICKS_TOKEN \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<model-service>",
    "max_output_tokens": 256,
    "input": [
      {
        "role": "user",
        "content": [{"type": "input_text", "text": "Hello!"}]
      },
      {
        "role": "assistant",
        "content": [{"type": "output_text", "text": "Hello! How can I assist you today?"}]
      },
      {
        "role": "user",
        "content": [{"type": "input_text", "text": "What is Databricks?"}]
      }
    ]
  }' \
  https://<workspace-url>/ai-gateway/openai/v1/responses

Zastąp element <workspace-url> adresem URL obszaru roboczego usługi Azure Databricks, a element <model-service> w pełni kwalifikowaną nazwą usługi modelowej.

Interfejs API komunikatów Anthropic

interfejs API komunikatów Anthropic

Python

import anthropic
import os

DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')

client = anthropic.Anthropic(
  api_key="unused",
  base_url="https://<workspace-url>/ai-gateway/anthropic",
  default_headers={
    "Authorization": f"Bearer {DATABRICKS_TOKEN}",
  },
)

message = client.messages.create(
  model="<model-service>",
  max_tokens=256,
  messages=[
    {"role": "user", "content": "Hello!"},
    {"role": "assistant", "content": "Hello! How can I assist you today?"},
    {"role": "user", "content": "What is Databricks?"},
  ],
)

print(message.content[0].text)

interfejs API REST

curl \
  -u token:$DATABRICKS_TOKEN \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<model-service>",
    "max_tokens": 256,
    "messages": [
      {"role": "user", "content": "Hello!"},
      {"role": "assistant", "content": "Hello! How can I assist you today?"},
      {"role": "user", "content": "What is Databricks?"}
    ]
  }' \
  https://<workspace-url>/ai-gateway/anthropic/v1/messages

Zastąp element <workspace-url> adresem URL obszaru roboczego usługi Azure Databricks, a element <model-service> w pełni kwalifikowaną nazwą usługi modelowej.

Google Gemini API

Google Gemini API

Python

from google import genai
from google.genai import types
import os

DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')

client = genai.Client(
  api_key="databricks",
  http_options=types.HttpOptions(
    base_url="https://<workspace-url>/ai-gateway/gemini",
    headers={
      "Authorization": f"Bearer {DATABRICKS_TOKEN}",
    },
  ),
)

response = client.models.generate_content(
  model="<model-service>",
  contents=[
    types.Content(
      role="user",
      parts=[types.Part(text="Hello!")],
    ),
    types.Content(
      role="model",
      parts=[types.Part(text="Hello! How can I assist you today?")],
    ),
    types.Content(
      role="user",
      parts=[types.Part(text="What is Databricks?")],
    ),
  ],
  config=types.GenerateContentConfig(
    max_output_tokens=256,
  ),
)

print(response.text)

interfejs API REST

curl \
  -u token:$DATABRICKS_TOKEN \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [{"text": "Hello!"}]
      },
      {
        "role": "model",
        "parts": [{"text": "Hello! How can I assist you today?"}]
      },
      {
        "role": "user",
        "parts": [{"text": "What is Databricks?"}]
      }
    ],
    "generationConfig": {
      "maxOutputTokens": 256
    }
  }' \
  https://<workspace-url>/ai-gateway/gemini/v1beta/models/<model-service>:generateContent

Zastąp element <workspace-url> adresem URL obszaru roboczego usługi Azure Databricks, a element <model-service> w pełni kwalifikowaną nazwą usługi modelowej.

Tagowanie żądań śledzenia użycia

Niestandardowe tagi klucz-wartość można dołączać do poszczególnych żądań przy użyciu nagłówka Databricks-Ai-Gateway-Request-Tags HTTP. Tagi żądań są rejestrowane w kolumnie request_tags zarówno w tabeli systemowej śledzenia użycia, jak i w tabelach inferencji, co umożliwia śledzenie kosztów, przypisywanie użycia i filtrowanie analiz według projektu, zespołu, środowiska lub dowolnego innego wymiaru.

Wartość nagłówka musi być obiektem JSON mapującym klucze będące ciągami znaków na wartości będące ciągami znaków. Przykład:

{ "project": "chatbot", "team": "ml-platform", "environment": "production" }

Użyj parametru extra_headers (Python) lub przekaż nagłówek bezpośrednio (interfejs API REST), aby dołączyć tagi do żądania:

Python (OpenAI SDK)

from openai import OpenAI
import json
import os

DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')

client = OpenAI(
  api_key=DATABRICKS_TOKEN,
  base_url="https://<workspace-url>/ai-gateway/mlflow/v1"
)

request_tags = {"project": "chatbot", "team": "ml-platform"}

chat_completion = client.chat.completions.create(
  messages=[
    {"role": "user", "content": "What is Databricks?"},
  ],
  model="<model-service>",
  max_tokens=256,
  extra_headers={
    "Databricks-Ai-Gateway-Request-Tags": json.dumps(request_tags)
  }
)

Python (SDK Anthropic)

import anthropic
import json
import os

DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')

request_tags = {"project": "chatbot", "team": "ml-platform"}

client = anthropic.Anthropic(
  api_key="unused",
  base_url="https://<workspace-url>/ai-gateway/anthropic",
  default_headers={
    "Authorization": f"Bearer {DATABRICKS_TOKEN}",
    "Databricks-Ai-Gateway-Request-Tags": json.dumps(request_tags),
  },
)

message = client.messages.create(
  model="<model-service>",
  max_tokens=256,
  messages=[
    {"role": "user", "content": "What is Databricks?"},
  ],
)

interfejs API REST

curl \
  -u token:$DATABRICKS_TOKEN \
  -X POST \
  -H "Content-Type: application/json" \
  -H 'Databricks-Ai-Gateway-Request-Tags: {"project": "chatbot", "team": "ml-platform"}' \
  -d '{
    "model": "<model-service>",
    "max_tokens": 256,
    "messages": [
      {"role": "user", "content": "What is Databricks?"}
    ]
  }' \
  https://<workspace-url>/ai-gateway/mlflow/v1/chat/completions

Zastąp element <workspace-url> adresem URL obszaru roboczego usługi Azure Databricks, a element <model-service> w pełni kwalifikowaną nazwą usługi modelowej.

Następne kroki