Invocar previsões on-line de instâncias do Cloud SQL

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 mysql.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.

Selecionar um modelo de ML

Ao chamar a função mysql.ml_predict_row(), é necessário 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 mysql.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 mysql.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 mysql.ml_predict_row():

SELECT mysql.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 mysql.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 conferir exemplos, consulte Exemplos de invocações.

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 mysql.ml_predict_row():

SELECT mysql.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 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" }] }] }');

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_object() como ajuda para formatar os parâmetros da função.

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;

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:

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;

Para mais exemplos de argumentos para ml_predict_row(), consulte Testar a API Vertex AI Gemini.

A seguir