Richiama le previsioni online dalle istanze Cloud SQL

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

Cloud SQL ti consente di ottenere previsioni online nel codice SQL chiamando la funzione ml_predict_row(). Per saperne di più, consulta 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.

Preparare il database

  1. Per preparare il database, configura l'integrazione tra Cloud SQL e Vertex AI.

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

    1. Connetti un client psql all'istanza principale, come descritto in Connettersi 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 il quale stai concedendo le autorizzazioni

Selezionare un modello ML

Quando chiami la ml_predict_row() funzione, devi specificare la posizione di un modello ML. Il modello che specifichi può essere uno dei seguenti:

  • Un modello in esecuzione in Vertex AI Model Garden.

    La funzione ml_predict_row() supporta la chiamata delle previsioni solo su modelli tabellari o personalizzati.

  • Un modello Vertex AI con un endpoint attivo a cui hai l'autorizzazione Identity and Access Management (IAM) per accedere.

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

Richiamare le 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 Google Cloud progetto.

Utilizzare un modello in Vertex AI Model Garden

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

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

Esegui le seguenti sostituzioni:

  • MODEL_ID: l'ID del modello ML da utilizzare (ad esempio, gemini-2.0)

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

  • PARAMETERS: i parametri della 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 la documentazione di riferimento sui modelli di base di AI generativa. Per esempi, consulta Esempi di chiamate.

Utilizzare un endpoint del modello Vertex AI

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

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

Esegui le seguenti sostituzioni:

  • ENDPOINT_ID: l'ID dell'endpoint del modello

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

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

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

Esempi di chiamate

Il seguente esempio utilizza Gemini 2.5 Flash, disponibile in Model Garden, per generare testo in base a un breve prompt che's fornito come argomento letterale a ml_predict_row() :

SELECT
  json_array_elements(ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-2.5-flash:streamGenerateContent',
    '{ "contents": [ { "role": "user", "parts": [ { "text": "CloudSQL" } ] } ] }'))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';

La risposta è un oggetto JSON. Per saperne di più sul formato dell' oggetto, consulta Corpo della risposta.

L'esempio successivo modifica il precedente nei seguenti modi:

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

  • L'esempio mostra l'utilizzo della funzione json_build_object() come ausilio per la formattazione dei parametri della funzione.

select ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent', json_build_object('contents', json_build_array(json_build_object('role', 'user', 'parts', json_build_array(json_build_object('text', message)))))) from messages;

Per ogni riga della tabella messages, l'oggetto JSON restituito ora contiene una voce nella matrice candidates.

Poiché la risposta è un oggetto JSON, puoi estrarre campi specifici:

select ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent', json_build_object('contents', json_build_array(json_build_object('role', 'user', 'parts', json_build_array(json_build_object('text', message)))))) -> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text' FROM messages;

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

Passaggi successivi