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 Gemini Enterprise Agent Platform sans enregistrer le point de terminaison. Vous pouvez utiliser la fonction google_ml.predict_row() dans le schéma google_ml avec n'importe quel modèle enregistré dans 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 autoriser AlloyDB à appeler des prédictions, procédez comme suit :
- Vous pouvez appeler des prédictions dans les régions où l'IA générative sur Agent Platform est disponible. Pour obtenir la liste des régions, consultez la section Déploiements et points de terminaison.
- Connectez-vous à votre base de données à l'aide de
psqlou d'AlloyDB pour PostgreSQL Studio. - Vérifiez que l'extension
google_ml_integrationest installée. - Vérifiez que l'indicateur
google_ml_integration.enable_model_supportest défini suron. - Avant de pouvoir appeler des prédictions à partir d'une base de données AlloyDB, vous devez configurer AlloyDB pour qu'il fonctionne avec Agent Platform. Pour en savoir plus, consultez la section Intégrer votre base de données à Agent Platform.
- Vous devez disposer d'un modèle Agent Platform actif avec un point de terminaison actif auquel vous avez accès via l'autorisation IAM (Identity and Access Management). AlloyDB ne permet pas d'utiliser les points de terminaison privés pour obtenir des prédictions en ligne.
Accordez aux utilisateurs de la base de données les autorisations nécessaires pour exécuter la fonction de prédiction afin d'appeler des prédictions :
\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 sur laquelle les autorisations doivent être accordées
USER_NAME : nom de l'utilisateur pour lequel les autorisations doivent être accordées
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 Model Garden ou en tant que point de terminaison s'exécutant dans un Google Cloud projet.
Utiliser un modèle dans Model Garden
Pour appeler une prédiction en ligne à l'aide d'un modèle de ML qui s'exécute dans 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 Google Cloud projetREGION_ID: ID de la Google Cloud région dans laquelle se trouve le modèle, par exempleus-central1pour gemini-proMODEL_ID: ID du modèle de ML à utiliser, par exemple gemini-proCONTENTS: 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 obtenir des exemples, consultez Exemples d'appels.
Utiliser un point de terminaison de modèle Agent Platform
Pour appeler une prédiction en ligne à l'aide d'un point de terminaison de modèle Agent Platform, 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 Google Cloud projet dans lequel se trouve le modèleREGION_ID: ID de la Google Cloud région dans laquelle se trouve le modèle, par exempleus-central1ENDPOINT_ID: ID du point de terminaison du modèleCONTENTS: 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'un prompt court fourni 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.messagede la base de données actuelle comme entrée.L'exemple montre comment utiliser la
json_build_object()fonction 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 la section Démarrage rapide avec l'API Agent Platform
API.
Étape suivante
- Découvrez comment créer un assistant d'achat intelligent avec AlloyDB, pgvector et la gestion des points de terminaison de modèle.
- En savoir plus sur la documentation de référence sur la gestion des points de terminaison de modèle.