Invoca predicciones en línea desde instancias de Cloud SQL

En esta página, se muestra cómo invocar predicciones en línea desde una instancia de Cloud SQL para PostgreSQL.

Cloud SQL te permite obtener predicciones en línea en tu código SQL a través de una llamada a la función ml_predict_row(). Para obtener más información, consulta Compila aplicaciones de IA generativa con Cloud SQL.

Antes de comenzar

Antes de poder invocar predicciones en línea desde una instancia de Cloud SQL, debes preparar tu base de datos y seleccionar un modelo de AA adecuado.

Prepara tu base de datos

Para preparar tu base de datos, completa los siguientes pasos:

  1. Configura la integración entre Cloud SQL y Vertex AI.

  2. Otorga permisos para que los usuarios de la base de datos usen la función ml_predict_row() para ejecutar predicciones:

    1. Conecta un cliente psql a la instancia principal, como se describe en Conéctate con un cliente psql.

    2. En el símbolo del sistema de psql, conéctate a la base de datos y otorga permisos:

      \c DB_NAME
      
      GRANT EXECUTE ON FUNCTION ml_predict_row TO USER_NAME;
      

      Reemplaza lo siguiente:

      • DB_NAME: el nombre de la base de datos para la que otorgas permisos.

      • USER_NAME: el nombre del usuario al que le otorgas permisos

Selecciona un modelo de AA

Cuando llamas a la función ml_predict_row(), debes especificar la ubicación de un modelo de AA. El modelo que especifiques puede ser uno de los siguientes:

  • Un modelo que se ejecuta en Model Garden de Vertex AI

    La función ml_predict_row() admite la invocación de predicciones solo en modelos tabulares o personalizados.

  • Un modelo de Vertex AI con un extremo activo al que tienes permiso de acceso dE Identity and Access Management (IAM).

    Cloud SQL no admite extremos privados para obtener predicciones en línea.

Invoca predicciones en línea

Puedes usar la función de SQL ml_predict_row() para invocar predicciones en línea en tus datos.

El formato del argumento inicial de la función depende de si el modelo de AA que deseas usar está en Model Garden de Vertex AI o si es un extremo que se ejecuta en un proyecto de Google Cloud.

Usa un modelo en Model Garden de Vertex AI

Para invocar una predicción en línea con un modelo de AA que se ejecuta en Model Garden de Vertex AI, usa la siguiente sintaxis para la función de SQL ml_predict_row():

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

Realiza los siguientes reemplazos:

  • MODEL_ID: el ID del modelo de AA que se usará (por ejemplo, text-bison para PaLM 2 for Text)

  • INSTANCES: las entradas de la llamada de predicción, en formato JSON

  • PARAMETERS: los parámetros de la llamada de predicción, en formato JSON

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

Para obtener información sobre los mensajes de respuesta JSON del modelo, consulta Referencia de modelos de base de IA generativa. Para ver ejemplos, consulta Invocaciones de ejemplo.

Usa un extremo del modelo de Vertex AI

Para invocar una predicción en línea a través de un extremo del modelo de Vertex AI, usa la siguiente sintaxis para la función de SQL ml_predict_row():

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

Realiza los siguientes reemplazos:

  • ENDPOINT_ID: el ID del extremo del modelo.

  • INSTANCES: las entradas de la llamada de predicción, en formato JSON

  • PARAMETERS: los parámetros de la llamada de predicción, en formato JSON

Para obtener información acerca de los mensajes de respuesta JSON del modelo, consulta PredictResponse.

Invocaciones de ejemplo

En el siguiente ejemplo, se usa PaLM 2 for Text, disponible en Model Garden, para generar texto basado en una instrucción breve que se proporciona como argumento literal de 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}}');

La respuesta es un objeto JSON. Para obtener más información acerca del formato del objeto, consulta Cuerpo de la respuesta.

En el siguiente ejemplo, se modifica el anterior de las siguientes maneras:

  • En el ejemplo, se usa el contenido de la columna messages.message de la base de datos actual como entrada.

  • En el ejemplo, se muestra el uso de la función json_build_object() como ayuda para dar formato a los parámetros de la función.

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;

Para cada fila de la tabla messages, el objeto JSON que se muestra ahora contiene una entrada en su array predictions.

Debido a que la respuesta es un objeto JSON, puedes extraer campos específicos de él a través del operador de flecha de 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;

Para ver más ejemplos de argumentos para ml_predict_row(), consulta Prueba la API de Gemini de Vertex AI.

¿Qué sigue?