本页介绍了如何从 Cloud SQL for PostgreSQL 实例调用在线预测。
Cloud SQL 可让您通过调用 ml_predict_row()
函数,在 SQL 代码中进行在线预测。如需了解详情,请参阅使用 Cloud SQL 构建生成式 AI 应用。
准备工作
您必须先准备好数据库并选择合适的机器学习模型,然后才能从 Cloud SQL 实例调用在线预测。
准备数据库
如需准备数据库,请完成以下步骤:
向数据库用户授予使用
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()
函数仅支持对表格模型或自定义模型调用预测。具有您拥有 Identity and Access Management (IAM) 权限访问的活跃端点的 Vertex AI 模型。
Cloud SQL 不支持使用专用端点进行在线预测。
调用在线预测
您可以使用 ml_predict_row()
SQL 函数根据数据调用在线预测。
函数的初始参数的格式取决于您要使用的机器学习模型是位于 Vertex AI Model Garden 中,还是在 Google Cloud 项目中运行的端点。
使用 Vertex AI Model Garden 中的模型
如需使用在 Vertex AI Model Garden 中运行的机器学习模型调用在线预测,请对 ml_predict_row()
SQL 函数使用以下语法:
SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
进行以下替换:
MODEL_ID:要使用的机器学习模型的 ID(例如,
text-bison
表示 PaLM 2 for Text)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 函数使用以下语法:
SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ "instances": [ INSTANCES ], "parameters":
PARAMETERS }');
进行以下替换:
ENDPOINT_ID:模型端点的 ID
INSTANCES:预测调用的输入,采用 JSON 格式
PARAMETERS:预测调用的参数,采用 JSON 格式
如需了解模型的 JSON 响应消息,请参阅 PredictResponse。
调用示例
以下示例使用 Model Garden 中提供的 PaLM 2 for Text,根据作为字面量参数提供给 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 对象,因此您可以使用 PostgreSQL 数组运算符从中拉取特定字段:
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)))->'predictions'->0->'content' FROM messages;
如需查看 ml_predict_row()
的更多示例参数,请参阅试用 Vertex AI Gemini API。