Nesta página, mostramos como invocar previsões on-line de uma instância do Cloud SQL para PostgreSQL.
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 o banco de dados, siga estas etapas:
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 do 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()
:
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,
text-bison
para PaLM 2 para texto)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 }');
Para informações sobre as mensagens de resposta JSON do modelo, consulte Referência do modelo básico de IA generativa. Para obter exemplos, consulte Invocações de exemplo.
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()
:
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 PaLM 2 para texto, disponível no Model Garden, para gerar texto com base em um comando curto fornecido como um argumento literal
para ml_predict_row()
:
select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison', '{"instances":[{"prompt": "What are three advantages of using Cloud SQL as my SQL database server?"}], "parameters":{"maxOutputTokens":1024, "topK": 40, "topP":0.8, "temperature":0.2}}');
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.message
do 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/text-bison', json_build_object('instances', json_build_object('prompt', message), 'parameters', json_build_object('maxOutputTokens', 1024,'topK', 40,'topP', 0.8,'temperature', 0.2))) from messages;
Para cada linha na tabela messages
, o objeto JSON retornado agora contém uma entrada na matriz predictions
.
Como a resposta é um objeto JSON, é possível extrair campos específicos dele usando o operador de seta do PostgreSQL:
SELECT ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison',json_build_object('instances', json_build_object('prompt',message), 'parameters', json_build_object('maxOutputTokens', 1024,'topK', 40,'topP', 0.8,'temperature', 0.2)))->'predictions'->0->'content' FROM messages;
Para mais exemplos de argumentos para ml_predict_row()
, consulte Testar a API Vertex AI Gemini.