Appeler des prédictions

Cette page explique comment appeler des prédictions à l'aide de fonctions des espaces de noms public et google_ml. L'extension google_ml_integration inclut des fonctions de prédiction pour ces espaces de noms.

Vous pouvez utiliser la fonction ml_predict_row() dans le schéma public avec n'importe quel modèle générique hébergé dans Vertex AI sans enregistrer le point de terminaison. La fonction google_ml.predict_row() du schéma google_ml peut être utilisée avec n'importe quel modèle enregistré auprès de la gestion des points de terminaison de modèle.

Pour appeler des prédictions, sélectionnez l'un des schémas suivants.

Avant de commencer

Pour permettre à AlloyDB d'appeler des prédictions, procédez comme suit :

Appeler des prédictions en ligne

Utilisez 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 google_ml.predict_row() :

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{ CONTENTS }');

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud

  • REGION_ID : ID de la région Google Cloud dans laquelle se trouve le modèle (par exemple, us-central1 pour gemini-pro)

  • MODEL_ID : ID du modèle de ML à utiliser (par exemple, gemini-pro)

  • CONTENTS : entrées de l'appel de prédiction, au format JSON.

Si le modèle de ML est stocké dans le même projet et la même région que votre cluster AlloyDB, vous pouvez abréger le premier argument de cette fonction :

SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');

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('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud dans lequel se trouve le modèle

  • REGION_ID : ID de la région Google Cloud dans laquelle se trouve le modèle (par exemple, us-central1)

  • ENDPOINT_ID : ID du point de terminaison du modèle

  • CONTENTS : entrées de l'appel de prédiction, au format JSON.

Si le point de terminaison se trouve dans le même projet et la même région que votre cluster AlloyDB, vous pouvez abréger le premier argument de cette fonction :

SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');

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 gemini-pro, 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
  json_array_elements(ml_predict_row('publishers/google/models/gemini-1.5-pro:streamGenerateContent',
      '{ "contents": [ { "role": "user", "parts": [ { "text": "For TPCH database schema as mentioned here https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-H_v3.0.1.pdf , generate a SQL query to find all supplier names which are located in the India nation."
} ] } ] }'))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';

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/gemini-1.5-pro:generateContent', json_build_object('contents', json_build_object('text', message))) from messages;

L'objet JSON renvoyé contient désormais une entrée dans son tableau predictions pour chaque ligne du tableau messages.

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/gemini-1.5-pro:generateContent', json_build_object('contents', json_build_object('text', message)))->'predictions'->0->'content' FROM messages;

Pour obtenir d'autres exemples d'arguments pour ml_predict_row(), consultez Démarrage rapide avec l'API Vertex AI.

Étapes suivantes