Sdílet prostřednictvím


Dotazování nasazeného agenta Mosaic AI

Zjistěte, jak odesílat požadavky agentům nasazeným do koncového bodu obsluhy modelů. Databricks poskytuje několik metod dotazů, které odpovídají různým případům použití a potřebám integrace.

Informace o nasazení agentů najdete v tématu Nasazení agenta pro generování aplikací umělé inteligence.

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í
Klient nasazení MLflow Existující vzory MLflow, navržené pipeliny ML
REST API OpenAI kompatibilní, nezávislý na jazyce, funguje se stávajícími nástroji.
Funkce AI: ai_query Kompatibilní s OpenAI, funguje s existujícími nástroji.

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, abyste k dotazování nasazeného agenta použili klienta Databricks OpenAI . V závislosti na API vašeho nasazeného agenta budete buď používat odpovědi, nebo klienta pro dokončení chatu:

Koncové body ResponsesAgent

Následující příklad použijte pro agenty vytvořené pomocí rozhraní ResponsesAgent, což je doporučený postup pro sestavování agentů.

from databricks.sdk import WorkspaceClient

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

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

## 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)

Koncové body ChatAgent nebo ChatModel

Následující příklad použijte pro agenty vytvořené pomocí starší verze rozhraní ChatAgent nebo ChatModel, která jsou stále podporována, ale nedoporučuje se pro nové agenty.

from databricks.sdk import WorkspaceClient

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

w = WorkspaceClient()
client = w.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)

Klient pro nasazení MLflow

Při práci s existujícími pracovními postupy a kanály MLflow použijte klienta nasazení MLflow. Tento přístup se přirozeně integruje se sledováním MLflow a správou experimentů.

Následující příklady ukazují, jak provést dotazování na agenta pomocí klienta nasazení MLflow. Pro nové aplikace doporučuje Databricks používat klienta Databricks OpenAI pro své vylepšené funkce a nativní integraci.

V závislosti na rozhraní API nasazeného agenta použijete formát ResponsesAgent nebo ChatAgent:

Koncové body ResponsesAgent

Následující příklad použijte pro agenty vytvořené pomocí rozhraní ResponsesAgent, což je doporučený postup pro sestavování agentů.

from mlflow.deployments import get_deploy_client

client = get_deploy_client()
input_example = {
    "input": [{"role": "user", "content": "What does Databricks do?"}],
    ## Optional: Include any custom inputs
    ## "custom_inputs": {"id": 5},
    "databricks_options": {"return_trace": True},
}
endpoint = "<agent-endpoint-name>" # TODO: update this with your endpoint name

## Call predict for non-streaming responses
response = client.predict(endpoint=endpoint, inputs=input_example)

## Call predict_stream for streaming responses
streaming_response = client.predict_stream(endpoint=endpoint, inputs=input_example)

Koncové body ChatAgent nebo ChatModel

Tuto možnost použijte pro agenty vytvořené pomocí starších rozhraní ChatAgent nebo ChatModel, která jsou stále podporována, ale nedoporučuje se pro nové agenty.

from mlflow.deployments import get_deploy_client

client = get_deploy_client()
input_example = {
    "messages": [{"role": "user", "content": "What does Databricks do?"}],
    ## Optional: Include any custom inputs
    ## "custom_inputs": {"id": 5},
    "databricks_options": {"return_trace": True},
}
endpoint = "<agent-endpoint-name>" # TODO: update this with your endpoint name

## Call predict for non-streaming responses
response = client.predict(endpoint=endpoint, inputs=input_example)

## Call predict_stream for streaming responses
streaming_response = client.predict_stream(endpoint=endpoint, inputs=input_example)

client.predict() a client.predict_stream() volají funkce agenta, které jste definovali při tvorbě agenta. Podívejte se na odpovědi na streamování.

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ěřování pomocí rozhraní REST API pomocí tokenu OAuth Databricks nebo tokenu PAT (Personal Access Token). Následující příklady používají token Databricks OAuth. Další možnosti a informace najdete v dokumentaci k ověřování Databricks .

Koncové body ResponsesAgent

Následující příklad použijte pro agenty vytvořené pomocí rozhraní ResponsesAgent, což je doporučený postup pro sestavování agentů. Volání rozhraní REST API je ekvivalentní:

  • 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ší podrobnosti najdete na stránce obsluhy modelu vašeho koncového bodu a v dokumentaci k obsluhě 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_optionsje můžete přidat pomocí parametru extra_body :

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,
    "extra_body": {
      "custom_inputs": { "id": 5 },
      "databricks_options": { "return_trace": true }
    }
  }'

Koncové body ChatAgent nebo ChatModel

Tuto možnost použijte pro agenty vytvořené pomocí starších rozhraní ChatAgent nebo ChatModel, která jsou stále podporována, ale nedoporučuje se pro nové agenty. 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ší podrobnosti najdete na stránce obsluhy modelu vašeho koncového bodu a v dokumentaci k obsluhě 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_optionsje můžete přidat pomocí parametru extra_body :

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,
    "extra_body": {
      "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 AI 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í GenAI v produkčním prostředí