Appeler des prédictions en ligne à partir d'instances Cloud SQL

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 :

  1. Configurez l'intégration entre Cloud SQL et Vertex AI.

  2. 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 :

    1. Connectez un client psql à l'instance principale, comme décrit dans la section Se connecter à l'aide d'un client psql.

    2. À 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.

Étapes suivantes