Fråga en implementerad Mosaic AI-agent

Lär dig hur du skickar begäranden till agenter som distribuerats till en modellserverslutpunkt. Databricks innehåller flera frågemetoder som passar olika användningsfall och integrationsbehov.

Information om hur du distribuerar agenter finns i Distribuera en agent för generativa AI-program.

Välj den frågemetod som passar bäst för ditt användningsfall:

Metod Viktiga fördelar
Databricks OpenAI-klient (rekommenderas) Intern integrering, fullständigt funktionsstöd, strömningsfunktioner
MLflow-distributionsklient Befintliga MLflow-mönster, etablerade ML-pipelines
REST-API OpenAI-kompatibel, språkagnostisk, fungerar med befintliga verktyg
AI Functions: ai_query OpenAI-kompatibel, fungerar med befintliga verktyg

Databricks rekommenderar Databricks OpenAI-klienten för nya program. Välj REST API när du integrerar med plattformar som förväntar sig OpenAI-kompatibla slutpunkter.

Databricks rekommenderar att du använder Databricks OpenAI-klienten för att fråga en distribuerad agent. Beroende på API:et för din distribuerade agent använder du antingen svars- eller chattklienten:

ResponsesAgent-slutpunkter

Använd följande exempel för agenter som skapats med gränssnittet ResponsesAgent, vilket är den rekommenderade metoden för byggnadsagenter.

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)

Om du vill skicka in custom_inputs eller databricks_optionskan du lägga till dem med extra_body param:

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- eller ChatModel-slutpunkter

Använd följande exempel för agenter som skapats med äldre ChatAgent- eller ChatModel-gränssnitt, som fortfarande stöds men inte rekommenderas för nya agenter.

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)

Om du vill skicka in custom_inputs eller databricks_optionskan du lägga till dem med extra_body param:

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)

MLflow-distributionsklient

Använd MLflow-distributionsklienten när du arbetar i befintliga MLflow-arbetsflöden och pipelines. Den här metoden integreras naturligt med MLflow-spårning och experimenthantering.

I följande exempel visas hur du frågar en agent med hjälp av MLflow-distributionsklienten. För nya program rekommenderar Databricks att du använder Databricks OpenAI-klienten för dess förbättrade funktioner och interna integrering.

Beroende på API:et för din distribuerade agent använder du antingen Formatet ResponsesAgent eller ChatAgent:

ResponsesAgent-slutpunkter

Använd följande exempel för agenter som skapats med gränssnittet ResponsesAgent, vilket är den rekommenderade metoden för byggnadsagenter.

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)

ChatAgent- eller ChatModel-slutpunkter

Använd detta för agenter som skapats med äldre ChatAgent- eller ChatModel-gränssnitt, som fortfarande stöds men inte rekommenderas för nya agenter.

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() och client.predict_stream() anropa agentfunktionerna som du definierade när du redigerade agenten. Se Strömningssvar.

REST API

Databricks REST API tillhandahåller slutpunkter för modeller som är OpenAI-kompatibla. På så sätt kan du använda Databricks-agenter för att hantera program som kräver OpenAI-gränssnitt.

Den här metoden är idealisk för:

  • Språkagnostiska program som använder HTTP-begäranden
  • Integrera med plattformar från tredje part som förväntar sig OpenAI-kompatibla API:er
  • Migrera från OpenAI till Databricks med minimala kodändringar

Autentisera med REST-API:et med en Databricks OAuth-token eller personlig åtkomsttoken (PAT). Exemplen nedan använder en Databricks OAuth-token. Mer information finns i dokumentationen för Databricks-autentisering .

ResponsesAgent-slutpunkter

Använd följande exempel för agenter som skapats med gränssnittet ResponsesAgent, vilket är den rekommenderade metoden för byggnadsagenter. REST API-anropet motsvarar:

  • Använda Databricks OpenAI-klienten med responses.create.
  • Skicka en POST-begäran till den specifika slutpunktens URL (till exempel ). https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations Mer information finns på slutpunktens modellserversida och dokumentationen om modellservering.
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
  }'

Om du vill skicka in custom_inputs eller databricks_optionskan du lägga till dem med extra_body param:

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

ChatAgent- eller ChatModel-slutpunkter

Använd detta för agenter som skapats med äldre ChatAgent- eller ChatModel-gränssnitt, som fortfarande stöds men inte rekommenderas för nya agenter. Detta motsvarar:

  • Använda Databricks OpenAI-klienten med chat.completions.create.
  • Skicka en POST-begäran till den specifika slutpunktens URL (till exempel ). https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations Mer information finns på slutpunktens modellserversida och dokumentationen om modellservering.
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
  }'

Om du vill skicka in custom_inputs eller databricks_optionskan du lägga till dem med extra_body param:

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

AI-funktioner: ai_query

Du kan använda ai_query för att fråga en distribuerad AI-agent med hjälp av SQL. Se ai_query funktionen för SQL-syntax och parameterdefinitioner.

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

Nästa steg

Övervaka GenAI i produktion