Azure Databricks'te dağıtılmış bir aracıyı sorgulama

Databricks Uygulamalarına veya Model Sunma uç noktalarına dağıtılan aracılara istek göndermeyi öğrenin. Databricks, farklı kullanım örneklerine ve tümleştirme gereksinimlerine uyacak birden çok sorgu yöntemi sağlar.

Kullanım örneğiniz için en uygun sorgu yaklaşımını seçin:

Yöntemi Önemli avantajlar
Databricks OpenAI İstemcisi (Önerilen) Yerel tümleştirme, tam özellik desteği, akış özellikleri
REST API OpenAI uyumlu, dil belirsiz, mevcut araçlarla çalışır
AI İşlevleri: ai_query Yalnızca Model Sunma uç noktaları üzerinde barındırılan OpenAI uyumlu, sorgu eski aracıları

Databricks, yeni uygulamalar için Databricks OpenAI İstemcisi'ni önerir. OpenAI uyumlu uç noktaları bekleyen platformlarla tümleştirme yaparken REST API'yi seçin.

Databricks, dağıtılan aracıyı sorgulamak için DatabricksOpenAI İstemcisi'ni kullanmanızı önerir. Dağıtılan aracınızın API'sine bağlı olarak yanıtları veya sohbet tamamlama istemcisini kullanacaksınız:

Uygulamalara dağıtılan aracılar

Aracılar oluşturmak için önerilen yaklaşım olan arabirimi kullanan Databricks Uygulamalarında barındırılan aracılar için aşağıdaki örneği kullanın. Databricks Uygulamalarında barındırılan aracıları sorgulamak için Databricks OAuth belirteci kullanmanız gerekir.

from databricks.sdk import WorkspaceClient
from databricks_openai import DatabricksOpenAI

input_msgs = [{"role": "user", "content": "What does Databricks do?"}]
app_name = "<agent-app-name>"  # TODO: update this with your app name

# The WorkspaceClient must be configured with OAuth authentication
# See: https://docs.databricks.com/aws/en/dev-tools/auth/oauth-u2m.html
w = WorkspaceClient()

client = DatabricksOpenAI(workspace_client=w)

# Run for non-streaming responses. Calls the "invoke" method
# Include the "apps/" prefix in the model name
response = client.responses.create(model=f"apps/{app_name}", input=input_msgs)
print(response)

# Include stream=True for streaming responses. Calls the "stream" method
# Include the "apps/" prefix in the model name
streaming_response = client.responses.create(
    model=f"apps/{app_name}", input=input_msgs, stream=True
)
for chunk in streaming_response:
    print(chunk)

custom_inputs tan geçmek istiyorsanız, bunları extra_body parametresiyle ekleyebilirsiniz.

streaming_response = client.responses.create(
    model=f"apps/{app_name}",
    input=input_msgs,
    stream=True,
    extra_body={
        "custom_inputs": {"id": 5},
    },
)
for chunk in streaming_response:
    print(chunk)

Yanıttan bir izleme kimliği almak için x-mlflow-return-trace-id üst bilgiyi extra_headers kullanarak ekleyin. Ardından tam izlemeyi almak için MLflow get_trace kullanın.

response = client.responses.create(
    model=f"apps/{app_name}",
    input=input_msgs,
    extra_headers={"x-mlflow-return-trace-id": "true"},
)
trace_id = response.metadata["trace_id"]
trace = client.get_trace(trace_id)

Model Sunumu Üzerine Aracılar

Model Sunma'da barındırılan eski ajanlar için ResponsesAgent arabirimini takip ederek aşağıdaki örneği kullanın. Model Sunma'da barındırılan aracıları sorgulamak için Databricks OAuth belirteci veya Kişisel Erişim Belirteci (PAT) kullanabilirsiniz.

from databricks_openai import DatabricksOpenAI

input_msgs = [{"role": "user", "content": "What does Databricks do?"}]
endpoint = "<agent-endpoint-name>" # TODO: update this with your endpoint name

client = DatabricksOpenAI()

# Run for non-streaming responses. Invokes `predict`
response = client.responses.create(model=endpoint, input=input_msgs)
print(response)

# Include stream=True for streaming responses. Invokes `predict_stream`
streaming_response = client.responses.create(model=endpoint, input=input_msgs, stream=True)
for chunk in streaming_response:
  print(chunk)

Eğer custom_inputs veya databricks_options kullanarak geçmek istiyorsanız, bunları extra_body parametresi ile ekleyebilirsiniz.

streaming_response = client.responses.create(
    model=endpoint,
    input=input_msgs,
    stream=True,
    extra_body={
        "custom_inputs": {"id": 5},
        "databricks_options": {"return_trace": True},
    },
)
for chunk in streaming_response:
    print(chunk)

ChatAgent veya ChatModel arabirimlerini takip eden modeldeki eski aracılar için aşağıdaki örneği kullanın.

from databricks.sdk import WorkspaceClient

messages = [{"role": "user", "content": "What does Databricks do?"}]
endpoint = "<agent-endpoint-name>" # TODO: update this with your endpoint name

ws_client = WorkspaceClient()
client = ws_client.serving_endpoints.get_open_ai_client()

# Run for non-streaming responses. Invokes `predict`
response = client.chat.completions.create(model=endpoint, messages=messages)
print(response)

# Include stream=True for streaming responses. Invokes `predict_stream`
streaming_response = client.chat.completions.create(model=endpoint, messages=messages, stream=True)
for chunk in streaming_response:
  print(chunk)

Eğer custom_inputs veya databricks_options kullanarak geçmek istiyorsanız, bunları extra_body parametresi ile ekleyebilirsiniz.

streaming_response = client.chat.completions.create(
    model=endpoint,
    messages=messages,
    stream=True,
    extra_body={
        "custom_inputs": {"id": 5},
        "databricks_options": {"return_trace": True},
    },
)
for chunk in streaming_response:
    print(chunk)

REST API

Databricks REST API, OpenAI uyumlu modeller için uç noktalar sağlar. Bu, OpenAI arabirimleri gerektiren uygulamalara hizmet vermek için Databricks aracılarını kullanmanıza olanak tanır.

Bu yaklaşım aşağıdakiler için idealdir:

  • HTTP isteklerini kullanan dilden bağımsız uygulamalar
  • OpenAI ile uyumlu olan API’leri bekleyen üçüncü taraf platformlarla entegrasyon.
  • En az kod değişikliğiyle OpenAI'den Databricks'e geçiş

Databricks OAuth belirteci kullanarak REST API ile kimlik doğrulaması yapın. Daha fazla seçenek ve bilgi için Databricks Kimlik Doğrulama Belgeleri'ne bakın.

Uygulamalara dağıtılan aracılar

Aracılar oluşturmak için önerilen yaklaşım olan arabirimi kullanan Databricks Uygulamalarında barındırılan aracılar için aşağıdaki örneği kullanın. Databricks Uygulamalarında barındırılan aracıları sorgulamak için Databricks OAuth belirteci kullanmanız gerekir.

curl --request POST \
  --url <app-url>.databricksapps.com/responses \
  --header 'Authorization: Bearer <OAuth token>' \
  --header 'content-type: application/json' \
  --data '{
    "input": [{ "role": "user", "content": "hi" }],
    "stream": true
  }'

geçirmek custom_inputsistiyorsanız, bunları istek gövdesine ekleyebilirsiniz:

curl --request POST \
  --url <app-url>.databricksapps.com/responses \
  --header 'Authorization: Bearer <OAuth token>' \
  --header 'content-type: application/json' \
  --data '{
    "input": [{ "role": "user", "content": "hi" }],
    "stream": true,
    "custom_inputs": { "id": 5 }
  }'

Yanıttan bir izleme kimliği almak için isteğinize üst bilgiyi ekleyin x-mlflow-return-trace-id . Yanıt gövdesi, izleme kimliğini içeren bir metadata.trace_id alan içerir. Akış istekleri için izleme kimliği akışın sonuna yakın bir ayrı SSE olayı (data: {"trace_id": "tr-..."}) olarak gönderilir. Ardından, izleme kimliğini kullanarak tam izlemeyi almak için MLflow get_trace kullanın.

curl --request POST \
  --url <app-url>.databricksapps.com/responses \
  --header 'Authorization: Bearer <OAuth token>' \
  --header 'content-type: application/json' \
  --header 'x-mlflow-return-trace-id: true' \
  --data '{
    "input": [{ "role": "user", "content": "hi" }]
  }'

Model Sunumu Üzerine Aracılar

Model Sunma'da barındırılan eski ajanlar için ResponsesAgent arabirimini takip ederek aşağıdaki örneği kullanın. Model Sunma'da barındırılan aracıları sorgulamak için Databricks OAuth belirteci veya Kişisel Erişim Belirteci (PAT) kullanabilirsiniz. REST API çağrısı aşağıdakilere eşdeğerdir:

  • ile responses.createDatabricks OpenAI İstemcisini kullanma.
  • Belirli bir uç noktanın URL'sine post isteği gönderme (örn: https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations). Daha fazla bilgi için uç noktanızın Model Sunma sayfasına ve Model Sunma Belgeleri'ne bakın.
curl --request POST \
  --url https://<host.databricks.com\>/serving-endpoints/responses \
  --header 'Authorization: Bearer <OAuth token>' \
  --header 'content-type: application/json' \
  --data '{
    "model": "\<model-name\>",
    "input": [{ "role": "user", "content": "hi" }],
    "stream": true
  }'

custom_inputs veya databricks_options'yi geçirmek istiyorsanız, bunları istek gövdesine ekleyebilirsiniz:

curl --request POST \
  --url https://<host.databricks.com\>/serving-endpoints/responses \
  --header 'Authorization: Bearer <OAuth token>' \
  --header 'content-type: application/json' \
  --data '{
    "model": "\<model-name\>",
    "input": [{ "role": "user", "content": "hi" }],
    "stream": true,
    "custom_inputs": { "id": 5 },
    "databricks_options": { "return_trace": true }
  }'

Eski ChatAgent veya ChatModel arabirimleriyle oluşturulan aracılar için aşağıdakileri kullanın. Bu, şuna eşdeğerdir:

  • ile chat.completions.createDatabricks OpenAI İstemcisini kullanma.
  • Belirli bir uç noktanın URL'sine post isteği gönderme (örn: https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations). Daha fazla bilgi için uç noktanızın Model Sunma sayfasına ve Model Sunma Belgeleri'ne bakın.
curl --request POST \
  --url https://<host.databricks.com\>/serving-endpoints/chat/completions \
  --header 'Authorization: Bearer <OAuth token>' \
  --header 'content-type: application/json' \
  --data '{
    "model": "\<model-name\>",
    "messages": [{ "role": "user", "content": "hi" }],
    "stream": true
  }'

custom_inputs veya databricks_options'yi geçirmek istiyorsanız, bunları istek gövdesine ekleyebilirsiniz:

curl --request POST \
  --url https://<host.databricks.com\>/serving-endpoints/chat/completions \
  --header 'Authorization: Bearer <OAuth token>' \
  --header 'content-type: application/json' \
  --data '{
    "model": "\<model-name\>",
    "messages": [{ "role": "user", "content": "hi" }],
    "stream": true,
    "custom_inputs": { "id": 5 },
    "databricks_options": { "return_trace": true }
  }'

AI İşlevleri: ai_query

SQL kullanarak model sunumu üzerinde barındırılan dağıtılmış bir aracı sorgulamak için ai_query kullanabilirsiniz. SQL söz dizimi ve parametre tanımları için işlevine bakın.ai_query

SELECT ai_query(
  "<model name>", question
) FROM (VALUES ('what is MLflow?'), ('how does MLflow work?')) AS t(question);

Sonraki Adımlar

Üretimde GenAI uygulamalarını izleme