Invocar previsões

A extensão google_ml_integration no AlloyDB para PostgreSQL permite invocar previsões on-line de modelos de aprendizado de máquina diretamente nas consultas SQL. É possível chamar a função ml_predict_row() no esquema public para modelos genéricos hospedados na Gemini Enterprise Agent Platform sem registrar um endpoint ou chamar a função google_ml.predict_row() no esquema google_ml para modelos registrados no gerenciamento de endpoints de modelo.

Para invocar previsões, selecione um dos esquemas a seguir.

Antes de começar

Para permitir que o AlloyDB invoque previsões, faça o seguinte:

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 ou é um endpoint em execução em um Google Cloud projeto.

Usar um modelo no Model Garden

Para invocar uma previsão on-line usando um modelo de ML em execução no Model Garden, use a seguinte sintaxe para a função SQL google_ml.predict_row():

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{"instances": [CONTENTS]}');

Substitua:

  • PROJECT_ID: o ID do Google Cloud projeto

  • REGION_ID: o ID da Google Cloud região em que o modelo está localizado, por exemplo, us-central1 para gemini-pro

  • MODEL_ID: o ID do modelo de ML a ser usado, por exemplo, gemini-pro

  • CONTENTS: as entradas para a chamada de previsão, no formato JSON

Se o modelo de ML estiver armazenado no mesmo projeto e região do cluster do AlloyDB, você poderá abreviar o primeiro argumento dessa função:

SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');

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 Agent Platform

Para invocar uma previsão on-line usando um endpoint de modelo da Agent Platform, use a seguinte sintaxe para a função SQL ml_predict_row():

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');

Substitua:

  • PROJECT_ID: o ID do Google Cloud projeto em que o modelo está localizado

  • REGION_ID: o ID da Google Cloud região em que o modelo está localizado, por exemplo, us-central1

  • ENDPOINT_ID: o ID do endpoint do modelo

  • CONTENTS: as entradas para a chamada de previsão, no formato JSON

Se o endpoint estiver localizado no mesmo projeto e região do cluster do AlloyDB, você poderá abreviar o primeiro argumento dessa função:

SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');

Para informações sobre as mensagens de resposta JSON do modelo, consulte PredictResponse.

Invocações de exemplo

O exemplo a seguir usa gemini-pro, disponível no Model Garden, para gerar texto com base em um comando curto fornecido como um argumento literal para 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';

A resposta é um objeto JSON. Para mais informações sobre o formato do objeto, consulte Corpo da resposta.

O exemplo a seguir modifica o exemplo anterior destas maneiras:

  • O exemplo usa o conteúdo da coluna messages.message do banco de dados atual como entrada.

  • O exemplo demonstra o uso de a json_build_object() função como ajuda para formatar os parâmetros da função.


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;

O objeto JSON retornado agora contém uma entrada na matriz predictions para cada linha na tabela messages.

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/gemini-1.5-pro:generateContent', json_build_object('contents', json_build_object('text', message)))->'predictions'->0->'content' FROM messages;

Para mais exemplos de argumentos para ml_predict_row(), consulte Guia de início rápido sobre como usar a API da Agent Platform API.

A seguir