Cloud SQL vous permet d'obtenir des prédictions en ligne dans votre code SQL en appelant la fonction mysql.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, configurez l'intégration entre Cloud SQL et Vertex AI.Sélectionner un modèle de ML
Lorsque vous appelez la fonction mysql.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
mysql.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 mysql.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 mysql.ml_predict_row()
:
SELECT mysql.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,
gemini-2.0
)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 mysql.ML_PREDICT_ROW('publishers/google/models/MODEL_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
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 mysql.ml_predict_row()
:
SELECT mysql.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 à mysql.ml_predict_row()
:
sql
select mysql.ML_PREDICT_ROW('publishers/google/models/gemini-2.0-flash:generateContent', '{
"contents": [{
"role": "user",
"parts": [{
"text": "Write me a short poem about MySQL"
}]
}]
}');
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_object()
pour faciliter la mise en forme des paramètres de la fonction.
select mysql.ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison', json_object('instances', json_object('prompt', message), 'parameters', json_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:
select JSON_EXTRACT(mysql.ml_PREDICT_ROW('publishers/google/models/gemini-2.0-flash:generateContent', JSON_OBJECT(
'contents', JSON_ARRAY(
JSON_OBJECT(
'role', 'user',
'parts', JSON_ARRAY(
JSON_OBJECT(
'text', message
)
)
)
)
)), '$.candidates[0].content.parts[0].text') from messages;
Pour obtenir d'autres exemples d'arguments pour ml_predict_row()
, consultez Essayez l'API Vertex AI Gemini.