Interroger un modèle d'intégration
Dans cet article, vous apprendrez à rédiger des query requests pour des modèles de fondation optimisés pour les tâches d'intégration et servis par Unity AI Gateway.
Les exemples de cet article s'appliquent à l'interrogation de modèles de fondation qui sont mis à disposition à l'aide de l'une des méthodes suivantes :
- APIs de modèles de fondation qui sont désignés comme modèles de fondation hébergés par Databricks .
- Les modèles externes qui sont appelés les modèles de fondation hébergés en dehors de Databricks .
Exigences
- Consultez Exigences.
- Installez le package approprié à votre cluster en fonction de l'option de client de requête que vous choisissez.
Exemples de query
Les exemples suivants sont basés sur Unity AI Gateway et les services de modèles. Si vous utilisez des Endpoint de diffusion de modèles au lieu de services de modèles, remplacez le nom du service de modèle par un nom d'Endpoint. Voir modèles de fondation hébergés par Databricks disponibles dans les API Foundation Model pour une liste des modèles de fondation disponibles ainsi que leurs noms de service de modèle et d'Endpoint.
Genie Code (mode Agent) peut le faire pour vous. Essayez cet exemple de prompt :
Show query examples that send embedding requests to the databricks-gte-large-en model using the DatabricksOpenAI helper, the plain OpenAI client, and a curl REST API call.
L'exemple suivant est une requête d'embeddings pour le modèle gte-large-en mis à disposition par les modèles externes.
- OpenAI client
- REST API
- MLflow Deployments SDK
- Databricks Python SDK
Pour utiliser le client OpenAI, spécifiez le nom de l'endpoint de déploiement de modèle comme entrée model.
from databricks_openai import DatabricksOpenAI
client = DatabricksOpenAI()
response = client.embeddings.create(
model="cohere-embeddings-endpoint",
input="what is databricks"
)
Pour interroger les modèles de fondation en dehors de votre workspace, vous devez utiliser le client OpenAI directement, comme démontré ci-dessous. L'exemple suivant suppose que vous disposez d'un jeton d'API Databricks et que openai est installé sur votre compute. Vous avez également besoin de votre instance de Workspace Databricks pour connecter le client OpenAI à 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="cohere-embeddings-endpoint",
input="what is databricks"
)
L'exemple suivant utilise les paramètres de l'API REST pour l'interrogation des endpoints de service qui servent des modèles externes. Ces paramètres sont en préversion publique et la définition pourrait changer. Consultez 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/<your-embedding-model-endpoint>/invocations
L'exemple suivant utilise l'API predict() du SDK de déploiement MLflow.
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="cohere-embeddings-endpoint",
inputs={
"input": "Here is some text to embed"
}
)
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole
w = WorkspaceClient()
response = w.serving_endpoints.query(
name="cohere-embeddings-endpoint",
input="Embed this sentence!"
)
print(response.data[0].embedding)
Voici le format de requête attendu pour un modèle d'intégrations. Pour les modèles externes, vous pouvez inclure des paramètres supplémentaires valides pour un fournisseur et une configuration d'endpoint donnés. Voir Paramètres de query supplémentaires.
{
"input": [
"embedding text"
]
}
Le format de réponse attendu est le suivant :
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": []
}
],
"model": "text-embedding-ada-002-v2",
"usage": {
"prompt_tokens": 2,
"total_tokens": 2
}
}
Modèles pris en charge
Consultez les types de modèles de fondation pour les modèles d'intégration pris en charge.
Vérifier si les intégrations sont normalisées
Utilisez les éléments suivants pour vérifier si les intégrations générées par votre modèle sont normalisées.
import numpy as np
def is_normalized(vector: list[float], tol=1e-3) -> bool:
magnitude = np.linalg.norm(vector)
return abs(magnitude - 1) < tol