Delen via


Een query uitvoeren op een geïmplementeerde Mozaïek AI-agent

Meer informatie over het verzenden van aanvragen naar agents die zijn geïmplementeerd in een Model Serving-eindpunt. Databricks biedt meerdere querymethoden voor verschillende use cases en integratiebehoeften.

Zie Een agent implementeren voor generatieve AI-toepassingen voor meer informatie over het implementeren van agents.

Selecteer de querybenadering die het beste past bij uw use-case:

Methode Belangrijkste voordelen
Databricks OpenAI-client (aanbevolen) Systeemeigen integratie, volledige functieondersteuning, streamingmogelijkheden
MLflow-implementatieclient Bestaande MLflow-patronen, bestaande ML-pijplijnen
REST API OpenAI-compatibel, taalneutraal, werkt met bestaande hulpprogramma's
AI-functies: ai_query OpenAI-compatibel, werkt met bestaande hulpprogramma's

Databricks raadt de Databricks OpenAI-client aan voor nieuwe toepassingen. Kies de REST API bij het integreren met platforms die openAI-compatibele eindpunten verwachten.

Databricks raadt u aan om de Databricks OpenAI-client te gebruiken om een query uit te voeren op een geïmplementeerde agent. Afhankelijk van de API van uw geïmplementeerde agent gebruikt u de antwoorden of de voltooiingsclient voor chats:

Eindpunten van de ResponsesAgent

Gebruik het volgende voorbeeld voor agents die zijn gemaakt met de interface ResponsesAgent. Dit is de aanbevolen methode voor het bouwen van agents.

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)

Als u custom_inputs of databricks_options wilt doorgeven, kunt u ze toevoegen met de extra_body parameter.

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- of ChatModel-eindpunten

Gebruik het volgende voorbeeld voor agents die zijn gemaakt met verouderde ChatAgent- of ChatModel-interfaces, die nog steeds worden ondersteund, maar niet worden aanbevolen voor nieuwe agents.

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)

Als u custom_inputs of databricks_options wilt doorgeven, kunt u ze toevoegen met de extra_body parameter.

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-implementatieclient

Gebruik de MLflow-implementatieclient bij het werken binnen bestaande MLflow-werkstromen en pijplijnen. Deze benadering kan op natuurlijke wijze worden geïntegreerd met MLflow-tracering en experimentbeheer.

In de volgende voorbeelden ziet u hoe u een query uitvoert op een agent met behulp van de MLflow-implementatieclient. Voor nieuwe toepassingen raadt Databricks aan om de Databricks OpenAI-client te gebruiken voor de verbeterde functies en systeemeigen integratie.

Afhankelijk van de API van uw geïmplementeerde agent gebruikt u de indeling ResponsesAgent of ChatAgent:

Eindpunten van de ResponsesAgent

Gebruik het volgende voorbeeld voor agents die zijn gemaakt met de interface ResponsesAgent. Dit is de aanbevolen methode voor het bouwen van agents.

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- of ChatModel-eindpunten

Gebruik dit voor agents die zijn gemaakt met verouderde ChatAgent- of ChatModel-interfaces, die nog steeds worden ondersteund, maar niet worden aanbevolen voor nieuwe agents.

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() en client.predict_stream() de agentfuncties aanroepen die u hebt gedefinieerd bij het ontwerpen van de agent. Zie Streaming-antwoorden.

REST API

De Databricks REST API biedt eindpunten voor modellen die compatibel zijn met OpenAI. Hiermee kunt u Databricks-agents gebruiken voor toepassingen waarvoor OpenAI-interfaces zijn vereist.

Deze methode is ideaal voor:

  • Taalagnostische toepassingen die GEBRUIKMAKEN van HTTP-aanvragen
  • Integreren met platformen van derden die openAI-compatibele API's verwachten
  • Migreren van OpenAI naar Databricks met minimale codewijzigingen

Verifiëren met de REST API met behulp van een Databricks OAuth-token of persoonlijk toegangstoken (PAT). In de onderstaande voorbeelden wordt een Databricks OAuth-token gebruikt. Raadpleeg de Databricks-verificatiedocumentatie voor meer opties en informatie.

Eindpunten van de ResponsesAgent

Gebruik het volgende voorbeeld voor agents die zijn gemaakt met de interface ResponsesAgent. Dit is de aanbevolen methode voor het bouwen van agents. REST API-aanroep is gelijk aan:

  • De Databricks OpenAI-client gebruiken met responses.create.
  • Een POST-aanvraag verzenden naar de URL van het specifieke eindpunt (bijvoorbeeld: https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations). Meer informatie vindt u op de pagina voor het leveren van het model van uw eindpunt en de documentatie voor modelbediening.
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
  }'

Als u custom_inputs of databricks_options wilt doorgeven, kunt u ze toevoegen met de extra_body parameter.

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- of ChatModel-eindpunten

Gebruik dit voor agents die zijn gemaakt met verouderde ChatAgent- of ChatModel-interfaces, die nog steeds worden ondersteund, maar niet worden aanbevolen voor nieuwe agents. Dit komt overeen met:

  • De Databricks OpenAI-client gebruiken met chat.completions.create.
  • Een POST-aanvraag verzenden naar de URL van het specifieke eindpunt (bijvoorbeeld: https://<host.databricks.com>/serving-endpoints/\<model-name\>/invocations). Meer informatie vindt u op de pagina voor het leveren van het model van uw eindpunt en de documentatie voor modelbediening.
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
  }'

Als u custom_inputs of databricks_options wilt doorgeven, kunt u ze toevoegen met de extra_body parameter.

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-functies: ai_query

U kunt ai_query een query uitvoeren op een geïmplementeerde AI-agent met behulp van SQL. Zie ai_query de functie voor SQL-syntaxis en parameterdefinities.

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

Volgende stappen

GenAI monitoren in productie