Documentation de référence sur la gestion des points de terminaison du modèle

Cette page liste les paramètres de différentes fonctions fournies par Cloud SQL pour enregistrer et gérer les points de terminaison de modèles. La page liste également les secrets que vous pouvez gérer à l'aide de la gestion des points de terminaison de modèle.

Modèles

Utilisez cette référence pour comprendre les paramètres des fonctions qui vous permettent de gérer les points de terminaison des modèles.

mysql.ml_create_model_registration()

L'exemple suivant montre comment utiliser la fonction mysql.ml_create_model_registration() pour enregistrer les métadonnées du point de terminaison du modèle :

  CALL
    mysql.ml_create_model_registration(
      'MODEL_ID',
      'REQUEST_URL',
      'PROVIDER_ID',
      'MODEL_TYPE',
      'MODEL_QUALIFIED_NAME',
      'AUTH_TYPE',
      'AUTH_ID',
      'GENERATE_HEADER_FUNCTION',
      'INPUT_TRANSFORM_FUNCTION',
      'OUTPUT_TRANSFORM_FUNCTION');
Paramètre Obligatoire Description
MODEL_ID Obligatoire pour tous les points de terminaison de modèle ID unique du point de terminaison du modèle que vous définissez.
REQUEST_URL Peut être NULL pour les modèles Vertex AI Point de terminaison spécifique au modèle lors de l'ajout d'autres points de terminaison d'intégration de texte et de modèle générique.

L'URL de la requête que la fonction génère pour les points de terminaison de modèles intégrés fait référence au projet et à la région ou à l'emplacement de votre cluster. Si vous souhaitez faire référence à un autre projet, assurez-vous de spécifier explicitement model_request_url.

Pour les points de terminaison de modèles hébergés personnalisés, assurez-vous qu'ils sont accessibles sur Internet.

PROVIDER_ID Obligatoire pour les points de terminaison de modèle d'embedding de texte avec prise en charge intégrée Fournisseur du point de terminaison du modèle. La valeur par défaut est custom. Pour Cloud SQL, définissez le fournisseur sur google pour les points de terminaison de modèle Vertex AI, open_ai pour les points de terminaison de modèle OpenAI, anthropic pour les points de terminaison de modèle Anthropic, hugging_face pour les points de terminaison de modèle Hugging Face ou custom pour les points de terminaison de modèle hébergés personnalisés.
MODEL_TYPE Peut être NULL pour les points de terminaison de modèle génériques Type de modèle. Vous pouvez définir cette valeur sur text_embedding pour les points de terminaison de modèle d'embedding de texte ou sur generic pour tous les autres points de terminaison de modèle.
MODEL_QUALIFIED_NAME Obligatoire pour les points de terminaison des modèles OpenAI. Peut être NULL pour les autres points de terminaison des modèles. Nom complet si le point de terminaison du modèle comporte plusieurs versions ou si le point de terminaison du modèle le définit (par exemple, textembedding-gecko@001 ou textembedding-gecko@002). Étant donné que le modèle textembedding-gecko@001 est préenregistré avec la gestion des points de terminaison de modèle, vous pouvez générer des embeddings en utilisant textembedding-gecko@001 comme ID de modèle.
AUTH_TYPE Peut être NULL, sauf si le point de terminaison du modèle a une exigence d'authentification spécifique Type d'authentification utilisé par le point de terminaison du modèle. Vous pouvez le définir sur auth_type_cloudsql_service_agent_iam pour les modèles Vertex AI ou sur auth_type_secret_manager pour les autres fournisseurs.
AUTH_ID Transmettez la valeur NULL pour les points de terminaison Vertex AI. Cette valeur est obligatoire pour tous les autres points de terminaison de modèle qui stockent des secrets dans Secret Manager. ID secret que vous définissez et qui est utilisé par la suite lors de l'enregistrement d'un point de terminaison de modèle.
GENERATE_HEADER_FUNCTION Peut être NULL Nom de la fonction que vous avez définie pour générer des en-têtes personnalisés. La signature de cette fonction dépend de la fonction mysql.ml_predict_row(). Consultez la fonction de génération d'en-tête HTTP.
INPUT_TRANSFORM_FUNCTION Facultatif pour les points de terminaison de modèle d'embedding de texte avec prise en charge intégrée. Ne définissez pas cette option pour les points de terminaison de modèle génériques. Fonction permettant de transformer l'entrée de la fonction de prédiction correspondante en entrée spécifique au modèle. Consultez la page Fonctions de transformation.
OUTPUT_TRANSFORM_FUNCTION Facultatif pour les points de terminaison de modèle d'embedding de texte avec prise en charge intégrée. Ne définissez pas cette option pour les points de terminaison de modèle génériques. Fonction permettant de transformer la sortie spécifique au modèle en sortie de la fonction de prédiction. Consultez la page Fonctions de transformation.

mysql.ml_alter_model_registration()

L'exemple suivant montre comment appeler la fonction SQL mysql.ml_alter_model_registration() utilisée pour mettre à jour les métadonnées du point de terminaison du modèle :

    CALL
    mysql.ml_alter_model_registration(
      'MODEL_ID',
      'REQUEST_URL',
      'PROVIDER_ID',
      'MODEL_TYPE',
      'MODEL_QUALIFIED_NAME',
      'AUTH_TYPE',
      'AUTH_ID',
      'GENERATE_HEADER_FUNCTION',
      'INPUT_TRANSFORM_FUNCTION',
      'OUTPUT_TRANSFORM_FUNCTION');

mysql.ml_drop_model_registration()

L'exemple suivant montre comment appeler la fonction SQL mysql.ml_drop_model_registration() utilisée pour supprimer un point de terminaison de modèle :

  CALL mysql.ml_drop_model_registration('MODEL_ID');
Paramètre Description
MODEL_ID ID unique du point de terminaison du modèle que vous définissez.

mysql.ml_list_registered_model()

L'exemple suivant montre comment appeler la fonction SQL mysql.ml_list_registered_model() utilisée pour lister les informations sur les points de terminaison de modèle :

  SELECT mysql.ml_list_registered_model('MODEL_ID');
Paramètre Description
MODEL_ID ID unique du point de terminaison du modèle que vous définissez.

mysql.cloudsql_ml_models

L'exemple suivant montre comment interroger la table mysql.cloudsql_ml_models utilisée pour lister les informations sur les points de terminaison de modèle pour tous les points de terminaison de modèle :

  SELECT * FROM mysql.cloudsql_ml_models;

Secrets

Utilisez cette référence pour comprendre les paramètres des fonctions qui vous permettent de gérer les secrets.

mysql.ml_create_sm_secret_registration()

L'exemple suivant montre comment appeler la fonction SQL mysql.ml_create_sm_secret_registration() utilisée pour ajouter le secret créé dans Secret Manager :

    CALL
    mysql.ml_create_sm_secret_registration(
      'SECRET_ID',
      'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Paramètre Description
SECRET_ID ID secret que vous définissez et qui est utilisé par la suite lors de l'enregistrement d'un point de terminaison de modèle.
PROJECT_ID ID de votre projet Trusted Cloud by S3NS contenant le secret. Ce projet peut être différent de celui qui contient votre instance Cloud SQL.
SECRET_MANAGER_SECRET_ID ID du secret défini dans Secret Manager lorsque vous avez créé le secret.
VERSION_NUMBER Numéro de version de l'ID du secret.

mysql.ml_alter_sm_secret_registration()

L'exemple suivant montre comment appeler la fonction SQL mysql.ml_alter_sm_secret_registration() utilisée pour mettre à jour les informations secrètes :

  CALL
    mysql.ml_alter_sm_secret_registration(
      'SECRET_ID',
      'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Paramètre Description
SECRET_ID ID secret que vous définissez et qui est utilisé par la suite lors de l'enregistrement d'un point de terminaison de modèle.
PROJECT_ID ID de votre projet Trusted Cloud by S3NS contenant le secret. Ce projet peut être différent de celui qui contient votre instance Cloud SQL.
SECRET_MANAGER_SECRET_ID ID du secret défini dans Secret Manager lorsque vous avez créé le secret.
VERSION_NUMBER Numéro de version de l'ID du secret.

mysql.ml_drop_sm_secret_registration()

L'exemple suivant montre comment appeler la fonction SQL mysql.ml_drop_sm_secret_registration() utilisée pour supprimer un secret :

  CALL mysql.ml_drop_sm_secret_registration('SECRET_ID');
Paramètre Description
SECRET_ID ID secret que vous définissez et qui est utilisé par la suite lors de l'enregistrement d'un point de terminaison de modèle.

Fonctions de prédiction

Utilisez cette référence pour comprendre les paramètres des fonctions qui vous permettent de générer des embeddings ou d'appeler des prédictions.

mysql.ml_embedding()

Voici comment générer des embeddings :

SELECT
  mysql.ml_embedding(
    'MODEL_ID',
    'CONTENT');
Paramètre Description
MODEL_ID ID unique du point de terminaison du modèle que vous définissez.
CONTENT texte à traduire en embedding vectoriel.

Pour obtenir des exemples de requêtes SQL permettant de générer des embeddings de texte, consultez Exemples.

mysql.ml_predict_row()

Voici comment appeler des prédictions :

SELECT
  mysql.ml_predict_row(
    'MODEL_ID',
    'REQUEST_BODY');
Paramètre Description
MODEL_ID ID unique du point de terminaison du modèle que vous définissez.
REQUEST_BODY Paramètres de la fonction de prédiction, au format JSON.

Pour obtenir des exemples de requêtes SQL permettant d'appeler des prédictions, consultez Exemples.

Fonctions de transformation

Utilisez cette référence pour comprendre les paramètres des fonctions de transformation d'entrée et de sortie.

Fonction de transformation des entrées

Vous trouverez ci-dessous la signature de la fonction de prédiction pour les points de terminaison des modèles de représentations vectorielles continues de texte :

  CREATE FUNCTION IF NOT EXISTS
  INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON DETERMINISTIC;
Paramètre Description
INPUT_TRANSFORM_FUNCTION Fonction permettant de transformer l'entrée de la fonction de prédiction correspondante en entrée spécifique au point de terminaison du modèle.

Fonction de transformation de la sortie

Vous trouverez ci-dessous la signature de la fonction de prédiction pour les points de terminaison des modèles de représentations vectorielles continues de texte :

  CREATE FUNCTION IF NOT EXISTS
  OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS BLOB DETERMINISTIC;
Paramètre Description
OUTPUT_TRANSFORM_FUNCTION Fonction permettant de transformer la sortie spécifique au point de terminaison du modèle en sortie de la fonction de prédiction.

Exemple de fonctions de transformation

Pour mieux comprendre comment créer des fonctions de transformation pour le point de terminaison de votre modèle, prenons l'exemple d'un point de terminaison de modèle d'embedding de texte hébergé sur mesure qui nécessite des entrées et des sorties JSON.

La requête curl suivante crée des embeddings en fonction de l'invite et du point de terminaison du modèle :

  curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
    -H "Content-Type: application/json"
    -d '{"prompt": ["Cloud SQL Embeddings"]}'

La réponse suivante est renvoyée :

[[ 0.3522231  -0.35932037  0.10156056  0.17734447 -0.11606089 -0.17266059
   0.02509351  0.20305622 -0.09787305 -0.12154685 -0.17313677 -0.08075467
   0.06821183 -0.06896557  0.1171584  -0.00931572  0.11875633 -0.00077482
   0.25604948  0.0519384   0.2034983  -0.09952664  0.10347155 -0.11935943
  -0.17872004 -0.08706985 -0.07056875 -0.05929353  0.4177883  -0.14381726
   0.07934926  0.31368294  0.12543282  0.10758053 -0.30210832 -0.02951015
   0.3908268  -0.03091059  0.05302926 -0.00114946 -0.16233777  0.1117468
  -0.1315904   0.13947351 -0.29569918 -0.12330773 -0.04354299 -0.18068913
   0.14445548  0.19481727]]

Sur la base de cette entrée et de cette réponse, vous pouvez déduire les éléments suivants :

  • Le modèle s'attend à une entrée JSON via le champ prompt. Ce champ accepte un tableau d'entrées. Comme la fonction mysql.ml_embedding() est une fonction au niveau de la ligne, elle s'attend à une entrée de texte à la fois. Vous devez donc créer une fonction de transformation d'entrée qui crée un tableau avec un seul élément.

  • La réponse du modèle est un tableau d'embeddings, un pour chaque requête saisie dans le modèle. Comme la fonction mysql.ml_embedding() est une fonction au niveau de la ligne, elle renvoie une seule entrée à la fois. Vous devez donc créer une fonction de transformation de sortie qui peut être utilisée pour extraire l'embedding du tableau.

L'exemple suivant montre les fonctions de transformation d'entrée et de sortie utilisées pour ce point de terminaison de modèle lorsqu'il est enregistré auprès de la gestion des points de terminaison de modèle :

fonction de transformation d'entrée

DELIMITER $$
CREATE FUNCTION IF NOT EXISTS cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
DETERMINISTIC

BEGIN
  RETURN JSON_OBJECT('prompt', JSON_ARRAY(input_text));
END $$

fonction de transformation de la sortie

CREATE FUNCTION IF NOT EXISTS cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON)
RETURNS BLOB
DETERMINISTIC

BEGIN
  RETURN STRING_TO_VECTOR(
         JSON_EXTRACT(
              content,
              '$.predictions[0].embeddings.values'
            )
    );

END $$
DELIMITER ;

HTTP header generation function

The following shows signature for the header generation function that can be used with the `mysql.ml_embedding()` prediction function when registering other text embedding model endpoints.

  CREATE FUNCTION IF NOT EXISTS GENERATE_HEADERS(model_id VARCHAR(100), input_text TEXT) RETURNS JSON DETERMINISTIC;

For the mysql.ml_predict_row() prediction function, the signature is as follows:

CREATE FUNCTION IF NOT EXISTS GENERATE_HEADERS(model_id TEXT, input JSON) RETURNS JSON DETERMINISTIC;
Parameter Description
GENERATE_HEADERS The function to generate custom headers. You can also pass the authorization header generated by the header generation function while registering the model endpoint.

Header generation function example

To better understand how to create a function that generates output in JSON key value pairs that are used as HTTP headers, consider a custom-hosted text embedding model endpoint.

The following example curl request passes the version HTTP header, which is used by the model endpoint:

  curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
      -H "Content-Type: application/json" \
      -H "version: 2024-01-01" \
      -d '{"prompt": ["Cloud SQL Embeddings"]}'

The model expects text input through the version field and returns the version value in JSON format. The following example shows the header generation function that is used for this text embedding model endpoint when it is registered with model endpoint management:

DELIMITER $$
CREATE FUNCTION IF NOT EXISTS header_gen_fn(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
DETERMINISTIC
BEGIN
  RETURN JSON_OBJECT('version', '2024-01-01');
END;
$$
DELIMITER ;