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

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

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

事前準備

如要從 Cloud SQL 執行個體叫用線上預測,請務必先準備好資料庫,並選取合適的機器學習模型。

準備資料庫

如要準備資料庫,請設定 Cloud SQL 與 Vertex AI 的整合功能

選取機器學習模型

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

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

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

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

    Cloud SQL 不支援使用私人端點取得線上預測結果。

叫用線上預測

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

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

使用 Vertex AI Model Garden 中的模型

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

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

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

  • MODEL_ID:要使用的機器學習模型 ID (例如 gemini-2.0)

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

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

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

使用 Vertex AI 模型端點

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

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

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

  • ENDPOINT_ID:模型端點的 ID

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

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

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

叫用範例

以下範例使用 Model Garden 提供的「文字專用的 PaLM 2」,根據以 mysql.ml_predict_row() 的常值引數形式提供的簡短提示生成文字:

sql select mysql.ML_PREDICT_ROW('publishers/google/models/gemini-2.0-flash:generateContent', '{ "contents": [{ "role": "user", "parts": [{ "text": "Write me a short poem about MySQL" }] }] }');

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

下一個範例會透過下列方式修改前一個範例:

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

  • 這個範例會示範如何使用 json_object() 函式,協助格式化函式的參數。

select mysql.ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison', json_object('instances', json_object('prompt', message), 'parameters', json_object('maxOutputTokens', 1024,'topK', 40,'topP', 0.8,'temperature', 0.2))) from messages;

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

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

select JSON_EXTRACT(mysql.ml_PREDICT_ROW('publishers/google/models/gemini-2.0-flash:generateContent', JSON_OBJECT(
  'contents', JSON_ARRAY(
    JSON_OBJECT(
      'role', 'user',
      'parts', JSON_ARRAY(
        JSON_OBJECT(
          'text', message
        )
      )
    )
  )
)), '$.candidates[0].content.parts[0].text') from messages;

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

後續步驟