Genera texto con la función AI.GENERATE_TEXT

En este documento, se muestra cómo crear un modelo remoto de BigQuery ML que represente un modelo de Vertex AI y, luego, usar ese modelo remoto con la función AI.GENERATE_TEXT para generar texto.

Se admiten los siguientes tipos de modelos remotos:

Según el modelo de Vertex AI que elijas, puedes generar texto basado en la entrada de datos no estructurados de tablas de objetos o la entrada de texto de tablas estándar.

Roles obligatorios

Para crear un modelo remoto y generar texto, necesitas los siguientes roles de Identity and Access Management (IAM):

  • Crear y usar conjuntos de datos, tablas y modelos de BigQuery: Editor de datos de BigQuery (roles/bigquery.dataEditor) en tu proyecto
  • Crear, delegar y usar conexiones de BigQuery: Administrador de conexiones de BigQuery (roles/bigquery.connectionsAdmin) en tu proyecto

    Si no tienes configurada una conexión predeterminada, puedes crear y establecer una como parte de la ejecución de la instrucción CREATE MODEL. Para ello, debes tener el rol de administrador de BigQuery (roles/bigquery.admin) en tu proyecto. Para obtener más información, consulta Cómo configurar la conexión predeterminada.

  • Otorga permisos a la cuenta de servicio de la conexión: Administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin) en el proyecto que contiene el extremo de Vertex AI. Este es el proyecto actual para los modelos remotos que creas especificando el nombre del modelo como un extremo. Este es el proyecto identificado en la URL de los modelos remotos que creas especificando una URL como extremo.

    Si usas el modelo remoto para analizar datos no estructurados de una tabla de objetos y el bucket de Cloud Storage que usas en la tabla de objetos está en un proyecto diferente al de tu endpoint de Vertex AI, también debes tener el rol de administrador de Storage (roles/storage.admin) en el bucket de Cloud Storage que usa la tabla de objetos.

  • Crear trabajos de BigQuery: Usuario de trabajo de BigQuery (roles/bigquery.jobUser) en tu proyecto

Estos roles predefinidos contienen los permisos necesarios para realizar las tareas de este documento. Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:

Permisos necesarios

  • Crea un conjunto de datos: bigquery.datasets.create
  • Crea, delega y usa una conexión: bigquery.connections.*
  • Configura los permisos de la cuenta de servicio: resourcemanager.projects.getIamPolicy y resourcemanager.projects.setIamPolicy
  • Crea un modelo y ejecuta la inferencia:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Antes de comenzar

  1. 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

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

  3. Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

Crea un conjunto de datos

Crea un conjunto de datos de BigQuery que contenga tus recursos:

Console

  1. En la consola de Google Cloud , ve a la página BigQuery.

    Ir a BigQuery

  2. En el panel de la izquierda, haz clic en Explorar:

    Botón destacado del panel Explorador.

    Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.

  3. En el panel Explorador, haz clic en el nombre de tu proyecto.

  4. Haz clic en Ver acciones > Crear conjunto de datos.

  5. En la página Crear conjunto de datos, haz lo siguiente:

    1. En ID de conjunto de datos, escribe un nombre para el conjunto de datos.

    2. En Tipo de ubicación, selecciona Región o Multirregión.

      • Si seleccionaste Región, selecciona una ubicación de la lista Región.
      • Si seleccionaste Multirregión, selecciona EE.UU. o Europa en la lista Multirregión.
    3. Haz clic en Crear conjunto de datos.

bq

  1. Para crear un conjunto de datos nuevo, usa el comando bq mk con la marca --location:

    bq --location=LOCATION mk -d DATASET_ID

    Reemplaza lo siguiente:

    • LOCATION: la ubicación del conjunto de datos.
    • DATASET_ID es el ID del conjunto de datos que crearás.
  2. Confirma que se haya creado el conjunto de datos:

    bq ls

Crear una conexión

Crea una conexión de recurso de Cloud para que la use el modelo remoto y obtén la cuenta de servicio de la conexión. Crea la conexión en la misma ubicación que el conjunto de datos que creaste en el paso anterior.

Puedes omitir este paso si tienes configurada una conexión predeterminada o si tienes el rol de administrador de BigQuery.

Selecciona una de las siguientes opciones:

Console

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel de la izquierda, haz clic en Explorar:

    Botón destacado del panel Explorador.

    Si no ves el panel izquierdo, haz clic en Expand left pane para abrirlo.

  3. En el panel Explorador, expande el nombre de tu proyecto y, luego, haz clic en Conexiones.

  4. En la página Connections, haz clic en Create connection.

  5. En Tipo de conexión, elige Modelos remotos de Vertex AI, funciones remotas, BigLake y Spanner (Cloud Resource).

  6. En el campo ID de conexión, ingresa un nombre para tu conexión.

  7. En Tipo de ubicación, selecciona una ubicación para tu conexión. La conexión debe estar ubicada junto con tus otros recursos, como los conjuntos de datos.

  8. Haz clic en Crear conexión.

  9. Haz clic en Ir a la conexión.

  10. En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.

bq

  1. En un entorno de línea de comandos, crea una conexión:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID

    El parámetro --project_id anula el proyecto predeterminado.

    Reemplaza lo siguiente:

    • REGION: tu región de conexión
    • PROJECT_ID: El ID de tu proyecto de Google Cloud
    • CONNECTION_ID: Es un ID para tu conexión.

    Cuando creas un recurso de conexión, BigQuery crea una cuenta de servicio del sistema única y la asocia con la conexión.

    Solución de problemas: Si recibes el siguiente error de conexión, actualiza el SDK de Google Cloud:

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Recupera y copia el ID de cuenta de servicio para usarlo en un paso posterior:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    El resultado es similar a este:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

Usa el recurso google_bigquery_connection.

.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

En el siguiente ejemplo, se crea una conexión de recursos de Cloud llamada my_cloud_resource_connection en la región US:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

Para aplicar tu configuración de Terraform en un proyecto de Google Cloud , completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. Establece el proyecto Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.

Prepara el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

  1. En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión .tf, por ejemplo, main.tf. En este instructivo, el archivo se denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.

    Copia el código de muestra en el main.tf recién creado.

    De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo debes hacerlo una vez por directorio.
    terraform init

    De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
    terraform plan

    Corrige la configuración según sea necesario.

  2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe yes cuando se te solicite:
    terraform apply

    Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.

  3. Abre tu proyecto Google Cloud para ver los resultados. En la consola de Google Cloud , navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.

Otorga un rol a la cuenta de servicio de la conexión del modelo remoto

Debes otorgar el rol de usuario de Vertex AI a la cuenta de servicio de la conexión que usa el modelo remoto.

Si planeas especificar el extremo del modelo remoto como una URL, por ejemplo, endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/gemini-2.0-flash', otorga este rol en el mismo proyecto que especifiques en la URL.

Si planeas especificar el extremo del modelo remoto con el nombre del modelo, por ejemplo, endpoint = 'gemini-2.0-flash', otorga este rol en el mismo proyecto en el que planeas crear el modelo remoto.

Si otorgas el rol en un proyecto diferente, se produce el error bqcx-1234567890-wxyz@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource.

Para otorgar el rol de usuario de Vertex AI, sigue estos pasos:

Console

  1. Ir a la página IAM y administración

    Ir a IAM y administración

  2. Haga clic en Agregar.

    Se abre el cuadro de diálogo Agregar principales.

  3. En el campo Principales nuevas (New principals), ingresa el ID de la cuenta de servicio que copiaste antes.

  4. En el campo Selecciona un rol, selecciona Vertex AI y, luego, Usuario de Vertex AI.

  5. Haz clic en Guardar.

gcloud

Usa el comando gcloud projects add-iam-policy-binding

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None

Reemplaza lo siguiente:

  • PROJECT_NUMBER: Es el número de tu proyecto.
  • MEMBER: el ID de la cuenta de servicio que copiaste antes

Otorga un rol a la cuenta de servicio de la conexión de la tabla de objetos

Si usas el modelo remoto para generar texto a partir de datos de la tabla de objetos, otorga a la cuenta de servicio de la conexión de la tabla de objetos el rol de usuario de Vertex AI en el mismo proyecto en el que planeas crear el modelo remoto. En caso contrario, puede omitir este paso.

Para encontrar la cuenta de servicio de la conexión de la tabla de objetos, sigue estos pasos:

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel de la izquierda, haz clic en Explorar:

    Botón destacado del panel Explorador.

    Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.

  3. En el panel Explorador, haz clic en Conjuntos de datos y, luego, selecciona un conjunto de datos que contenga la tabla de objetos.

  4. Haz clic en Overview > Tables y, luego, selecciona la tabla de objetos.

  5. En el panel del editor, haz clic en la pestaña Detalles.

  6. Ten en cuenta el nombre de la conexión en el campo ID de conexión.

  7. En el panel Explorador, haz clic en Conexiones.

  8. Selecciona la conexión que coincida con la del campo ID de conexión de la tabla de objetos.

  9. Copia el valor del campo ID de cuenta de servicio.

Para otorgar el rol, sigue estos pasos:

Console

  1. Ir a la página IAM y administración

    Ir a IAM y administración

  2. Haga clic en Agregar.

    Se abre el cuadro de diálogo Agregar principales.

  3. En el campo Principales nuevas (New principals), ingresa el ID de la cuenta de servicio que copiaste antes.

  4. En el campo Selecciona un rol, selecciona Vertex AI y, luego, Usuario de Vertex AI.

  5. Haz clic en Guardar.

gcloud

Usa el comando gcloud projects add-iam-policy-binding

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None

Reemplaza lo siguiente:

  • PROJECT_NUMBER: Es el número de tu proyecto.
  • MEMBER: el ID de la cuenta de servicio que copiaste antes

Cómo habilitar un modelo de socio

Este paso solo es obligatorio si deseas usar los modelos de Anthropic Claude, Llama o Mistral AI.

  1. En la consola de Google Cloud , ve a la página Model Garden de Vertex AI.

    Ir a Model Garden

  2. Busca o explora el modelo de socio que deseas usar.

  3. Haz clic en la tarjeta de modelo.

  4. En la página del modelo, haz clic en Habilitar.

  5. Completa la información de habilitación solicitada y haz clic en Siguiente.

  6. En la sección Términos y Condiciones, selecciona la casilla de verificación.

  7. Haz clic en Aceptar para aceptar los Términos y Condiciones y habilitar el modelo.

Elige un método de implementación de modelos abiertos

Si creas un modelo remoto sobre un modelo abierto compatible, puedes implementar automáticamente el modelo abierto al mismo tiempo que creas el modelo remoto. Para ello, especifica el ID del modelo de Vertex AI Model Garden o de Hugging Face en la instrucción CREATE MODEL. Como alternativa, primero puedes implementar manualmente el modelo abierto y, luego, usarlo con el modelo remoto especificando el extremo del modelo en la instrucción CREATE MODEL. Para obtener más información, consulta Implementa modelos abiertos.

Crea un modelo remoto de BigQuery ML

Crea un modelo remoto:

Nuevos modelos abiertos

  1. En la consola de Google Cloud , ve a la página BigQuery.

    Ir a BigQuery

  2. Crea un modelo remoto con el editor de SQL:

    CREATE OR REPLACE MODEL
    `PROJECT_ID.DATASET_ID.MODEL_NAME`
    REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`}
    OPTIONS (
      {HUGGING_FACE_MODEL_ID = 'HUGGING_FACE_MODEL_ID' |
         MODEL_GARDEN_MODEL_NAME = 'MODEL_GARDEN_MODEL_NAME'}
      [, HUGGING_FACE_TOKEN = 'HUGGING_FACE_TOKEN' ]
      [, MACHINE_TYPE = 'MACHINE_TYPE' ]
      [, MIN_REPLICA_COUNT = MIN_REPLICA_COUNT ]
      [, MAX_REPLICA_COUNT = MAX_REPLICA_COUNT ]
      [, RESERVATION_AFFINITY_TYPE = {'NO_RESERVATION' | 'ANY_RESERVATION' | 'SPECIFIC_RESERVATION'} ]
      [, RESERVATION_AFFINITY_KEY = 'compute.googleapis.com/reservation-name' ]
      [, RESERVATION_AFFINITY_VALUES = RESERVATION_AFFINITY_VALUES ]
      [, ENDPOINT_IDLE_TTL = ENDPOINT_IDLE_TTL ]
    );

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto
    • DATASET_ID: El ID del conjunto de datos que contendrá el modelo. Este conjunto de datos debe estar en la misma ubicación que la conexión que usas.
    • MODEL_NAME: el nombre del modelo
    • REGION: Es la región que usa la conexión.
    • CONNECTION_ID por el ID de la conexión de BigQuery.

      Puedes obtener este valor viendo los detalles de conexión en la consola de Google Cloud y copiando el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión. Por ejemplo: projects/myproject/locations/connection_location/connections/myconnection.

    • HUGGING_FACE_MODEL_ID: Un valor STRING que especifica el ID del modelo para un modelo compatible de Hugging Face, en el formato provider_name/model_name. Por ejemplo, deepseek-ai/DeepSeek-R1. Para obtener el ID del modelo, haz clic en el nombre del modelo en Hugging Face Model Hub y, luego, copia el ID del modelo de la parte superior de la tarjeta del modelo.
    • MODEL_GARDEN_MODEL_NAME: Es un valor STRING que especifica el ID y la versión de un modelo compatible de Model Garden de Vertex AI, en el formato publishers/publisher/models/model_name@model_version. Por ejemplo, publishers/openai/models/gpt-oss@gpt-oss-120b. Para obtener el ID del modelo, haz clic en la tarjeta del modelo en Model Garden de Vertex AI y, luego, copia el ID del modelo del campo ID del modelo. Puedes obtener la versión predeterminada del modelo copiándola del campo Versión en la tarjeta del modelo. Para ver otras versiones del modelo que puedes usar, haz clic en Implementar modelo y, luego, en el campo ID de recurso.
    • HUGGING_FACE_TOKEN: Un valor STRING que especifica el token de acceso de usuario de Hugging Face que se usará. Solo puedes especificar un valor para esta opción si también especificas un valor para la opción HUGGING_FACE_MODEL_ID.

      El token debe tener, como mínimo, el rol de read, pero también se aceptan tokens con un alcance más amplio. Esta opción es obligatoria cuando el modelo identificado por el valor HUGGING_FACE_MODEL_ID es un modelo restringido o privado de Hugging Face.

      Algunos modelos restringidos requieren la aceptación explícita de sus condiciones del servicio antes de otorgar el acceso. Para aceptar estas condiciones, sigue estos pasos:

      1. Navega a la página del modelo en el sitio web de Hugging Face.
      2. Ubica y revisa las condiciones del servicio del modelo. Por lo general, el vínculo al acuerdo de servicio se encuentra en la tarjeta del modelo.
      3. Acepta las condiciones cuando se te solicite en la página.
    • MACHINE_TYPE: Un valor STRING que especifica el tipo de máquina que se usará cuando se implemente el modelo en Vertex AI. Para obtener información sobre los tipos de máquinas compatibles, consulta Tipos de máquinas. Si no especificas un valor para la opción MACHINE_TYPE, se usará el tipo de máquina predeterminado de Vertex AI Model Garden para el modelo.
    • MIN_REPLICA_COUNT: Es un valor INT64 que especifica la cantidad mínima de réplicas de máquinas que se usan cuando se implementa el modelo en un extremo de Vertex AI. El servicio aumenta o disminuye la cantidad de réplicas según lo requiera la carga de inferencia en el extremo. La cantidad de réplicas que se usa nunca es inferior al valor de MIN_REPLICA_COUNT ni superior al valor de MAX_REPLICA_COUNT. El valor MIN_REPLICA_COUNT debe estar en el rango [1, 4096]. El valor predeterminado es 1.
    • MAX_REPLICA_COUNT: Es un valor INT64 que especifica la cantidad máxima de réplicas de máquinas que se usan cuando se implementa el modelo en un extremo de Vertex AI. El servicio aumenta o disminuye la cantidad de réplicas según lo requiera la carga de inferencia en el extremo. La cantidad de réplicas que se usa nunca es inferior al valor de MIN_REPLICA_COUNT ni superior al valor de MAX_REPLICA_COUNT. El valor MAX_REPLICA_COUNT debe estar en el rango [1, 4096]. El valor predeterminado es el valor de MIN_REPLICA_COUNT.
    • RESERVATION_AFFINITY_TYPE: Determina si el modelo implementado usa reservas de Compute Engine para proporcionar disponibilidad garantizada de máquina virtual (VM) cuando se entregan predicciones y especifica si el modelo usa VMs de todas las reservas disponibles o solo de una reserva específica. Para obtener más información, consulta Afinidad de reservas de Compute Engine.

      Solo puedes usar las reservas de Compute Engine que se comparten con Vertex AI. Para obtener más información, consulta Cómo permitir que se consuma una reserva.

      Los valores admitidos son los siguientes:

      • NO_RESERVATION: No se consume ninguna reserva cuando tu modelo se implementa en un extremo de Vertex AI. Especificar NO_RESERVATION tiene el mismo efecto que no especificar una afinidad de reserva.
      • ANY_RESERVATION: La implementación del modelo de Vertex AI consume máquinas virtuales (VMs) de las reservas de Compute Engine que se encuentran en el proyecto actual o que se comparten con el proyecto, y que están configuradas para el consumo automático. Solo se usan las VMs que cumplen con los siguientes requisitos:
        • Usan el tipo de máquina especificado por el valor MACHINE_TYPE.
        • Si el conjunto de datos de BigQuery en el que creas el modelo remoto es de una sola región, la reserva debe estar en la misma región. Si el conjunto de datos está en la multirregión US, la reserva debe estar en la región us-central1. Si el conjunto de datos está en la multirregión EU, la reserva debe estar en la región europe-west4.

        Si no hay suficiente capacidad en las reservas disponibles o no se encuentran reservas adecuadas, el sistema aprovisiona VMs de Compute Engine según demanda para satisfacer los requisitos de recursos.

      • SPECIFIC_RESERVATION: La implementación del modelo de Vertex AI consume VMs solo de la reserva que especificas en el valor RESERVATION_AFFINITY_VALUES. Esta reserva debe estar configurada para un consumo con una orientación específica. Deployment falla si la reserva especificada no tiene capacidad suficiente.
    • RESERVATION_AFFINITY_KEY: La cadena compute.googleapis.com/reservation-name. Debes especificar esta opción cuando el valor de RESERVATION_AFFINITY_TYPE sea SPECIFIC_RESERVATION.
    • RESERVATION_AFFINITY_VALUES: Un valor ARRAY<STRING> que especifica el nombre completo del recurso de la reserva de Compute Engine, en el siguiente formato:

      projects/myproject/zones/reservation_zone/reservations/reservation_name

      Por ejemplo, RESERVATION_AFFINITY_values = ['projects/myProject/zones/us-central1-a/reservations/myReservationName'].

      Puedes obtener el nombre y la zona de la reserva en la página Reservas de la consola de Google Cloud . Para obtener más información, consulta Cómo ver las reservas.

      Debes especificar esta opción cuando el valor de RESERVATION_AFFINITY_TYPE sea SPECIFIC_RESERVATION.

    • ENDPOINT_IDLE_TTL: Un valor INTERVAL que especifica la duración de la inactividad después de la cual el modelo abierto se anula automáticamente de la implementación del extremo de Vertex AI.

      Para habilitar la anulación automática de la implementación, especifica un valor de literal de intervalo entre 390 minutos (6.5 horas) y 7 días. Por ejemplo, especifica INTERVAL 8 HOUR para que el modelo deje de implementarse después de 8 horas de inactividad. El valor predeterminado es de 390 minutos (6.5 horas).

      La inactividad del modelo se define como la cantidad de tiempo que transcurrió desde que se realizó alguna de las siguientes operaciones en el modelo:

      Cada una de estas operaciones restablece el temporizador de inactividad a cero. El restablecimiento se activa al inicio del trabajo de BigQuery que realiza la operación.

      Después de que se anula la implementación del modelo, las solicitudes de inferencia que se envían a este muestran un error. El objeto del modelo de BigQuery permanece sin cambios, incluidos los metadatos del modelo. Para volver a usar el modelo para la inferencia, debes volver a implementarlo ejecutando la sentencia ALTER MODEL en el modelo y configurando la opción DEPLOY_MODEL en TRUE.

Modelos abiertos implementados

  1. En la consola de Google Cloud , ve a la página BigQuery.

    Ir a BigQuery

  2. Crea un modelo remoto con el editor de SQL:

    CREATE OR REPLACE MODEL
    `PROJECT_ID.DATASET_ID.MODEL_NAME`
    REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`}
    OPTIONS (
      ENDPOINT = 'https://ENDPOINT_REGION-aiplatform.googleapis.com/v1/projects/ENDPOINT_PROJECT_ID/locations/ENDPOINT_REGION/endpoints/ENDPOINT_ID'
    );

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto
    • DATASET_ID: El ID del conjunto de datos que contendrá el modelo. Este conjunto de datos debe estar en la misma ubicación que la conexión que usas.
    • MODEL_NAME: el nombre del modelo
    • REGION: Es la región que usa la conexión.
    • CONNECTION_ID por el ID de la conexión de BigQuery.

      Puedes obtener este valor viendo los detalles de conexión en la consola de Google Cloud y copiando el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión. Por ejemplo: projects/myproject/locations/connection_location/connections/myconnection.

    • ENDPOINT_REGION: Es la región en la que se implementa el modelo abierto.
    • ENDPOINT_PROJECT_ID: Es el proyecto en el que se implementa el modelo abierto.
    • ENDPOINT_ID: Es el ID del extremo HTTPS que usa el modelo abierto. Puedes obtener el ID del extremo. Para ello, localiza el modelo abierto en la página Predicción en línea y copia el valor del campo ID.

Todos los demás modelos

  1. En la consola de Google Cloud , ve a la página BigQuery.

    Ir a BigQuery

  2. Crea un modelo remoto con el editor de SQL:

    CREATE OR REPLACE MODEL
    `PROJECT_ID.DATASET_ID.MODEL_NAME`
    REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`}
    OPTIONS (ENDPOINT = 'ENDPOINT');

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto
    • DATASET_ID: El ID del conjunto de datos que contendrá el modelo. Este conjunto de datos debe estar en la misma ubicación que la conexión que usas.
    • MODEL_NAME: el nombre del modelo
    • REGION: Es la región que usa la conexión.
    • CONNECTION_ID por el ID de la conexión de BigQuery.

      Puedes obtener este valor viendo los detalles de conexión en la consola de Google Cloud y copiando el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión. Por ejemplo: projects/myproject/locations/connection_location/connections/myconnection.

    • ENDPOINT: Es el extremo del modelo de Vertex AI que se usará.

      En el caso de los modelos de Vertex AI previamente entrenados, los modelos de Claude y los modelos de Mistral AI, especifica el nombre del modelo. Para algunos de estos modelos, puedes especificar una versión particular del modelo como parte del nombre. En el caso de los modelos de Gemini compatibles, puedes especificar el extremo global para mejorar la disponibilidad.

      En el caso de los modelos de Llama, especifica un extremo de la API de OpenAI en el formato openapi/<publisher_name>/<model_name>. Por ejemplo, openapi/meta/llama-3.1-405b-instruct-maas.

      Para obtener información sobre los nombres y las versiones de modelos compatibles, consulta ENDPOINT.

      El modelo de Vertex AI que especifiques debe estar disponible en la ubicación en la que crees el modelo remoto. Para obtener más información, consulta Ubicaciones.

Genera texto a partir de datos de tablas estándar

Para generar texto, usa la función AI.GENERATE_TEXT con datos de instrucciones de una tabla estándar:

Gemini

SELECT *
FROM AI.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)},
  STRUCT(
  {
    {
      [MAX_OUTPUT_TOKENS AS max_output_tokens]
      [, TOP_P AS top_p]
      [, TEMPERATURE AS temperature]
      [, STOP_SEQUENCES AS stop_sequences]
      [, GROUND_WITH_GOOGLE_SEARCH AS ground_with_google_search]
      [, SAFETY_SETTINGS AS safety_settings]
    }
    |
    [, MODEL_PARAMS AS model_params]
  }
  [, REQUEST_TYPE AS request_type])
);

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamada prompt, o puedes usar un alias para usar una columna con nombre diferente.
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje. Esta consulta debe producir una columna llamada prompt.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,8192]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatoriedad en la selección de tokens. El valor predeterminado es 0.

    Los valores más bajos para temperature son buenos para los mensajes que requieren una respuesta más determinística y menos abierta o creativa, mientras que los valores más altos para temperature pueden generar resultados más diversos o creativos. Un valor de 0 para temperature es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.

  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • STOP_SEQUENCES: Es un valor ARRAY<STRING> que quita las strings especificadas si se incluyen en respuestas del modelo. Las strings coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • GROUND_WITH_GOOGLE_SEARCH: Un valor BOOL que determina si el modelo de Vertex AI usa la [Fundamentación con la Búsqueda de Google](/vertex-ai/generative-ai/docs/grounding/overview#ground-public) cuando genera respuestas. La fundamentación permite que el modelo use información adicional de Internet cuando genera una respuesta para que las respuestas del modelo sean más específicas y fácticas. Cuando este campo se configura en True, se incluye una columna grounding_result adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. La configuración predeterminada es FALSE.
  • SAFETY_SETTINGS: Un valor ARRAY<STRUCT<STRING AS category, STRING AS threshold>> que configura umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento del struct especifica una categoría de daño, y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que incumple esta configuración. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) y STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold) a la vez. Si no hay un parámetro de configuración de seguridad para una categoría determinada, se usa el parámetro de configuración de seguridad BLOCK_MEDIUM_AND_ABOVE. Las categorías admitidas son las siguientes:
    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT
    Los umbrales admitidos son los siguientes:
    • BLOCK_NONE (Restringido)
    • BLOCK_LOW_AND_ABOVE
    • BLOCK_MEDIUM_AND_ABOVE (predeterminado)
    • BLOCK_ONLY_HIGH
    • HARM_BLOCK_THRESHOLD_UNSPECIFIED
    Para obtener más información, consulta la definición de categoría de seguridad y umbral de bloqueo.
  • REQUEST_TYPE: Es un valor STRING que especifica el tipo de solicitud de inferencia que se enviará al modelo de Gemini. El tipo de solicitud determina qué cuota usa la solicitud. Los valores válidos son los siguientes:
    • DEDICATED: La función AI.GENERATE_TEXT solo usa la cuota de capacidad de procesamiento aprovisionada. La función AI.GENERATE_TEXT devuelve el error Provisioned throughput is not purchased or is not active si la cuota de capacidad de procesamiento aprovisionada no está disponible.
    • SHARED: La función AI.GENERATE_TEXT solo usa la cuota compartida dinámica (DSQ), incluso si compraste una cuota de capacidad de procesamiento aprovisionada.
    • UNSPECIFIED: La función AI.GENERATE_TEXT usa la cuota de la siguiente manera:
      • Si no compraste una cuota de capacidad de procesamiento aprovisionada, la función AI.GENERATE_TEXT usa la cuota de DSQ.
      • Si compraste una cuota de capacidad de procesamiento aprovisionada, la función AI.GENERATE_TEXT usará primero esa cuota. Si las solicitudes superan la cuota de capacidad de procesamiento aprovisionada, el tráfico excedente usa la cuota de DSQ.

    El valor predeterminado es UNSPECIFIED.

    Para obtener más información, consulta Cómo usar la capacidad de procesamiento aprovisionada de Vertex AI.

  • MODEL_PARAMS: Es un literal de cadena con formato JSON que proporciona parámetros al modelo. El valor debe cumplir con el formato del cuerpo de la solicitud generateContent. Puedes proporcionar un valor para cualquier campo del cuerpo de la solicitud, excepto el campo contents[]. Si configuras este campo, no puedes especificar ningún parámetro del modelo en el argumento de struct de nivel superior para la función AI.GENERATE_TEXT. Debes especificar cada parámetro del modelo en el campo MODEL_PARAMS o bien omitir este campo y especificar cada parámetro por separado.

Ejemplo 1

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Solicita un resumen del texto en la columna body de la tabla articles.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ));

Ejemplo 2

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa una consulta para crear los datos del mensaje con la concatenación de cadenas que proporcionan prefijos del mensaje con columnas de la tabla.
  • Muestra una respuesta breve.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      100 AS max_output_tokens));

Ejemplo 3

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa la columna prompt de la tabla prompts para el mensaje.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    TABLE mydataset.prompts);

Ejemplo 4

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa la columna prompt de la tabla prompts para el mensaje.
  • Muestra una respuesta breve.
  • Recupera y muestra datos web públicos para la fundamentación de respuestas.
  • Filtra las respuestas no seguras con dos parámetros de configuración de seguridad.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    TABLE mydataset.prompts,
    STRUCT(
      100 AS max_output_tokens, 0.5 AS top_p,
      TRUE AS ground_with_google_search,
      [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category,
        'BLOCK_LOW_AND_ABOVE' AS threshold),
      STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category,
        'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));

Ejemplo 5

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa la columna prompt de la tabla prompts para el mensaje.
  • Devuelve una respuesta más larga.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.flash_2_model`,
    TABLE mydataset.prompts,
    STRUCT(
      0.4 AS temperature, 8192 AS max_output_tokens));

Ejemplo 6

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Solicita un resumen del texto en la columna body de la tabla articles.
  • Recupera y muestra datos web públicos para la fundamentación de respuestas.
  • Filtra las respuestas no seguras con dos parámetros de configuración de seguridad.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ),
    STRUCT(
      .1 AS TEMPERATURE,
      TRUE AS ground_with_google_search,
      [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category,
        'BLOCK_LOW_AND_ABOVE' AS threshold),
      STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category,
        'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));

Claude

SELECT *
FROM AI.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)},
  STRUCT(
  {
    {
      [MAX_OUTPUT_TOKENS AS max_output_tokens]
      [, TOP_K AS top_k]
      [, TOP_P AS top_p]
    }
    |
    [, MODEL_PARAMS AS model_params]
  })
);

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamada prompt, o puedes usar un alias para usar una columna con nombre diferente.
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje. Esta consulta debe producir una columna llamada prompt.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,4096]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. Si no especificas un valor, el modelo determina uno apropiado.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. Si no especificas un valor, el modelo determina uno apropiado.
  • MODEL_PARAMS: Es un literal de cadena con formato JSON que proporciona parámetros al modelo. El valor debe cumplir con el formato del cuerpo de la solicitud generateContent. Puedes proporcionar un valor para cualquier campo del cuerpo de la solicitud, excepto el campo contents[]. Si configuras este campo, no puedes especificar ningún parámetro del modelo en el argumento struct de nivel superior para la función AI.GENERATE_TEXT. Debes especificar cada parámetro del modelo en el campo MODEL_PARAMS o bien omitir este campo y especificar cada parámetro por separado.

Ejemplo 1

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Solicita un resumen del texto en la columna body de la tabla articles.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ));

Ejemplo 2

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa una consulta para crear los datos del mensaje con la concatenación de cadenas que proporcionan prefijos del mensaje con columnas de la tabla.
  • Muestra una respuesta breve.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      100 AS max_output_tokens));

Ejemplo 3

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa la columna prompt de la tabla prompts para el mensaje.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    TABLE mydataset.prompts);

Llama

SELECT *
FROM AI.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)},
  STRUCT(
  {
    {
      [MAX_OUTPUT_TOKENS AS max_output_tokens]
      [, TOP_P AS top_p]
      [, TEMPERATURE AS temperature]
      [, STOP_SEQUENCES AS stop_sequences]
    |
    }
    [, MODEL_PARAMS AS model_params]
  })
);

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamada prompt, o puedes usar un alias para usar una columna con nombre diferente.
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje. Esta consulta debe producir una columna llamada prompt.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,4096]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatoriedad en la selección de tokens. El valor predeterminado es 0.

    Los valores más bajos para temperature son buenos para los mensajes que requieren una respuesta más determinística y menos abierta o creativa, mientras que los valores más altos para temperature pueden generar resultados más diversos o creativos. Un valor de 0 para temperature es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.

  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • STOP_SEQUENCES: Es un valor ARRAY<STRING> que quita las strings especificadas si se incluyen en respuestas del modelo. Las strings coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • MODEL_PARAMS: Es un literal de cadena con formato JSON que proporciona parámetros al modelo. El valor debe cumplir con el formato del cuerpo de la solicitud generateContent. Puedes proporcionar un valor para cualquier campo del cuerpo de la solicitud, excepto el campo contents[]. Si configuras este campo, no puedes especificar ningún parámetro del modelo en el argumento de struct de nivel superior para la función AI.GENERATE_TEXT. Debes especificar cada parámetro del modelo en el campo MODEL_PARAMS o bien omitir este campo y especificar cada parámetro por separado.

Ejemplo 1

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Solicita un resumen del texto en la columna body de la tabla articles.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ));

Ejemplo 2

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa una consulta para crear los datos del mensaje con la concatenación de cadenas que proporcionan prefijos del mensaje con columnas de la tabla.
  • Muestra una respuesta breve.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      100 AS max_output_tokens));

Ejemplo 3

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa la columna prompt de la tabla prompts para el mensaje.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    TABLE mydataset.prompts);

Mistral AI

SELECT *
FROM AI.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)},
  STRUCT(
  {
    {
      [MAX_OUTPUT_TOKENS AS max_output_tokens]
      [, TOP_P AS top_p]
      [, TEMPERATURE AS temperature]
      [, STOP_SEQUENCES AS stop_sequences]
    |
    }
    [, MODEL_PARAMS AS model_params]
  })
);

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamada prompt, o puedes usar un alias para usar una columna con nombre diferente.
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje. Esta consulta debe producir una columna llamada prompt.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,4096]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatoriedad en la selección de tokens. El valor predeterminado es 0.

    Los valores más bajos para temperature son buenos para los mensajes que requieren una respuesta más determinística y menos abierta o creativa, mientras que los valores más altos para temperature pueden generar resultados más diversos o creativos. Un valor de 0 para temperature es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.

  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • STOP_SEQUENCES: Es un valor ARRAY<STRING> que quita las strings especificadas si se incluyen en respuestas del modelo. Las strings coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • MODEL_PARAMS: Es un literal de cadena con formato JSON que proporciona parámetros al modelo. El valor debe cumplir con el formato del cuerpo de la solicitud generateContent. Puedes proporcionar un valor para cualquier campo del cuerpo de la solicitud, excepto el campo contents[]. Si configuras este campo, no puedes especificar ningún parámetro del modelo en el argumento struct de nivel superior para la función AI.GENERATE_TEXT. Debes especificar cada parámetro del modelo en el campo MODEL_PARAMS o bien omitir este campo y especificar cada parámetro por separado.

Ejemplo 1

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Solicita un resumen del texto en la columna body de la tabla articles.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ));

Ejemplo 2

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa una consulta para crear los datos del mensaje con la concatenación de cadenas que proporcionan prefijos del mensaje con columnas de la tabla.
  • Muestra una respuesta breve.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      100 AS max_output_tokens));

Ejemplo 3

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa la columna prompt de la tabla prompts para el mensaje.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    TABLE mydataset.prompts);

Modelos abiertos

SELECT *
FROM AI.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)},
  STRUCT(
  {
    {
      [MAX_OUTPUT_TOKENS AS max_output_tokens]
      [, TOP_K AS top_k]
      [, TOP_P AS top_p]
      [, TEMPERATURE AS temperature]
    }
    |
    [, MODEL_PARAMS AS model_params]
  })
);

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamada prompt, o puedes usar un alias para usar una columna con nombre diferente.
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje. Esta consulta debe producir una columna llamada prompt.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,4096]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. Si no especificas un valor, el modelo determina uno apropiado.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatoriedad en la selección de tokens. Si no especificas un valor, el modelo determina uno apropiado.

    Los valores más bajos para temperature son buenos para los mensajes que requieren una respuesta más determinística y menos abierta o creativa, mientras que los valores más altos para temperature pueden generar resultados más diversos o creativos. Un valor de 0 para temperature es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.

  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. Si no especificas un valor, el modelo determina uno apropiado.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. Si no especificas un valor, el modelo determina uno apropiado.
  • MODEL_PARAMS: Es un literal de cadena con formato JSON que proporciona parámetros al modelo. El valor debe cumplir con el formato del cuerpo de la solicitud generateContent. Puedes proporcionar un valor para cualquier campo del cuerpo de la solicitud, excepto el campo contents[]. Si configuras este campo, no puedes especificar ningún parámetro del modelo en el argumento struct de nivel superior para la función AI.GENERATE_TEXT. Debes especificar cada parámetro del modelo en el campo MODEL_PARAMS o bien omitir este campo y especificar cada parámetro por separado.

Ejemplo 1

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Solicita un resumen del texto en la columna body de la tabla articles.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ));

Ejemplo 2

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa una consulta para crear los datos del mensaje con la concatenación de cadenas que proporcionan prefijos del mensaje con columnas de la tabla.
  • Muestra una respuesta breve.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      100 AS max_output_tokens));

Ejemplo 3

En el siguiente ejemplo, se muestra una solicitud con estas características:

  • Usa la columna prompt de la tabla prompts para el mensaje.
SELECT *
FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    TABLE mydataset.prompts);

Genera texto a partir de datos de tablas de objetos

Para generar texto, usa la función AI.GENERATE_TEXT con un modelo de Gemini para analizar datos no estructurados de una tabla de objetos. Proporcionas los datos de la instrucción en el parámetro prompt.

SELECT *
FROM AI.GENERATE_TEXT(
MODEL `PROJECT_ID.DATASET.MODEL`,
{ TABLE `PROJECT_ID.DATASET.TABLE` | (QUERY_STATEMENT) },
STRUCT(
  PROMPT AS prompt
  {
    {
      [, MAX_OUTPUT_TOKENS AS max_output_tokens]
      [, TOP_P AS top_p]
      [, TEMPERATURE AS temperature]
      [, STOP_SEQUENCES AS stop_sequences]
      [, SAFETY_SETTINGS AS safety_settings]
    }
    |
    [, MODEL_PARAMS AS model_params]
  })
);

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto que contiene el recurso.

  • DATASET: Es el conjunto de datos que contiene el recurso.

  • MODEL: Es el nombre del modelo remoto sobre el modelo de Vertex AI. Para obtener más información sobre cómo crear este tipo de modelo remoto, consulta La instrucción CREATE MODEL para modelos remotos a través de LLMs.

    Para confirmar qué modelo usa el modelo remoto, abre la consola deGoogle Cloud y consulta el campo Extremo remoto en la página de detalles del modelo.

  • TABLE: Es el nombre de la tabla de objetos que contiene el contenido que se analizará. Para obtener más información sobre qué tipos de contenido puedes analizar, consulta Entrada.

    El bucket de Cloud Storage que usa la tabla de objetos de entrada debe estar en el mismo proyecto en el que creaste el modelo y en el que llamas a la función AI.GENERATE_TEXT.

  • QUERY_STATEMENT: Es la consulta de GoogleSQL que genera los datos de la imagen. Solo puedes especificar cláusulas WHERE y ORDER BY en la consulta.

  • PROMPT: Es un valor STRING que contiene la instrucción que se usará para analizar el contenido visual. El valor de prompt debe contener menos de 16,000 tokens. Un token puede ser más pequeño que una palabra y tiene aproximadamente cuatro caracteres. Cien tokens corresponden a aproximadamente entre 60 y 80 palabras.

  • MAX_OUTPUT_TOKENS: Es un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,8192]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 1024.

  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] que cambia la forma en que el modelo selecciona tokens para la salida. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.

    Los tokens se seleccionan del más probable al menos probable hasta que la suma de sus probabilidades sea igual al valor de TOP_P. Por ejemplo, si los tokens A, B y C tienen una probabilidad de 0.3, 0.2 y 0.1, y el valor TOP_P es 0.5, entonces el modelo selecciona A o B como el siguiente token usando el valor TEMPERATURE y no considera C.

  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatoriedad en la selección de tokens. Los valores de TEMPERATURE más bajos son buenos para los mensajes que requieren una respuesta más determinística y menos abierta o creativa, mientras que los valores de TEMPERATURE más altos pueden generar resultados más diversos o creativos. Un valor TEMPERATURE de 0 es determinístico, lo que significa que siempre se elige la respuesta de mayor probabilidad. El valor predeterminado es 0.

  • STOP_SEQUENCES: Es un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.

  • SAFETY_SETTINGS: Un valor ARRAY<STRUCT<STRING AS category, STRING AS threshold>> que configura umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento del struct especifica una categoría de daño, y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que incumple esta configuración. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) y STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold) a la vez. Si no hay un parámetro de configuración de seguridad para una categoría determinada, se usa el parámetro de configuración de seguridad BLOCK_MEDIUM_AND_ABOVE.

    Las categorías admitidas son las siguientes:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Los umbrales admitidos son los siguientes:

    • BLOCK_NONE (Restringido)
    • BLOCK_LOW_AND_ABOVE
    • BLOCK_MEDIUM_AND_ABOVE (predeterminado)
    • BLOCK_ONLY_HIGH
    • HARM_BLOCK_THRESHOLD_UNSPECIFIED

    Para obtener más información, consulta la definición de categoría de seguridad y umbral de bloqueo.

  • MODEL_PARAMS: Es un literal de cadena con formato JSON que proporciona parámetros adicionales al modelo. El valor debe cumplir con el formato del cuerpo de la solicitud generateContent. Puedes proporcionar un valor para cualquier campo del cuerpo de la solicitud, excepto el campo contents[]. Si configuras este campo, tampoco puedes especificar ningún parámetro del modelo en el argumento de struct de nivel superior para la función AI.GENERATE_TEXT.

Ejemplos

En este ejemplo, se traduce y transcribe el contenido de audio de una tabla de objetos llamada feedback:

SELECT * FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.audio_model`,
    TABLE `mydataset.feedback`,
      STRUCT('What is the content of this audio clip, translated into Spanish?' AS PROMPT));

En este ejemplo, se clasifica el contenido en PDF de una tabla de objetos llamada invoices:

SELECT * FROM
  AI.GENERATE_TEXT(
    MODEL `mydataset.classify_model`,
    TABLE `mydataset.invoices`,
      STRUCT('Classify this document based on the invoice total, using the following categories: 0 to 100, 101 to 200, greater than 200' AS PROMPT));