本頁說明如何從 Cloud SQL 執行個體叫用線上預測。
Cloud SQL 可讓您呼叫 ml_predict_row() 函式,在 SQL 程式碼中取得線上預測結果。詳情請參閱「使用 Cloud SQL 建構生成式 AI 應用程式」。
事前準備
如要從 Cloud SQL 執行個體叫用線上預測,請務必先準備好資料庫,並選取合適的機器學習模型。
準備資料庫
如要準備資料庫,請設定 Cloud SQL 與 Vertex AI 之間的整合。
授予資料庫使用者權限,讓他們可以使用
ml_predict_row()函式執行預測:如「使用 psql 用戶端連線」一文所述,將
psql用戶端連線至主要執行個體。在
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 模型 (含有效端點)。
Cloud SQL 不支援使用私人端點取得線上預測結果。
叫用線上預測
您可以使用 ml_predict_row() SQL 函式,針對資料叫用線上預測。
函式初始引數的格式取決於您要使用的 ML 模型是否位於 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:要使用的機器學習模型 ID (例如
gemini-2.0)INSTANCES:預測呼叫的輸入內容,格式為 JSON
PARAMETERS:預測呼叫的參數,格式為 JSON
SELECT ML_PREDICT_ROW('publishers/google/models/MODEL_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
使用 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 提供的 Gemini 2.5 Flash,根據以字面引數形式提供給 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';
回應為 JSON 物件。如要進一步瞭解物件格式,請參閱「回應本文」。
下一個範例會透過下列方式修改前一個範例:
這個範例會使用目前資料庫
messages.message資料欄的內容做為輸入內容。這個範例會示範如何使用
json_build_object()函式,協助格式化函式的參數。
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;
現在,對於 messages 資料表中的每個資料列,傳回的 JSON 物件都會在 candidates 陣列中包含一個項目。
由於回應是 JSON 物件,您可以從中擷取特定欄位:
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;
如要查看 ml_predict_row() 的更多引數範例,請參閱「試用 Vertex AI Gemini API」。