您可以呼叫 mysql.ml_predict_row()
函式,在 Cloud SQL 中透過 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:要使用的 ML 模型 ID (例如
gemini-2.0
)INSTANCES:預測呼叫的輸入內容,格式為 JSON
PARAMETERS:預測呼叫的參數,格式為 JSON
SELECT mysql.ML_PREDICT_ROW('publishers/google/models/MODEL_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
使用 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」。