Invocar previsões

Esta página descreve como invocar previsões através de funções dos espaços de nomes public e google_ml. A extensão google_ml_integration inclui funções de previsão para estes espaços de nomes.

Pode usar a função ml_predict_row() no esquema public com qualquer modelo genérico alojado no Vertex AI sem registar o ponto final. A função google_ml.predict_row() no esquema google_ml pode ser usada com qualquer modelo que tenha sido registado na gestão de pontos finais de modelos.

Para invocar previsões, selecione um dos seguintes esquemas.

Antes de começar

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

Invocar previsões online

Use a função SQL ml_predict_row() para invocar previsões online com base nos seus dados.

O formato do argumento inicial da função depende se o modelo de ML que quer usar está no Model Garden do Vertex AI ou é um ponto final em execução num Google Cloud projeto.

Use um modelo no Vertex AI Model Garden

Para invocar uma previsão online através de um modelo de ML em execução no Model Garden do Vertex AI, 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', '{ CONTENTS }');

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto

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

  • MODEL_ID: o ID do modelo de ML a usar, 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 que o cluster do AlloyDB, pode abreviar o primeiro argumento desta função:

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

Para obter informações sobre as mensagens de resposta JSON do modelo, consulte a referência do modelo base de IA generativa.

Para ver exemplos, consulte Exemplos de invocações.

Use um ponto final do modelo do Vertex AI

Para invocar uma previsão online através de um ponto final do modelo do Vertex AI, 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 o seguinte:

  • PROJECT_ID: o ID do projeto Google Cloud no qual 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 ponto final do modelo

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

Se o ponto final estiver localizado no mesmo projeto e região que o cluster do AlloyDB, pode abreviar o primeiro argumento desta função:

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

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

Exemplos de invocações

O exemplo seguinte usa o gemini-pro, disponível no Model Garden, para gerar texto com base num 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 o corpo da resposta.

O exemplo seguinte modifica o anterior das seguintes formas:

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

  • O exemplo demonstra a utilização 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-1.5-pro:generateContent', json_build_object('contents', json_build_object('text', message))) from messages;

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

Uma vez que a resposta é um objeto JSON, pode extrair campos específicos do mesmo através do 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 ver mais exemplos de argumentos para ml_predict_row(), consulte o guia de início rápido com a API Vertex AI.

O que se segue?