Nesta página, mostramos como invocar previsões on-line de uma instância do Cloud SQL.
Com o Cloud SQL, é possível receber previsões on-line no
código SQL chamando a função
ml_predict_row(). Para mais informações, consulte Criar aplicativos de IA
generativa usando o Cloud SQL.
Antes de começar
Antes de invocar previsões on-line de uma instância do Cloud SQL, prepare seu banco de dados e selecione um modelo de ML apropriado.
Preparar o banco de dados
Para preparar seu banco de dados, configure a integração entre o Cloud SQL e a Vertex AI.
Conceda permissões aos usuários do banco de dados para usar a função
ml_predict_row()para executar previsões:Conecte um cliente
psqlà instância principal, conforme descrito em Conectar usando um cliente psql.No prompt de comando
psql, conecte-se ao banco de dados e conceda permissões:\c DB_NAME GRANT EXECUTE ON FUNCTION ml_predict_row TO USER_NAME;Substitua:
DB_NAME: o nome do banco de dados para o qual você está concedendo permissões
USER_NAME: o nome do usuário para quem você está concedendo permissões
Selecionar um modelo de ML
Ao chamar a função ml_predict_row(),
você precisa especificar o local de um modelo de ML. O modelo especificado pode ser um destes:
Um modelo executado no Model Garden da Vertex AI.
A função
ml_predict_row()é compatível com a invocação de previsões apenas em modelos tabulares ou personalizados.Um modelo da Vertex AI com um endpoint ativo a que você tem permissão de Identity and Access Management (IAM).
O Cloud SQL não é compatível com endpoints particulares para receber previsões on-line.
Invocar previsões on-line
Use a função SQL ml_predict_row()
para invocar previsões on-line nos seus dados.
O formato do argumento inicial da função depende se o modelo de ML que você quer usar está no Model Garden da Vertex AI ou é um endpoint em execução em um projeto Google Cloud .
Usar um modelo no Model Garden da Vertex AI
Para invocar uma previsão on-line usando um modelo de ML em execução no
Model Garden da Vertex AI, use a seguinte sintaxe para a
função SQL
ml_predict_row():
sql
SELECT ML_PREDICT_ROW('publishers/google/models/MODEL_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
Faça as seguintes substituições:
MODEL_ID: o ID do modelo de ML a ser usado (por exemplo,
gemini-2.0)INSTANCES: as entradas para a chamada de previsão, no formato JSON
PARAMETERS: os parâmetros para a chamada de previsão, no formato JSON
SELECT ML_PREDICT_ROW('publishers/google/models/MODEL_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
Usar um endpoint de modelo da Vertex AI
Para invocar uma previsão on-line usando um endpoint de modelo da Vertex AI, use a seguinte sintaxe para a função SQL ml_predict_row():
sql
SELECT ML_PREDICT_ROW('endpoints/ENDPOINT_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
Faça as seguintes substituições:
ENDPOINT_ID: o ID do endpoint do modelo
INSTANCES: as entradas para a chamada de previsão, no formato JSON
PARAMETERS: os parâmetros para a chamada de previsão, no formato JSON
Para informações sobre as mensagens de resposta JSON do modelo, consulte PredictResponse.
Invocações de exemplo
O exemplo a seguir usa o
Gemini 2.5 Flash, disponível
no Model Garden, para gerar texto com base em um comando curto que é
fornecido como um argumento literal para ml_predict_row()
:
SELECT
json_array_elements(ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-2.5-flash:streamGenerateContent',
'{ "contents": [ { "role": "user", "parts": [ { "text": "CloudSQL" } ] } ] }'))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';
A resposta é um objeto JSON. Para mais informações sobre o formato do objeto, consulte Corpo da resposta.
O próximo exemplo modifica o anterior das seguintes maneiras:
O exemplo usa o conteúdo da coluna
messages.messagedo banco de dados atual como entrada.O exemplo demonstra o uso da função
json_build_object()como ajuda para formatar os parâmetros da função.
select ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent', json_build_object('contents', json_build_array(json_build_object('role', 'user', 'parts', json_build_array(json_build_object('text', message)))))) from messages;
Para cada linha na tabela messages, o objeto JSON retornado agora contém uma entrada na matriz candidates.
Como a resposta é um objeto JSON, é possível extrair campos específicos dele:
select ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent', json_build_object('contents', json_build_array(json_build_object('role', 'user', 'parts', json_build_array(json_build_object('text', message)))))) -> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text' FROM messages;
Para mais exemplos de argumentos para ml_predict_row(), consulte
Testar a API Vertex AI Gemini.