Richiamare previsioni online dalle istanze Cloud SQL

Questa pagina mostra come richiamare le previsioni online da un'istanza Cloud SQL per PostgreSQL.

Cloud SQL consente di ottenere previsioni online nel codice SQL chiamando la funzione ml_predict_row(). Per ulteriori informazioni, vedi Creare applicazioni di AI generativa utilizzando Cloud SQL.

Prima di iniziare

Prima di poter richiamare le previsioni online da un'istanza Cloud SQL, devi preparare il database e selezionare un modello ML appropriato.

prepara il database

Per preparare il database:

  1. Configura l'integrazione tra Cloud SQL e Vertex AI.

  2. Concedi agli utenti del database le autorizzazioni per utilizzare la funzione ml_predict_row() per eseguire previsioni:

    1. Connetti un client psql all'istanza principale, come descritto in Connettiti utilizzando un client psql.

    2. Al prompt dei comandi psql, connettiti al database e concedi le autorizzazioni:

      \c DB_NAME
      
      GRANT EXECUTE ON FUNCTION ml_predict_row TO USER_NAME;
      

      Sostituisci quanto segue:

      • DB_NAME: il nome del database per il quale stai concedendo le autorizzazioni

      • USER_NAME: il nome dell'utente per cui stai concedendo le autorizzazioni

Seleziona un modello ML

Quando chiami la funzione ml_predict_row(), devi specificare la località di un modello ML. Il modello specificato può essere uno di questi:

  • Un modello in esecuzione in Vertex AI Model Garden.

    La funzione ml_predict_row() supporta l'invocazione di previsioni solo su modelli tabulari o personalizzati.

  • Un modello Vertex AI con un endpoint attivo per il quale disponi dell'autorizzazione Identity and Access Management (IAM).

    Cloud SQL non supporta gli endpoint privati per ottenere previsioni online.

Richiamare previsioni online

Puoi utilizzare la funzione SQL ml_predict_row() per richiamare le previsioni online sui tuoi dati.

Il formato dell'argomento iniziale della funzione dipende dal fatto che il modello ML che vuoi utilizzare si trovi in Vertex AI Model Garden o sia un endpoint in esecuzione in un progetto Google Cloud.

Utilizzare un modello in Model Garden di Vertex AI

Per richiamare una previsione online utilizzando un modello ML in esecuzione in Vertex AI Model Garden, utilizza la seguente sintassi per la funzione SQL ml_predict_row():

SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');

Effettua le seguenti sostituzioni:

  • MODEL_ID: l'ID del modello ML da utilizzare (ad esempio, text-bison per PaLM 2 per il testo)

  • INSTANCES: gli input per la chiamata di previsione, in formato JSON

  • PARAMETERS: i parametri per la chiamata di previsione, in formato JSON

SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');

Per informazioni sui messaggi di risposta JSON del modello, consulta Riferimento per i modelli di base di IA generativa. Per alcuni esempi, consulta la sezione Chiamate di esempio.

Utilizza un endpoint del modello Vertex AI

Per richiamare una previsione online utilizzando un endpoint del modello Vertex AI, utilizza la seguente sintassi per la funzione SQL ml_predict_row():

SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');

Effettua le seguenti sostituzioni:

  • ENDPOINT_ID: l'ID dell'endpoint del modello

  • INSTANCES: gli input per la chiamata di previsione, in formato JSON

  • PARAMETERS: i parametri per la chiamata di previsione, in formato JSON

Per informazioni sui messaggi di risposta JSON del modello, consulta PredictResponse.

Chiamate di esempio

Nell'esempio seguente viene utilizzato PaLM 2 per il testo, disponibile in Model Garden, per generare testo in base a un breve prompt fornito come argomento letterale a 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}}');

La risposta è un oggetto JSON. Per ulteriori informazioni sul formato dell'oggetto, consulta Corpo della risposta.

L'esempio successivo modifica quello precedente nel seguente modo:

  • L'esempio utilizza i contenuti della colonna messages.message del database attuale come input.

  • L'esempio mostra l'utilizzo della funzione json_build_object() come aiuto per formattare i parametri della funzione.

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;

Per ogni riga della tabella messages, l'oggetto JSON restituito ora contiene una voce nel relativo array predictions.

Poiché la risposta è un oggetto JSON, puoi estrarre campi specifici utilizzando l'operatore a freccia 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;

Per altri esempi di argomenti per ml_predict_row(), vedi Provare l'API Vertex AI Gemini.

Passaggi successivi