從 Cloud SQL 執行個體叫用線上預測

本頁面說明如何從 Cloud SQL 執行個體叫用線上預測功能。

您可以透過呼叫 ml_predict_row() 函式,在 SQL 程式碼中取得線上預測結果。詳情請參閱「使用 Cloud SQL 建構生成式 AI 應用程式」。

事前準備

您必須先準備資料庫並選取合適的機器學習模型,才能從 Cloud SQL 執行個體叫用線上預測功能。

準備資料庫

  1. 如要準備資料庫,請設定 Cloud SQL 與 Vertex AI 之間的整合

  2. 授予資料庫使用者權限,以便使用 ml_predict_row() 函式執行預測作業:

    1. psql 用戶端連線至主要執行個體,如「使用 psql 用戶端連線」一文所述。

    2. psql 命令提示字元中,連線至資料庫並授予權限:

      \c DB_NAME
      
      GRANT EXECUTE ON FUNCTION ml_predict_row TO USER_NAME;
      

      更改下列內容:

      • DB_NAME:您要授予權限的資料庫名稱

      • USER_NAME:您要授予權限的使用者名稱

選取機器學習模型

呼叫 ml_predict_row() 函式時,您必須指定機器學習模型的位置。您指定的模型可以是下列任一項:

  • Vertex AI Model Garden 中執行的模型。

    ml_predict_row() 函式僅支援在表格或自訂模型上叫用預測功能。

  • Vertex AI 模型,其具備您具備 Identity and Access Management (IAM) 存取權的有效端點。

    Cloud SQL 不支援私人端點,無法用於取得線上預測結果。

叫用線上預測

您可以使用 ml_predict_row() SQL 函式,針對資料叫用線上預測功能。

函式初始引數的格式取決於您要使用的機器學習模型是在 Vertex AI Model Garden 中,還是在 Google Cloud 專案中執行的端點。

在 Vertex AI Model Garden 中使用模型

如要使用在 Vertex AI Model Garden 中執行的機器學習模型叫用線上預測,請使用下列語法呼叫 ml_predict_row() SQL 函式:

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

請將以下項目改為對應的值:

  • MODEL_ID:要使用的 ML 模型 ID (例如 gemini-2.0)

  • INSTANCES:預測呼叫的輸入內容,格式為 JSON

  • PARAMETERS:預測呼叫的參數,格式為 JSON

SELECT ML_PREDICT_ROW('publishers/google/models/MODEL_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
如要瞭解模型的 JSON 回應訊息,請參閱 生成式 AI 基礎模型參考資料。如需範例,請參閱「喚用示例」。

使用 Vertex AI 模型端點

如要使用 Vertex AI 模型端點叫用線上預測,請使用以下語法呼叫 ml_predict_row() SQL 函式:

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

請將以下項目改為對應的值:

  • ENDPOINT_ID:模型端點的 ID

  • INSTANCES:預測呼叫的輸入內容,格式為 JSON

  • PARAMETERS:預測呼叫的參數,格式為 JSON

如要瞭解模型的 JSON 回應訊息,請參閱 PredictResponse

叫用範例

以下範例使用 Model Garden 提供的 文字專用 PaLM 2,根據提供給 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}}');

回應為 JSON 物件。如要進一步瞭解物件格式,請參閱「回應主體」。

下一個範例會以以下方式修改先前的範例:

  • 本範例會使用目前資料庫的 messages.message 欄內容做為輸入內容。

  • 這個範例示範如何使用 json_build_object() 函式,協助設定函式的參數格式。

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;

對於 messages 資料表中的每個資料列,傳回的 JSON 物件現在會在其 predictions 陣列中包含一個項目。

由於回應是 JSON 物件,因此您可以從中提取特定欄位:

如需更多 ml_predict_row() 的引數範例,請參閱「試用 Vertex AI Gemini API」。

後續步驟