Udostępnij przez


Zapytaj wdrożonego agenta Mosaic AI

Dowiedz się, jak wysyłać żądania do agentów wdrożonych w punkcie końcowym obsługującym model. Usługa Databricks udostępnia wiele metod zapytań odpowiadających różnym przypadkom użycia i potrzebom integracji.

Aby dowiedzieć się, jak wdrażać agentów, zobacz Wdrażanie agenta do aplikacji AI generujących.

Wybierz podejście do zapytania, które najlepiej pasuje do twojego przypadku użycia:

Metoda Najważniejsze korzyści
Klient OpenAI usługi Databricks (zalecane) Natywna integracja, pełna obsługa funkcji, możliwości przesyłania strumieniowego
Klient wdrożeń MLflow Istniejące wzorce MLflow, ustanowione potoki ML
API REST Kompatybilna z OpenAI, niezależna od języka, współpracuje z istniejącymi narzędziami
Funkcje sztucznej inteligencji: ai_query OpenAI jest kompatybilne i współpracuje z istniejącymi narzędziami

Databricks zaleca klienta OpenAI Databricks dla nowych aplikacji. Wybierz interfejs API REST podczas integracji z platformami, które oczekują punktów końcowych zgodnych z interfejsem OpenAI.

Databricks zaleca użycie klienta OpenAI Databricks do wykonywania zapytań względem wdrożonego agenta. W zależności od interfejsu API wdrożonego agenta, użyjesz albo klienta odpowiedzi, albo klienta odpowiedzialnego za uzupełnianie czatu.

Punkty końcowe ResponsesAgent

Użyj poniższego przykładu dla agentów utworzonych za pomocą interfejsu ResponsesAgent, który jest zalecanym podejściem do tworzenia agentów.

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)

Jeśli chcesz przekazać custom_inputs lub databricks_options, możesz je dodać za 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)

Punkty końcowe ChatAgent lub ChatModel

Skorzystaj z poniższego przykładu dla agentów utworzonych przy użyciu starszych interfejsów ChatAgent lub ChatModel, które są nadal obsługiwane, ale nie są zalecane dla nowych agentów.

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)

Jeśli chcesz przekazać custom_inputs lub databricks_options, możesz je dodać za 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 wdrożeń MLflow

Użyj klienta wdrożeń MLflow podczas pracy w istniejących przepływach pracy i potokach MLflow. Takie podejście integruje się naturalnie z funkcją śledzenia i zarządzania eksperymentami MLflow.

W poniższych przykładach pokazano, jak wykonać zapytanie o agenta przy użyciu klienta wdrażania MLflow. W przypadku nowych aplikacji usługa Databricks zaleca korzystanie z klienta OpenAI usługi Databricks w celu uzyskania rozszerzonych funkcji i integracji natywnej.

W zależności od interfejsu API wdrożonego agenta użyjesz formatu ResponsesAgent lub ChatAgent:

Punkty końcowe ResponsesAgent

Użyj poniższego przykładu dla agentów utworzonych za pomocą interfejsu ResponsesAgent, który jest zalecanym podejściem do tworzenia agentów.

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)

Punkty końcowe ChatAgent lub ChatModel

Ta opcja jest używana w przypadku agentów utworzonych przy użyciu starszych interfejsów ChatAgent lub ChatModel, które są nadal obsługiwane, ale nie są zalecane dla nowych agentów.

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() i client.predict_stream() wywołują funkcje agenta, które zdefiniowałeś podczas tworzenia agenta. Przejrzyj Odpowiedzi przesyłania strumieniowego.

interfejs API REST

Interfejs API REST usługi Databricks udostępnia punkty końcowe dla modeli zgodnych z interfejsem OpenAI. Dzięki temu można używać agentów usługi Databricks do obsługi aplikacji, które wymagają interfejsów OpenAI.

To podejście jest idealne dla:

  • Aplikacje niezależne od języka korzystające z żądań HTTP
  • Integracja z platformami innych firm, które oczekują interfejsów API zgodnych z technologią OpenAI
  • Migrowanie z usługi OpenAI do usługi Databricks z minimalnymi zmianami kodu

Uwierzytelnianie za pomocą interfejsu API REST przy użyciu tokenu OAuth usługi Databricks lub osobistego tokenu dostępu (PAT). W poniższych przykładach użyto tokenu OAuth usługi Databricks, zapoznaj się z dokumentacją uwierzytelniania usługi Databricks , aby uzyskać więcej opcji i informacji.

Punkty końcowe ResponsesAgent

Użyj poniższego przykładu dla agentów utworzonych za pomocą interfejsu ResponsesAgent, który jest zalecanym podejściem do tworzenia agentów. Wywołanie interfejsu API REST jest równoważne:

  • Korzystanie z klienta OpenAI Databricks z responses.create.
  • Wysyłanie żądania POST do adresu URL określonego punktu końcowego (np. https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations). Więcej szczegółów można znaleźć na stronie obsługi modelu punktu końcowego i dokumentacji obsługi 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
  }'

Jeśli chcesz przekazać custom_inputs lub databricks_options, możesz je dodać za 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 }
    }
  }'

Punkty końcowe ChatAgent lub ChatModel

Ta opcja jest używana w przypadku agentów utworzonych przy użyciu starszych interfejsów ChatAgent lub ChatModel, które są nadal obsługiwane, ale nie są zalecane dla nowych agentów. Jest to odpowiednik:

  • Korzystanie z klienta OpenAI Databricks z chat.completions.create.
  • Wysyłanie żądania POST do adresu URL określonego punktu końcowego (np. https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations). Więcej szczegółów można znaleźć na stronie obsługi modelu punktu końcowego i dokumentacji obsługi 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
  }'

Jeśli chcesz przekazać custom_inputs lub databricks_options, możesz je dodać za 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 }
    }
  }'

Funkcje sztucznej inteligencji: ai_query

Możesz użyć ai_query polecenia , aby wykonać zapytanie dotyczące wdrożonego agenta sztucznej inteligencji przy użyciu języka SQL. Zobacz ai_query funkcję dla składni SQL i definicji parametrów.

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

Następne kroki

Monitorowanie GenAI w produkcji