从 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() 函数仅支持对表格模型或自定义模型调用预测。

  • 具有您拥有 Identity and Access Management (IAM) 权限访问的活跃端点的 Vertex AI 模型。

    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 for Text,根据作为字面量参数提供给 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

后续步骤