Dotazování agenta nasazeného v Azure Databricks

Přečtěte si, jak odesílat požadavky agentům nasazenými do aplikací Databricks nebo do koncových bodů obsluhy modelů. Databricks poskytuje několik metod dotazů, které odpovídají různým případům použití a potřebám integrace.

Vyberte přístup k dotazu, který nejlépe vyhovuje vašemu případu použití:

Metoda Klíčové výhody
Klient OpenAI Databricks (doporučeno) Nativní integrace, plná podpora funkcí, možnosti streamování
REST API OpenAI kompatibilní, nezávislý na jazyce, funguje se stávajícími nástroji.
Funkce AI: ai_query Kompatibilní s OpenAI, starší verze agentů dotazů hostovaných pouze v koncových bodech obsluhy modelů

Databricks doporučuje klienta Databricks OpenAI pro nové aplikace. Při integraci s platformami, které očekávají koncové body kompatibilní s OpenAI, zvolte rozhraní REST API .

Databricks doporučuje použít klienta DatabricksOpenAI k dotazování nasazeného agenta. V závislosti na API vašeho nasazeného agenta budete buď používat odpovědi, nebo klienta pro dokončení chatu:

Agenti nasazení do aplikací

Následující příklad použijte pro agenty hostované v Databricks Apps podle ResponsesAgent rozhraní, což je doporučený postup pro sestavování agentů. K dotazování agentů hostovaných v Databricks Apps musíte použít token Databricks OAuth .

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)

Pokud chcete předat custom_inputs, lze je přidat pomocí parametru extra_body.

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)

Chcete-li načíst ID trasování z odpovědi, zahrňte hlavičku x-mlflow-return-trace-id pomocí extra_headers. Nakonec použijte MLflow get_trace k načtení úplné stopy.

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)

Agenti při obsluhování modelů

Následující příklad použijte pro starší agenty hostované na Model Serving, které používají ResponsesAgent rozhraní. K dotazování agentů hostovaných ve službě Model Serving můžete použít token Databricks OAuth nebo token PAT (Personal Access Token).

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)

Pokud chcete předat custom_inputs , nebo databricks_optionsje můžete přidat pomocí parametru extra_body :

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)

Následující příklad použijte pro starší agenty na modelu obsluhujícího rozhraní ChatAgent nebo ChatModel.

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)

Pokud chcete předat custom_inputs , nebo databricks_optionsje můžete přidat pomocí parametru extra_body :

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

Rozhraní Databricks REST API poskytuje koncové body pro modely, které jsou kompatibilní s OpenAI. To vám umožní používat agenty Databricks k obsluhování aplikací, které vyžadují rozhraní OpenAI.

Tento přístup je ideální pro:

  • Aplikace nezávislé na jazyce, které používají požadavky HTTP
  • Integrace s platformami třetích stran, které očekávají rozhraní API kompatibilní s OpenAI
  • Migrace z OpenAI na Databricks s minimálními změnami kódu

Ověřte se pomocí rozhraní REST API pomocí tokenu OAuth Databricks. Další možnosti a informace najdete v dokumentaci k ověřování Databricks .

Agenti nasazení do aplikací

Následující příklad použijte pro agenty hostované v Databricks Apps podle ResponsesAgent rozhraní, což je doporučený postup pro sestavování agentů. K dotazování agentů hostovaných v Databricks Apps musíte použít token Databricks OAuth .

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
  }'

Pokud chcete přidat custom_inputs do textu požadavku, můžete je vložit:

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 }
  }'

Pokud chcete načíst sledovací ID z odpovědi, přidejte do požadavku hlavičku x-mlflow-return-trace-id. Tělo odpovědi obsahuje pole metadata.trace_id, které obsahuje sledovací ID. U požadavků na streamování se ID trasování odešle jako samostatná událost SSE (data: {"trace_id": "tr-..."}) na konci datového proudu. Pomocí MLflow get_trace pak načtěte úplné sledování pomocí ID sledová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" }]
  }'

Agenti při obsluhování modelů

Následující příklad použijte pro starší agenty hostované na Model Serving, které používají ResponsesAgent rozhraní. K dotazování agentů hostovaných ve službě Model Serving můžete použít token Databricks OAuth nebo token PAT (Personal Access Token). Volání rozhraní REST API odpovídá:

  • Použití klienta Databricks OpenAI s responses.create.
  • Odeslání požadavku POST na adresu URL konkrétního koncového bodu (např. https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations Další informace najdete na stránce obsluhy modelů vašeho koncového bodu a dokumentaci k poskytování služeb modelu.
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
  }'

Pokud chcete předat custom_inputs nebo databricks_options, můžete je přidat do textu požadavku:

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 }
  }'

Pro agenty vytvořené pomocí starší verze rozhraní ChatAgent nebo ChatModel použijte následující kód. To odpovídá:

  • Použití klienta Databricks OpenAI s chat.completions.create.
  • Odeslání požadavku POST na adresu URL konkrétního koncového bodu (např. https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations Další informace najdete na stránce obsluhy modelů vašeho koncového bodu a dokumentaci k poskytování služeb modelu.
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
  }'

Pokud chcete předat custom_inputs nebo databricks_options, můžete je přidat do textu požadavku:

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 }
  }'

Funkce AI: ai_query

Můžete použít ai_query k dotazování nasazeného agenta hostovaného na modelu obsluhujícího pomocí SQL. Viz ai_query funkce pro syntaxi SQL a definice parametrů.

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

Další kroky

Monitorování aplikací GenAI v produkčním prostředí