Cette page liste les paramètres des différentes fonctions fournies par l'extension google_ml_integration
pour enregistrer et gérer les points de terminaison des 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. Pour utiliser des modèles d'IA dans des environnements de production, consultez Créer des applications d'IA générative à l'aide de Cloud SQL.
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.
google_ml.create_model()
L'exemple suivant montre comment appeler la fonction SQL google_ml.create_model()
utilisée pour enregistrer les métadonnées du point de terminaison du modèle :
CALL
google_ml.create_model(
model_id => 'MODEL_ID',
model_request_url => 'REQUEST_URL',
model_provider => 'PROVIDER_ID',
model_type => 'MODEL_TYPE',
model_qualified_name => 'MODEL_QUALIFIED_NAME',
model_auth_type => 'AUTH_TYPE',
model_auth_id => 'AUTH_ID',
generate_headers_fn => 'GENERATE_HEADER_FUNCTION',
model_in_transform_fn => 'INPUT_TRANSFORM_FUNCTION',
model_out_transform_fn => 'OUTPUT_TRANSFORM_FUNCTION');
Paramètre | Obligatoire | Description |
---|---|---|
MODEL_ID |
Obligatoire pour tous les points de terminaison du modèle | ID unique du point de terminaison du modèle que vous définissez. |
REQUEST_URL |
Facultatif pour les points de terminaison de modèle d'embedding de texte avec prise en charge intégrée |
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 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 |
facultatif 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, facultatif 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 |
Facultatif, sauf si le point de terminaison du modèle présente une exigence d'authentification spécifique | Type d'authentification utilisé par le point de terminaison du modèle. Vous pouvez le définir sur cloudsql_service_agent_iam pour les modèles Vertex AI ou sur secret_manager pour les autres fournisseurs. |
AUTH_ID |
Ne pas définir pour les points de terminaison de modèle Vertex AI ; 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 |
facultatif | 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 google_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 valeur 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 valeur 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. |
google_ml.alter_model()
L'exemple suivant montre comment appeler la fonction SQL google_ml.alter_model()
utilisée pour mettre à jour les métadonnées du point de terminaison du modèle :
CALL
google_ml.alter_model(
model_id => 'MODEL_ID',
model_request_url => 'REQUEST_URL',
model_provider => 'PROVIDER_ID',
model_type => 'MODEL_TYPE',
model_qualified_name => 'MODEL_QUALIFIED_NAME',
model_auth_type => 'AUTH_TYPE',
model_auth_id => 'AUTH_ID',
generate_headers_fn => 'GENERATE_HEADER_FUNCTION',
model_in_transform_fn => 'INPUT_TRANSFORM_FUNCTION',
model_out_transform_fn => 'OUTPUT_TRANSFORM_FUNCTION');
google_ml.drop_model()
L'exemple suivant montre comment appeler la fonction SQL google_ml.drop_model()
utilisée pour supprimer un point de terminaison de modèle :
CALL google_ml.drop_model('MODEL_ID');
Paramètre | Description |
---|---|
MODEL_ID |
ID unique du point de terminaison du modèle que vous définissez. |
google_ml.list_model()
L'exemple suivant montre comment appeler la fonction SQL google_ml.list_model()
utilisée pour lister les informations sur les points de terminaison de modèle :
SELECT google_ml.list_model('MODEL_ID');
Paramètre | Description |
---|---|
MODEL_ID |
ID unique du point de terminaison du modèle que vous définissez. |
google_ml.model_info_view
L'exemple suivant montre comment appeler la vue google_ml.model_info_view
utilisée pour lister les informations des points de terminaison de modèle pour tous les points de terminaison de modèle :
SELECT * FROM google_ml.model_info_view;
Secrets
Utilisez cette référence pour comprendre les paramètres des fonctions qui vous permettent de gérer les secrets.
google_ml.create_sm_secret()
L'exemple suivant montre comment appeler la fonction SQL google_ml.create_sm_secret()
utilisée pour ajouter le secret créé dans Secret Manager :
CALL
google_ml.create_sm_secret(
secret_id => 'SECRET_ID',
secret_path => '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 Google Cloud contenant le secret. Ce projet peut être différent de celui contenant 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. |
google_ml.alter_sm_secret()
L'exemple suivant montre comment appeler la fonction SQL google_ml.alter_sm_secret()
utilisée pour mettre à jour les informations secrètes :
CALL
google_ml.alter_sm_secret(
secret_id => 'SECRET_ID',
secret_path => '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 Google Cloud contenant le secret. Ce projet peut être différent de celui contenant 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. |
google_ml.drop_sm_secret()
L'exemple suivant montre comment appeler la fonction SQL google_ml.drop_sm_secret()
utilisée pour supprimer un secret :
CALL google_ml.drop_sm_secret('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.
google_ml.embedding()
Voici comment générer des embeddings :
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
contents => '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.
google_ml.predict_row()
Voici comment appeler des prédictions :
SELECT
google_ml.predict_row(
model_id => 'MODEL_ID',
request_body => '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 OR REPLACE FUNCTION INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
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 OR REPLACE FUNCTION OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS real[];
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.
L'exemple de requête cURL suivant 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 fonctiongoogle_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
google_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
CREATE OR REPLACE FUNCTION cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
LANGUAGE plpgsql
AS $$
DECLARE
transformed_input JSON;
model_qualified_name TEXT;
BEGIN
SELECT json_build_object('prompt', json_build_array(input_text))::JSON INTO transformed_input;
RETURN transformed_input;
END;
$$;
fonction de transformation de la sortie
CREATE OR REPLACE FUNCTION cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON)
RETURNS REAL[]
LANGUAGE plpgsql
AS $$
DECLARE
transformed_output REAL[];
BEGIN
SELECT ARRAY(SELECT json_array_elements_text(response_json->0)) INTO transformed_output;
RETURN transformed_output;
END;
$$;
Fonction de génération d'en-tête HTTP
Vous trouverez ci-dessous la signature de la fonction de génération d'en-tête qui peut être utilisée avec la fonction de prédiction google_ml.embedding()
lors de l'enregistrement d'autres points de terminaison de modèle d'embedding de texte.
CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
Pour la fonction de prédiction google_ml.predict_row()
, la signature est la suivante :
CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id TEXT, input JSON) RETURNS JSON;
Paramètre | Description |
---|---|
GENERATE_HEADERS |
Fonction permettant de générer des en-têtes personnalisés. Vous pouvez également transmettre l'en-tête d'autorisation généré par la fonction de génération d'en-tête lors de l'enregistrement du point de terminaison du modèle. |
Exemple de fonction de génération d'en-tête
Pour mieux comprendre comment créer une fonction qui génère des résultats sous forme de paires clé/valeur JSON utilisées comme en-têtes HTTP, prenons l'exemple d'un point de terminaison de modèle d'embedding de texte hébergé sur mesure.
L'exemple de requête cURL suivant transmet l'en-tête HTTP version
, qui est utilisé par le point de terminaison du modèle :
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"]}'
Le modèle s'attend à recevoir une entrée de texte via le champ version
et renvoie la valeur de la version au format JSON. L'exemple suivant montre la fonction de génération d'en-tête utilisée pour ce point de terminaison de modèle d'embedding de texte lorsqu'il est enregistré auprès de la gestion des points de terminaison de modèle :
CREATE OR REPLACE FUNCTION header_gen_fn(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
LANGUAGE plpgsql
AS $$
BEGIN
RETURN json_build_object('version', '2024-01-01')::JSON;
END;
$$;
Génération d'URL de requête
Utilisez la fonction de génération d'URL de requête pour déduire les URL de requête pour les points de terminaison de modèle avec prise en charge intégrée. Vous trouverez ci-dessous la signature de cette fonction :
CREATE OR REPLACE FUNCTION GENERATE_REQUEST_URL(provider google_ml.model_provider, model_type google_ml.MODEL_TYPE, model_qualified_name VARCHAR(100), model_region VARCHAR(100) DEFAULT NULL)
Paramètre | Description |
---|---|
GENERATE_REQUEST_URL |
Fonction permettant de générer l'URL de la requête générée par l'extension pour les points de terminaison de modèle avec prise en charge intégrée. |