Integra Cloud SQL en Agent Platform

En esta página, se describe cómo integrar Cloud SQL en la Agent Platform.

Esta integración te permite aplicar modelos de lenguaje grandes (LLM), que se alojan en Agent Platform, a una base de datos de Cloud SQL para PostgreSQL, versión 12 y posteriores.

Si integras Cloud SQL en Agent Platform, puedes aplicar el poder semántico y predictivo de los modelos de aprendizaje automático (AA) a tus datos. Esta integración extiende la sintaxis de SQL con dos funciones para consultar modelos:

  • Invoca predicciones para llamar a un modelo a través de SQL dentro de una transacción.

  • Genera embeddings para que un modelo de embedding traduzca instrucciones de texto en vectores numéricos. Luego, puedes aplicar estos embeddings de vectores como entradas a las funciones vector. Esto incluye métodos para comparar y ordenar muestras de texto según su distancia semántica relativa.

Como resultado, puedes hacer predicciones en tiempo real y obtener estadísticas valiosas directamente en la base de datos, lo que optimiza tus flujos de trabajo y mejora tus capacidades de toma de decisiones.

Para obtener más información sobre Agent Platform, consulta Introducción a Agent Platform.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Habilita las Google Cloud APIs necesarias.

    Console

    1. Ve a la página de APIs y servicios.
    2. Selecciona el proyecto desde la lista de proyectos.
    3. Si la Biblioteca de API no está abierta, selecciona Biblioteca en el menú de navegación.
    4. Haz clic en las APIs que quieras habilitar. Para este procedimiento, habilita lo siguiente:

      • API de Cloud SQL Admin
      • API de Agent Platform
      • API de Compute Engine
    5. Después de seleccionar cada API, haz clic en Habilitar.

    gcloud

    1. Abre Cloud Shell, que proporciona acceso de línea de comandos a tus recursos de Google Cloud directamente desde el navegador.
    2. Para habilitar las APIs requeridas, usa el comando gcloud services enable:
      gcloud services enable sqladmin.googleapis.com \
        aiplatform.googleapis.com \
        compute.googleapis.com
      
    3. Este comando habilita las siguientes APIs:
      • API de Cloud SQL Admin
      • API de Agent Platform
      • API de Compute Engine

  7. Otorga permisos de Identity and Access Management (IAM) a la cuenta de servicio de Cloud SQL para acceder a Agent Platform.
  8. gcloud

    Para agregar los permisos de Agent Platform a la cuenta de servicio de Cloud SQL para el proyecto en el que se encuentra la instancia de Cloud SQL, usa el comando gcloud projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role="roles/aiplatform.user"
    

    Realiza los siguientes reemplazos:
    • PROJECT_ID: Es el ID del proyecto que tiene el extremo de Agent Platform. Cloud SQL usa este extremo para acceder al LLM alojado en Agent Platform.
    • SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico de la cuenta de servicio de Cloud SQL.

      Para encontrar esta dirección de correo electrónico, usa el comando gcloud sql instances describe:

      gcloud sql instances describe INSTANCE_NAME | grep EmailAddress
      

      Reemplaza INSTANCE_NAME por el nombre de la instancia de Cloud SQL.

Habilita la integración de bases de datos con Agent Platform

Para habilitar la integración de la base de datos con Agent Platform, completa los siguientes pasos:

  1. Crea o actualiza una instancia de Cloud SQL para que la instancia pueda integrarse en Agent Platform.

    gcloud

    Crea la instancia

    Para crear la instancia de Cloud SQL, usa el comando gcloud sql instances create.

    gcloud sql instances create INSTANCE_NAME \
    --database-version=DATABASE_VERSION \
    --tier=MACHINE_TYPE \
    --region=REGION_NAME \
    --enable-google-ml-integration \
    --database-flags cloudsql.enable_google_ml_integration=on

    Realiza los siguientes reemplazos:

    • INSTANCE_NAME: Es el nombre de la instancia.
    • DATABASE_VERSION: la versión de la base de datos para la instancia (por ejemplo, POSTGRES_13)
    • MACHINE_TYPE: el tipo de máquina para la instancia
    • REGION_NAME: el nombre de la región para la instancia

    Actualiza la instancia

    Para actualizar la instancia, usa el comando gcloud sql instances patch.

    gcloud sql instances patch INSTANCE_NAME \
    --enable-google-ml-integration \
    --database-flags cloudsql.enable_google_ml_integration=on

    Si esta actualización modifica un valor que requiere que la instancia se reinicie, recibirás un mensaje para continuar con el cambio o cancelarlo.

    REST v1

    Crea la instancia

    Usa este ejemplo para crear la instancia. Para ver una lista completa de los parámetros de esta llamada, consulta la página instances:insert. Para obtener información sobre la configuración de las instancias, incluidos los valores válidos para una región, consulta Configuración de instancias.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: Es el ID o el número del proyecto del proyecto Google Cloud que contiene la instancia.
    • INSTANCE_NAME: El nombre de la instancia.
    • REGION_NAME: el nombre de la región para la instancia.
    • DATABASE_VERSION: Es la cadena de enumeración de la versión de la base de datos, como POSTGRES_13.
    • PASSWORD: la contraseña del usuario root.
    • MACHINE_TYPE: Es la cadena de enumeración del tipo de máquina (nivel), como db-custom-[CPUS]-[MEMORY_MBS]. Para obtener más información, consulta Niveles de máquinas.
    • EDITION_TYPE: Tu edición de Cloud SQL, como ENTERPRISE.

    También debes incluir el objeto enableGoogleMlIntegration en la solicitud. Configura los siguientes parámetros, según sea necesario:

    • enableGoogleMlIntegration: Cuando este parámetro se establece en true, las instancias de Cloud SQL pueden conectarse a Agent Platform para pasar solicitudes de predicciones en tiempo real y estadísticas a la IA.
    • cloudsql.enable_google_ml_integration: Cuando este parámetro se establece en on, Cloud SQL puede integrarse en Agent Platform.

    Método HTTP y URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

    Cuerpo JSON de la solicitud:

    {
      "name": "INSTANCE_NAME",
      "region": "REGION_NAME",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "edition": "EDITION_TYPE",
        "enableGoogleMlIntegration": "true" | "false"
        
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on" | "off"
          }
        
      }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2019-09-25T22:19:33.735Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    Actualiza la instancia

    Usa este ejemplo para actualizar la instancia. Para ver una lista completa de los parámetros de esta llamada, consulta la página instances.patch.

    Si una actualización modifica un valor que requiere que la instancia se reinicie, recibirás un mensaje para continuar con el cambio o cancelarlo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID o el número del proyecto del proyecto Google Cloud que contiene la instancia
    • INSTANCE_NAME: Es el nombre de la instancia.

    Método HTTP y URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Cuerpo JSON de la solicitud:

    {
      "settings": {
        "enableGoogleMlIntegration": true,
        
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on"
          }
        
       }
    }

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-16T02:32:12.281Z",
      "operationType": "UPDATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_NAME",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    REST v1beta4

    Crea la instancia

    Usa este ejemplo para crear la instancia. Para ver una lista completa de los parámetros de esta llamada, consulta la página instances:insert. Para obtener información sobre la configuración de las instancias, incluidos los valores válidos para una región, consulta Configuración de instancias.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: Es el ID o el número del proyecto del proyecto Google Cloud que contiene la instancia.
    • INSTANCE_NAME: El nombre de la instancia.
    • REGION_NAME: el nombre de la región para la instancia.
    • DATABASE_VERSION: Es la cadena de enumeración de la versión de la base de datos, como POSTGRES_13.
    • PASSWORD: la contraseña del usuario root.
    • MACHINE_TYPE: Es la cadena de enumeración del tipo de máquina (nivel), como db-custom-[CPUS]-[MEMORY_MBS]. Para obtener más información, consulta Niveles de máquinas.
    • EDITION_TYPE: Tu edición de Cloud SQL, como ENTERPRISE.

    También debes incluir el objeto enableGoogleMlIntegration en la solicitud. Configura los siguientes parámetros, según sea necesario:

    • enableGoogleMlIntegration: Cuando este parámetro se establece en true, las instancias de Cloud SQL pueden conectarse a Agent Platform para pasar solicitudes de predicciones en tiempo real y estadísticas a la IA.
    • cloudsql.enable_google_ml_integration: Cuando este parámetro se establece en on, Cloud SQL puede integrarse en Agent Platform.

    Método HTTP y URL:

    POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances

    Cuerpo JSON de la solicitud:

    {
      "name": "INSTANCE_NAME",
      "region": "REGION_NAME",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "edition": "EDITION_TYPE",
        "enableGoogleMlIntegration": "true" | "false"
        
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on" | "off"
          }
        
      }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2019-09-25T22:19:33.735Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    Actualiza la instancia

    Usa este ejemplo para actualizar la instancia. Para ver una lista completa de los parámetros de esta llamada, consulta la página instances.patch.

    Si una actualización modifica un valor que requiere que la instancia se reinicie, recibirás un mensaje para continuar con el cambio o cancelarlo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID o el número del proyecto del proyecto Google Cloud que contiene la instancia
    • INSTANCE_NAME: Es el nombre de la instancia.

    Método HTTP y URL:

    PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    Cuerpo JSON de la solicitud:

    {
      "settings": {
        "enableGoogleMlIntegration": true,
        
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on"
          }
        
       }
    }

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-16T02:32:12.281Z",
      "operationType": "UPDATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_NAME",
      "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    
  2. Instala la extensión google_ml_integration en una base de datos de la instancia principal de Cloud SQL. Esta base de datos contiene datos sobre los que deseas 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:
      \c DB_NAME

      Reemplaza DB_NAME por el nombre de la base de datos en la que deseas instalar la extensión.

    3. Instala la extensión:
      CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;

Solucionar problemas

En esta sección, se incluye información sobre los problemas asociados con la integración de Cloud SQL en la Plataforma de agentes, junto con los pasos para solucionar los problemas.

Problema Soluciona problemas
Mensaje de error: Google ML integration API is supported only on Postgres version 12 or above. Para habilitar la integración de Agent Platform en Cloud SQL, debes tener una base de datos de Cloud SQL para PostgreSQL, versión 12 o posterior. Para actualizar tu base de datos a esta versión, consulta Actualiza la versión principal de la base de datos de manera local.
Mensaje de error: Google ML Integration API is not supported on shared core instance. Please upsize your machine type. Si seleccionaste un núcleo compartido para el tipo de máquina de tu instancia, no puedes habilitar la integración de Agent Platform en Cloud SQL. Actualiza tu tipo de máquina a un núcleo dedicado. Para obtener más información, consulta Tipo de máquina.
Mensaje de error: Google ML Integration is unsupported for this maintenance version. Please follow https://cloud.google.com/sql/docs/postgres/self-service-maintenance to update the maintenance version of the instance. Para habilitar la integración de Agent Platform en Cloud SQL, la versión de mantenimiento de tu instancia debe ser R20240130 o posterior. Para actualizar tu instancia a esta versión, consulta Mantenimiento de autoservicio.
Mensaje de error: Cannot invoke ml_predict_row if 'cloudsql.enable_google_ml_integration' is off. La marca de la base de datos cloudsql.enable_google_ml_integration está desactivada. Cloud SQL no se puede integrar en Agent Platform.

Para activar esta marca, usa el comando gcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME --database-flags cloudsql.enable_google_ml_integration=on

Reemplaza INSTANCE_NAME por el nombre de la instancia principal de Cloud SQL.
Mensaje de error: Failed to connect to remote host: Connection refused. La integración entre Cloud SQL y Agent Platform no está habilitada. Para habilitar esta integración, usa el comandogcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME
--enable-google-ml-integration


ReemplazarINSTANCE_NAME por el nombre de la instancia principal de Cloud SQL.
Mensaje de error: Agent Platform API has not been used in project PROJECT_ID before or it is disabled. Enable it by visiting /apis/api/aiplatform.googleapis.com/overview?project=PROJECT_ID then retry. La API de Agent Platform no está habilitada. Para obtener más información sobre cómo habilitar esta API, consulta Habilita la integración de la base de datos con Agent Platform.
Mensaje de error: Permission 'aiplatform.endpoints.predict' denied on resource. Los permisos de Agent Platform no se agregan a la cuenta de servicio de Cloud SQL para el proyecto en el que se encuentra la instancia de Cloud SQL. Para obtener más información sobre cómo agregar estos permisos a la cuenta de servicio, consulta Otorga permisos de Identity and Access Management (IAM) a la cuenta de servicio de Cloud SQL para acceder a Agent Platform.
Mensaje de error: Publisher Model `projects/PROJECT_ID/locations/REGION_NAME/publishers/google/models/MODEL_NAME` not found. El modelo de aprendizaje automático o el LLM no existen en Agent Platform.
Mensaje de error: Resource exhausted: grpc: received message larger than max. El tamaño de la solicitud que Cloud SQL pasa a Agent Platform supera el límite de gRPC de 4 MB por solicitud.
Mensaje de error: Cloud SQL attempts to send a request to Agent Platform. However, the instance is in the %s region, but the Agent Platform endpoint is in the %s region. Make sure the instance and endpoint are in the same region. Cloud SQL intenta enviar una solicitud a Agent Platform. Sin embargo, la instancia está en una región, pero el extremo de la Plataforma de agentes está en una región diferente. Para resolver este problema, la instancia y el extremo deben estar en la misma región.
Mensaje de error: The Agent Platform endpoint isn't formatted properly. El extremo de Agent Platform no tiene el formato correcto. Si deseas obtener más información, consulta Usa extremos privados para la predicción en línea.
Mensaje de error: Quota exceeded for aiplatform.googleapis.com/online_prediction_requests_per_base_model with base model: textembedding-gecko. La cantidad de solicitudes que Cloud SQL pasa a Agent Platform supera el límite de 1,500 solicitudes por minuto, por región, por modelo y por proyecto.

¿Qué sigue?