Cette page vous explique comment appeler des prédictions en ligne à partir d'une instance Cloud SQL pour PostgreSQL.
Cloud SQL vous permet d'obtenir des prédictions en ligne dans votre code SQL en appelant la fonction ml_predict_row()
. Pour en savoir plus, consultez la page Créer des applications d'IA générative à l'aide de Cloud SQL.
Avant de commencer
Avant de pouvoir appeler des prédictions en ligne à partir d'une instance Cloud SQL, vous devez préparer votre base de données et sélectionner un modèle de ML approprié.
Préparer votre base de données
Pour préparer votre base de données, procédez comme suit :
Accordez aux utilisateurs de la base de données les autorisations nécessaires pour utiliser la fonction
ml_predict_row()
pour exécuter des prédictions :Connectez un client
psql
à l'instance principale, comme décrit dans la section Se connecter à l'aide d'un client psql.À l'invite de commande
psql
, connectez-vous à la base de données et accordez des autorisations :\c DB_NAME GRANT EXECUTE ON FUNCTION ml_predict_row TO USER_NAME;
Remplacez les éléments suivants :
DB_NAME : nom de la base de données pour laquelle vous accordez des autorisations.
USER_NAME : nom de l'utilisateur pour lequel vous accordez des autorisations.
Sélectionner un modèle de ML
Lorsque vous appelez la fonction ml_predict_row()
, vous devez spécifier l'emplacement d'un modèle de ML.
Le modèle que vous spécifiez peut être l'un des suivants :
Un modèle qui s'exécute dans lModel Garden de Vertex AI.
La fonction
ml_predict_row()
ne permet d'appeler des prédictions que sur des modèles tabulaires ou personnalisés.Un modèle Vertex AI avec un point de terminaison actif auquel vous avez accès via l'autorisation IAM (Identity and Access Management).
Cloud SQL ne permet pas d'utiliser les points de terminaison privés pour obtenir des prédictions en ligne.
Appeler des prédictions en ligne
Vous pouvez utiliser la fonction SQL ml_predict_row()
pour appeler des prédictions en ligne sur vos données.
Le format de l'argument initial de la fonction dépend de la présence du modèle de ML que vous souhaitez utiliser dans Vertex AI Model Garden ou en tant que point de terminaison s'exécutant dans un projet Google Cloud.
Utiliser un modèle dans Vertex AI Model Garden
Pour appeler une prédiction en ligne à l'aide d'un modèle de ML qui s'exécute dans Vertex AI Model Garden, utilisez la syntaxe suivante pour la fonction SQL ml_predict_row()
:
SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
Effectuez les remplacements suivants :
MODEL_ID : ID du modèle de ML à utiliser (par exemple,
text-bison
pour PaLM 2 pour le texte)INSTANCES : entrées de l'appel de prédiction, au format JSON.
PARAMETERS : paramètres de l'appel de prédiction, au format JSON.
SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
Pour en savoir plus sur les messages de réponse JSON du modèle, consultez la documentation de référence sur le modèle de base de l'IA générative. Pour obtenir des exemples, consultez Exemples d'appels.
Utiliser un point de terminaison de modèle Vertex AI
Pour appeler une prédiction en ligne à l'aide d'un point de terminaison de modèle Vertex AI, utilisez la syntaxe suivante pour la fonction SQL ml_predict_row()
:
SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
Effectuez les remplacements suivants :
ENDPOINT_ID : ID du point de terminaison du modèle
INSTANCES : entrées de l'appel de prédiction, au format JSON.
PARAMETERS : paramètres de l'appel de prédiction, au format JSON.
Pour en savoir plus sur les messages de réponse JSON du modèle, consultez la section PredictResponse.
Exemples d'appels
L'exemple suivant utilise PaLM 2 pour le texte, disponible dans Model Garden, pour générer du texte à partir d'une requête courte fournie en tant qu'argument littéral à ml_predict_row()
:
select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison', '{"instances":[{"prompt": "What are three advantages of using Cloud SQL as my SQL database server?"}], "parameters":{"maxOutputTokens":1024, "topK": 40, "topP":0.8, "temperature":0.2}}');
La réponse est un objet JSON. Pour en savoir plus sur le format de l'objet, consultez la section Corps de la réponse.
L'exemple suivant modifie l'exemple précédent de différentes manières :
L'exemple utilise le contenu de la colonne
messages.message
de la base de données actuelle comme entrée.L'exemple montre comment utiliser la fonction
json_build_object()
pour faciliter la mise en forme des paramètres de la fonction.
select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison', json_build_object('instances', json_build_object('prompt', message), 'parameters', json_build_object('maxOutputTokens', 1024,'topK', 40,'topP', 0.8,'temperature', 0.2))) from messages;
Pour chaque ligne du tableau messages
, l'objet JSON renvoyé contient désormais une entrée dans son tableau predictions
.
Comme la réponse est un objet JSON, vous pouvez en extraire des champs spécifiques à l'aide de l'opérateur fléché PostgreSQL :
SELECT ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison',json_build_object('instances', json_build_object('prompt',message), 'parameters', json_build_object('maxOutputTokens', 1024,'topK', 40,'topP', 0.8,'temperature', 0.2)))->'predictions'->0->'content' FROM messages;
Pour obtenir d'autres exemples d'arguments pour ml_predict_row()
, consultez Essayez l'API Vertex AI Gemini.