Condividi tramite


Eseguire query sui modelli di intelligenza artificiale generativi

Questo articolo illustra come formattare le richieste di query per i modelli di base e i modelli esterni e inviarli all'endpoint di gestione del modello.

Per le richieste di query dei modelli di Machine Learning o Python tradizionali, consultare Eseguire query sugli endpoint per i modelli personalizzati.

Mosaic AI Model Serving supporta le API dei modelli di base e i modelli esterni per l'accesso ai modelli di intelligenza artificiale generativi. Model Serving usa un'API compatibile con OpenAI e l'SDK per l'esecuzione di query. In questo modo è possibile sperimentare e personalizzare modelli di intelligenza artificiale generativi per la produzione in cloud e provider supportati.

Mosaic AI Model Serving offre le opzioni seguenti per l'invio di richieste di assegnazione dei punteggi agli endpoint che servono modelli di base o modelli esterni:

metodo Dettagli
Client OpenAI Eseguire query su un modello ospitato da un endpoint Mosaic AI Model Serving usando il client OpenAI. Specificare il nome dell'endpoint di gestione del model modello come input. Supportato per modelli di chat, embedding e completamento resi disponibili da API dei modelli di base o da modelli esterni.
Serving interfaccia utente Selezionare Endpoint di query nella pagina endpoint di servizio. Inserire i dati di input del modello in formato JSON e fare clic su Invia richiesta. Se nel modello è registrato un esempio di input, usare Mostra esempio per caricarlo.
REST API Chiamare ed eseguire query sul modello usando l'API REST. Per informazioni dettagliate, consultare POST /serving-endpoints/{name}/invocations. Per le richieste di assegnazione dei punteggi agli endpoint che servono più modelli, consultare Eseguire query su singoli modelli dietro un endpoint.
MLflow Deployments SDK Usare la funzione predict() di MLflow Deployments SDK per eseguire query sul modello.
Databricks Python SDK Databricks Python SDK è un livello superiore all'API REST. Gestisce dettagli di basso livello, ad esempio l'autenticazione, semplificando l'interazione con i modelli.
Funzione SQL Richiamare l'inferenza del modello direttamente da SQL usando la ai_query funzione SQL. Consultare Eseguire query su un modello servito con ai_query().

Requisiti

Importante

Come buona prassi di sicurezza per scenari di produzione, Databricks consiglia di utilizzare token OAuth da macchina a macchina per l'autenticazione durante la produzione.

Per il test e lo sviluppo, Databricks consiglia di usare un token di accesso personale appartenente alle entità servizio anziché agli utenti dell'area di lavoro. Per creare token per le entità servizio, vedere Gestire i token per un'entità servizio.

Installare i pacchetti

Dopo aver scelto un metodo di query, è necessario prima installare il pacchetto appropriato nel proprio cluster.

Client OpenAI

Per usare il client OpenAI, è necessario installare il databricks-sdk[openai] pacchetto nel cluster. Databricks SDK fornisce un wrapper per costruire il client OpenAI con autorizzazione configurata automaticamente per eseguire query sui modelli di intelligenza artificiale generativi. Eseguire quanto segue nel notebook o nel terminale locale:

!pip install databricks-sdk[openai]>=0.35.0

Il seguito è necessario solo quando si installa il pacchetto in un notebook di Databricks

dbutils.library.restartPython()

REST API

L'accesso all'API REST di servizio è disponibile in Databricks Runtime per Machine Learning.

MLflow Deployments SDK

!pip install mlflow

Il seguito è necessario solo quando si installa il pacchetto in un notebook di Databricks

dbutils.library.restartPython()

Databricks Python SDK

Databricks SDK per Python è già installato in tutti i cluster di Azure Databricks che usano Databricks Runtime 13.3 LTS o nelle versioni successive. Per i cluster Di Azure Databricks che usano Databricks Runtime 12.2 LTS e nelle versioni successive, è prima necessario installare Databricks SDK per Python. Vedere Databricks SDK per Python.

Query un modello di completamento chat

Di seguito sono riportati alcuni esempi per l'esecuzione di query su un modello di chat. L'esempio si applica all'esecuzione di query su un modello di chat reso disponibile usando una delle funzionalità di Model Serving: API dei modelli di base o modelli esterni.

Per un esempio di inferenza batch, vedere Inferenza batch con le API del modello di base con provisioning della velocità effettiva.

Client OpenAI

Di seguito è riportata una richiesta di chat per il modello DBRX Instruct reso disponibile dall'endpoint con pagamento per token delle API dei modelli di base, databricks-dbrx-instruct nell'area di lavoro.

Per usare il client OpenAI, specificare il nome dell'endpoint di gestione del modello come model input.


from databricks.sdk import WorkspaceClient

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

response = openai_client.chat.completions.create(
    model="databricks-dbrx-instruct",
    messages=[
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "What is a mixture of experts model?",
      }
    ],
    max_tokens=256
)

Per eseguire query sui modelli di base all'esterno dell'area di lavoro, è necessario usare direttamente il client OpenAI. È anche necessaria l'istanza dell'area di lavoro di Databricks per connettere il client OpenAI a Databricks. L'esempio seguente presuppone che nel calcolo sia installato un token openai DELL'API Databricks.


import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

response = client.chat.completions.create(
    model="databricks-dbrx-instruct",
    messages=[
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "What is a mixture of experts model?",
      }
    ],
    max_tokens=256
)

REST API

Importante

Il seguente esempio usa i parametri dell'API REST per l'esecuzione di query sugli endpoint che servono i modelli di base. Questi parametri sono in Anteprima pubblica e la definizione potrebbe cambiare. Consultare POST /serving-endpoints/{name}/invocations.

Di seguito è riportata una richiesta di chat per il modello DBRX Instruct reso disponibile dall'endpoint con pagamento per token delle API dei modelli di base, databricks-dbrx-instruct nell'area di lavoro.

curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": " What is a mixture of experts model?"
    }
  ]
}' \
https://<workspace_host>.databricks.com/serving-endpoints/databricks-dbrx-instruct/invocations \

MLflow Deployments SDK

Importante

Il seguente esempio usa l'API predict() di MLflow Implementazioni SDK.

Di seguito è riportata una richiesta di chat per il modello DBRX Instruct reso disponibile dall'endpoint con pagamento per token delle API dei modelli di base, databricks-dbrx-instruct nell'area di lavoro.


import mlflow.deployments

# Only required when running this example outside of a Databricks Notebook
export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"

client = mlflow.deployments.get_deploy_client("databricks")

chat_response = client.predict(
    endpoint="databricks-dbrx-instruct",
    inputs={
        "messages": [
            {
              "role": "user",
              "content": "Hello!"
            },
            {
              "role": "assistant",
              "content": "Hello! How can I assist you today?"
            },
            {
              "role": "user",
              "content": "What is a mixture of experts model??"
            }
        ],
        "temperature": 0.1,
        "max_tokens": 20
    }
)

Databricks Python SDK

Di seguito è riportata una richiesta di chat per il modello DBRX Instruct reso disponibile dall'endpoint con pagamento per token delle API dei modelli di base, databricks-dbrx-instruct nell'area di lavoro.

Questo codice deve essere eseguito in un notebook nell'area di lavoro. Consultare Usare Databricks SDK per Python da un notebook di Azure Databricks.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="databricks-dbrx-instruct",
    messages=[
        ChatMessage(
            role=ChatMessageRole.SYSTEM, content="You are a helpful assistant."
        ),
        ChatMessage(
            role=ChatMessageRole.USER, content="What is a mixture of experts model?"
        ),
    ],
    max_tokens=128,
)
print(f"RESPONSE:\n{response.choices[0].message.content}")

LangChain

Per eseguire query su un endpoint del modello di base usando LangChain, è possibile usare la classe ChatModel ChatDatabricks e specificare endpoint.

Nel seguente esempio viene usata la classe ChatModel ChatDatabricks in LangChain per eseguire query sull'endpoint con pagamento per token delle API dei modelli di base, databricks-dbrx-instruct.

%pip install databricks-langchain
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_databricks import ChatDatabricks

messages = [
    SystemMessage(content="You're a helpful assistant"),
    HumanMessage(content="What is a mixture of experts model?"),
]

llm = ChatDatabricks(endpoint_name="databricks-dbrx-instruct")
llm.invoke(messages)

SQL

Importante

Nel seguente esempio viene usata la funzione SQL predefinita ai_query. Questa funzione è in Anteprima pubblica e la definizione potrebbe cambiare. Consultare Eseguire query su un modello servito con ai_query().

Di seguito è riportata una richiesta di chat per meta-llama-3-1-70b-instruct resa disponibile dall'endpoint con pagamento per token delle API dei modelli di base, databricks-meta-llama-3-1-70b-instruct nell’area di lavoro.

Nota

La ai_query() funzione non supporta gli endpoint di query che servono il modello DBRX o DBRX Instruct.

SELECT ai_query(
    "databricks-meta-llama-3-1-70b-instruct",
    "Can you explain AI in ten words?"
  )

Ad esempio, di seguito è riportato il formato di richiesta previsto per un modello di chat quando si usa l'API REST. Per i modelli esterni, è possibile includere parametri aggiuntivi validi per un determinato provider e configurazione dell'endpoint. Consultare Ulteriori parametri delle query.

{
  "messages": [
    {
      "role": "user",
      "content": "What is a mixture of experts model?"
    }
  ],
  "max_tokens": 100,
  "temperature": 0.1
}

Di seguito è riportato un formato di risposta previsto per una richiesta effettuata tramite l'API REST:

{
  "model": "databricks-dbrx-instruct",
  "choices": [
    {
      "message": {},
      "index": 0,
      "finish_reason": null
    }
  ],
  "usage": {
    "prompt_tokens": 7,
    "completion_tokens": 74,
    "total_tokens": 81
  },
  "object": "chat.completion",
  "id": null,
  "created": 1698824353
}

Eseguire query su un modello embedding

Di seguito è riportata una richiesta di incorporamento per il gte-large-en modello reso disponibile dalle API dei modelli di base. L'esempio si applica all'esecuzione di query su un modello di embedding reso disponibile usando una delle funzionalità di Model Serving: API modelli di base o modelli esterni.

Client OpenAI

Per usare il client OpenAI, specificare il nome dell'endpoint di gestione del modello come model input.


from databricks.sdk import WorkspaceClient

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

response = openai_client.embeddings.create(
  model="databricks-gte-large-en",
  input="what is databricks"
)

Per eseguire query sui modelli di base all'esterno dell'area di lavoro, è necessario usare direttamente il client OpenAI, come illustrato di seguito. L'esempio seguente presuppone che nel calcolo sia installato un token API Databricks e openai. È anche necessaria l'istanza dell'area di lavoro di Databricks per connettere il client OpenAI a Databricks.


import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

response = client.embeddings.create(
  model="databricks-gte-large-en",
  input="what is databricks"
)

REST API

Importante

Il seguente esempio usa i parametri dell'API REST per l'esecuzione di query sugli endpoint che servono i modelli di base o i modelli esterni. Questi parametri sono in Anteprima pubblica e la definizione potrebbe cambiare. Consultare POST /serving-endpoints/{name}/invocations.


curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d  '{ "input": "Embed this sentence!"}' \
https://<workspace_host>.databricks.com/serving-endpoints/databricks-gte-large-en/invocations

MLflow Deployments SDK

Importante

Il seguente esempio usa l'API predict() di MLflow Implementazioni SDK.


import mlflow.deployments

export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"

client = mlflow.deployments.get_deploy_client("databricks")

embeddings_response = client.predict(
    endpoint="databricks-gte-large-en",
    inputs={
        "input": "Here is some text to embed"
    }
)

Databricks Python SDK


from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="databricks-gte-large-en",
    input="Embed this sentence!"
)
print(response.data[0].embedding)

LangChain

Per usare un Databricks API modello di base in LangChain come modello di embedding, importare la classe DatabricksEmbeddings e specificare il parametro endpoint come segue:

%pip install databricks-langchain
from langchain_databricks import DatabricksEmbeddings

embeddings = DatabricksEmbeddings(endpoint="databricks-gte-large-en")
embeddings.embed_query("Can you explain AI in ten words?")

SQL

Importante

Nel seguente esempio viene usata la funzione SQL predefinita ai_query. Questa funzione è in Anteprima pubblica e la definizione potrebbe cambiare. Consultare Eseguire query su un modello servito con ai_query().


SELECT ai_query(
    "databricks-gte-large-en",
    "Can you explain AI in ten words?"
  )

Di seguito è riportato il formato di richiesta previsto per un modello embedding. Per i modelli esterni, è possibile includere parametri aggiuntivi validi per un determinato provider e configurazione dell'endpoint. Consultare Ulteriori parametri delle query.


{
  "input": [
    "embedding text"
  ]
}

La risposta prevista è la seguente:

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": []
    }
  ],
  "model": "text-embedding-ada-002-v2",
  "usage": {
    "prompt_tokens": 2,
    "total_tokens": 2
  }
}

Controllare se gli incorporamenti sono normalizzati

Usare quanto segue per verificare se gli incorporamenti generati dal modello sono normalizzati.


  import numpy as np

  def is_normalized(vector: list[float], tol=1e-3) -> bool:
      magnitude = np.linalg.norm(vector)
      return abs(magnitude - 1) < tol

Eseguire query su un modello di completamento del testo

Client OpenAI

Importante

L'esecuzione di query sui modelli di completamento del testo resi disponibili tramite le API modello di base con pagamento in base al token tramite il client OpenAI non è supportata. In questa sezione è supportata solo l'esecuzione di query su modelli esterni che usano il client OpenAI.

Per usare il client OpenAI, specificare il nome dell'endpoint di gestione del modello come model input. L'esempio seguente esegue una query sul modello di completamento claude-2 ospitato da Anthropic usando il client OpenAI. Per usare il client OpenAI, popolare il campo model con il nome dell'endpoint di gestione del modello che ospita il modello su cui eseguire la query.

In questo esempio viene usato un endpoint creato precedentemente, anthropic-completions-endpoint, configurato per accedere a modelli esterni dal provider di modelli Anthropic. Vedere come creare endpoint del modello esterno.

Vedere Modelli supportati per i modelli aggiuntivi su cui è possibile eseguire query e i relativi provider.


from databricks.sdk import WorkspaceClient

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

completion = openai_client.completions.create(
model="anthropic-completions-endpoint",
prompt="what is databricks",
temperature=1.0
)
print(completion)

REST API

Di seguito è riportata una richiesta di completamento per l'esecuzione di query su un modello di completamenti reso disponibile tramite modelli esterni.

Importante

L'esempio seguente usa i parametri dell'API REST per l'esecuzione di query sugli endpoint che servono modelli esterni. Questi parametri sono in Anteprima pubblica e la definizione potrebbe cambiare. Consultare POST /serving-endpoints/{name}/invocations.


curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{"prompt": "What is a quoll?", "max_tokens": 64}' \
https://<workspace_host>.databricks.com/serving-endpoints/<completions-model-endpoint>/invocations

MLflow Deployments SDK

Di seguito è riportata una richiesta di completamento per l'esecuzione di query su un modello di completamenti reso disponibile tramite modelli esterni.

Importante

Il seguente esempio usa l'API predict() di MLflow Implementazioni SDK.


import os
import mlflow.deployments

# Only required when running this example outside of a Databricks Notebook

os.environ['DATABRICKS_HOST'] = "https://<workspace_host>.databricks.com"
os.environ['DATABRICKS_TOKEN'] = "dapi-your-databricks-token"

client = mlflow.deployments.get_deploy_client("databricks")

completions_response = client.predict(
    endpoint="<completions-model-endpoint>",
    inputs={
        "prompt": "What is the capital of France?",
        "temperature": 0.1,
        "max_tokens": 10,
        "n": 2
    }
)

# Print the response
print(completions_response)

Databricks Python SDK

Di seguito è riportata una richiesta di completamento per l'esecuzione di query su un modello di completamenti reso disponibile tramite modelli esterni.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="<completions-model-endpoint>",
    prompt="Write 3 reasons why you should train an AI model on domain specific data sets."
)
print(response.choices[0].text)

SQL

Importante

Nel seguente esempio viene usata la funzione SQL predefinita ai_query. Questa funzione è in Anteprima pubblica e la definizione potrebbe cambiare. Consultare Eseguire query su un modello servito con ai_query().

SELECT ai_query(
    "<completions-model-endpoint>",
    "Can you explain AI in ten words?"
  )

Di seguito è riportato il formato di richiesta previsto per un modello di completamento. Per i modelli esterni, è possibile includere parametri aggiuntivi validi per un determinato provider e configurazione dell'endpoint. Consultare Ulteriori parametri delle query.

{
  "prompt": "What is mlflow?",
  "max_tokens": 100,
  "temperature": 0.1,
  "stop": [
    "Human:"
  ],
  "n": 1,
  "stream": false,
  "extra_params":
  {
    "top_p": 0.9
  }
}

La risposta prevista è la seguente:

{
  "id": "cmpl-8FwDGc22M13XMnRuessZ15dG622BH",
  "object": "text_completion",
  "created": 1698809382,
  "model": "gpt-3.5-turbo-instruct",
  "choices": [
    {
    "text": "MLflow is an open-source platform for managing the end-to-end machine learning lifecycle. It provides tools for tracking experiments, managing and deploying models, and collaborating on projects. MLflow also supports various machine learning frameworks and languages, making it easier to work with different tools and environments. It is designed to help data scientists and machine learning engineers streamline their workflows and improve the reproducibility and scalability of their models.",
    "index": 0,
    "logprobs": null,
    "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 5,
    "completion_tokens": 83,
    "total_tokens": 88
  }
}

Chat con LLM supportati con usando AI Playground

È possibile interagire con i modelli linguistici di grandi dimensioni supportati usando AI Playground. AI Playground è un ambiente simile a una chat in cui è possibile testare, richiedere e confrontare LLM dall'area di lavoro di Azure Databricks.

AI Playground

Risorse aggiuntive