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é avec 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 :
- 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 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 Intégrer votre base de données à la plate-forme d'agents.
- 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 l'autorisation d'exécuter la fonction de prédiction pour 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 projet Google Cloud .
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 projet Google CloudREGION_ID: ID de la région Google Cloud dans laquelle se trouve le modèle (par exemple,us-central1pour 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 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 projet Google Cloud dans lequel se trouve le modèleREGION_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è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 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 Agent Platform.