Generar texto con la función ML.GENERATE_TEXT
En este documento se explica cómo crear un modelo remoto de BigQuery ML
que representa un modelo de Vertex AI y, a continuación, cómo usar ese modelo remoto
con la
función ML.GENERATE_TEXT
para generar texto.
Se admiten los siguientes tipos de modelos remotos:
- Modelos remotos en cualquiera de los modelos de Gemini disponibles de forma general o en la versión preliminar.
- Modelos remotos sobre modelos Claude de Anthropic.
- Modelos remotos en modelos Llama
- Modelos remotos sobre modelos de Mistral AI
- Modelos remotos sobre modelos abiertos admitidos.
En función del modelo de Vertex AI que elijas, puedes generar texto a partir de datos sin estructurar de tablas de objetos o de texto de tablas estándar.
Roles obligatorios
Para crear un modelo remoto y generar texto, necesitas los siguientes roles de Gestión de Identidades y Accesos (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 tiene configurada una conexión predeterminada, puede crear una y definirla al ejecutar la instrucción
CREATE MODEL. Para ello, debes tener el rol Administrador de BigQuery (roles/bigquery.admin) en tu proyecto. Para obtener más información, consulta Configurar la conexión predeterminada.Concede permisos a la cuenta de servicio de la conexión: administrador de gestión de identidades y accesos del proyecto (
roles/resourcemanager.projectIamAdmin) en el proyecto que contiene el endpoint de Vertex AI. Este es el proyecto actual de los modelos remotos que creas especificando el nombre del modelo como endpoint. Es el proyecto identificado en la URL de los modelos remotos que creas especificando una URL como endpoint.Si usas el modelo remoto para analizar datos no estructurados de una tabla de objetos y el segmento de Cloud Storage que usas en la tabla de objetos está en un proyecto distinto al de tu endpoint de Vertex AI, también debes tener el rol Administrador de Storage (
roles/storage.admin) en el segmento de Cloud Storage que usa la tabla de objetos.Crear tareas de BigQuery: Usuario de tareas de BigQuery (
roles/bigquery.jobUser) en tu proyecto.
Estos roles predefinidos contienen los permisos necesarios para realizar las tareas descritas en este documento. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
- Crea un conjunto de datos:
bigquery.datasets.create - Crea, delega y usa una conexión:
bigquery.connections.* - Define los permisos de la cuenta de servicio:
resourcemanager.projects.getIamPolicyyresourcemanager.projects.setIamPolicy - Crea un modelo y ejecuta la inferencia:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Antes de empezar
-
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
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles.
Crear conjunto de datos
Crea un conjunto de datos de BigQuery para que contenga tus recursos:
Consola
En la Google Cloud consola, ve a la página BigQuery.
En el panel de la izquierda, haz clic en Explorador:

Si no ves el panel de la izquierda, haz clic en Ampliar panel de la izquierda para abrirlo.
En el panel Explorador, haz clic en el nombre de tu proyecto.
Haz clic en Ver acciones > Crear conjunto de datos.
En la página Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, escribe un nombre para el conjunto de datos.
En Tipo de ubicación, selecciona Región o Multirregión.
- Si has seleccionado Región, elige una ubicación de la lista Región.
- Si has seleccionado Multirregión, elige EE. UU. o Europa en la lista Multirregión.
Haz clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos, usa el comando
bq mkcon la marca--location:bq --location=LOCATION mk -d DATASET_ID
Haz los cambios siguientes:
LOCATION: la ubicación del conjunto de datos.DATASET_IDes el ID del conjunto de datos que vas a crear.
Confirma que se ha creado el conjunto de datos:
bq ls
Crear una conexión
Puedes saltarte este paso si tienes una conexión predeterminada configurada o si tienes el rol Administrador de BigQuery.
Crea una conexión de recursos 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 has creado en el paso anterior.
Selecciona una de las opciones siguientes:
Consola
Ve a la página BigQuery.
En el panel Explorador, haga clic en Añadir datos:
Se abrirá el cuadro de diálogo Añadir datos.
En el panel Filtrar por, en la sección Tipo de fuente de datos, selecciona Aplicaciones empresariales.
También puede introducir
Vertex AIen el campo Buscar fuentes de datos.En la sección Fuentes de datos destacadas, haga clic en Vertex AI.
Haz clic en la tarjeta de solución Modelos de Vertex AI: federación de BigQuery.
En la lista Tipo de conexión, selecciona Modelos remotos y funciones remotas de Vertex AI, BigLake y Spanner (recurso de Cloud).
En el campo ID de conexión, introduce un nombre para la conexión.
Haga clic en Crear conexión.
Haz clic en Ir a la conexión.
En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.
bq
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_idanula el proyecto predeterminado.Haz los cambios siguientes:
REGION: tu región de conexiónPROJECT_ID: tu ID de proyecto Google CloudCONNECTION_ID: 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 a la conexión.
Solución de problemas: si aparece 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...
Obtén y copia el ID de la cuenta de servicio para usarlo en un paso posterior:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
El resultado debería ser similar al siguiente:
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. Para obtener más información, consulta Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se crea una conexión de recursos de Cloud llamada my_cloud_resource_connection en la región US:
Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud
Preparar Cloud Shell
- Abre Cloud Shell.
-
Define el Google Cloud proyecto predeterminado en el que quieras aplicar tus configuraciones de Terraform.
Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión
.tf. Por ejemplo,main.tf. En este tutorial, nos referiremos al archivo comomain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.
Copia el código de ejemplo en el archivo
main.tfque acabas de crear.También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
terraform init
Si quieres usar la versión más reciente del proveedor de Google, incluye la opción
-upgrade:terraform init -upgrade
Aplica los cambios
-
Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
terraform plan
Haga las correcciones necesarias en la configuración.
-
Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo
yesen la petición:terraform apply
Espera hasta que Terraform muestre el mensaje "Apply complete!".
- Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.
Conceder un rol a la cuenta de servicio de la conexión del modelo remoto
Debes asignar el rol Usuario de Vertex AI a la cuenta de servicio de la conexión que usa el modelo remoto.
Si tiene previsto especificar el endpoint 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', conceda este rol en el mismo proyecto que especifique en la URL.
Si tienes previsto especificar el endpoint del modelo remoto mediante el nombre del modelo (por ejemplo, endpoint = 'gemini-2.0-flash'), otorga este rol en el mismo proyecto en el que quieras crear el modelo remoto.
Si se asigna el rol en otro proyecto, se produce el error
bqcx-1234567890-wxyz@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource.
Para asignar el rol Usuario de Vertex AI, sigue estos pasos:
Consola
Ve a la página IAM y administración.
Haz clic en Añadir.
Se abrirá el cuadro de diálogo Añadir principales.
En el campo Nuevos principales, introduce el ID de la cuenta de servicio que has copiado anteriormente.
En el campo Selecciona un rol, elige Vertex AI y, a continuación, Usuario de Vertex AI.
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
Haz los cambios siguientes:
PROJECT_NUMBER: tu número de proyectoMEMBER: el ID de la cuenta de servicio que has copiado antes
Conceder un rol a la cuenta de servicio de la conexión de tabla de objetos
Si vas a usar el modelo remoto para generar texto a partir de los datos de la tabla de objetos, concede 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 quieras crear el modelo remoto. De lo contrario, puedes saltarte este paso.
Para encontrar la cuenta de servicio de la conexión de la tabla de objetos, sigue estos pasos:
Ve a la página BigQuery.
En el panel de la izquierda, haz clic en Explorador:

Si no ves el panel de la izquierda, haz clic en Ampliar panel de la izquierda para abrirlo.
En el panel Explorador, haz clic en Conjuntos de datos y, a continuación, selecciona un conjunto de datos que contenga la tabla de objetos.
Haga clic en Resumen > Tablas y, a continuación, seleccione la tabla de objetos.
En el panel del editor, haz clic en la pestaña Detalles.
Anota el nombre de la conexión en el campo ID de conexión.
En el panel Explorador, haz clic en Conexiones.
Seleccione la conexión que coincida con la del campo ID de conexión de la tabla de objetos.
Copia el valor del campo ID de cuenta de servicio.
Para conceder el rol, sigue estos pasos:
Consola
Ve a la página IAM y administración.
Haz clic en Añadir.
Se abrirá el cuadro de diálogo Añadir principales.
En el campo Nuevos principales, introduce el ID de la cuenta de servicio que has copiado anteriormente.
En el campo Selecciona un rol, elige Vertex AI y, a continuación, Usuario de Vertex AI.
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
Haz los cambios siguientes:
PROJECT_NUMBER: tu número de proyectoMEMBER: el ID de la cuenta de servicio que has copiado antes
Habilitar un modelo de partner
Este paso solo es necesario si quieres usar los modelos de IA Claude, Llama o Mistral de Anthropic.
En la Google Cloud consola, ve a la página Model Garden de Vertex AI.
Busca el modelo de colaborador que quieras usar.
Haz clic en la tarjeta del modelo.
En la página del modelo, haga clic en Habilitar.
Rellena la información solicitada para habilitar la función y haz clic en Siguiente.
En la sección Términos y condiciones, marca la casilla.
Haz clic en Aceptar para aceptar los términos y condiciones y habilitar el modelo.
Elegir un método de implementación de modelos abiertos
Si creas un modelo remoto a partir de un modelo abierto compatible, puedes desplegarlo automáticamente al mismo tiempo que creas el modelo remoto especificando el ID del modelo de Vertex AI Model Garden o de Hugging Face en la instrucción CREATE MODEL.
También puedes desplegar manualmente el modelo abierto y, a continuación, usarlo con el modelo remoto especificando el endpoint del modelo en la instrucción CREATE MODEL. Para obtener más información, consulta Implementar modelos abiertos.
Crear un modelo remoto de BigQuery ML
Crea un modelo remoto:
Nuevos modelos abiertos
En la Google Cloud consola, ve a la página BigQuery.
En el editor de SQL, crea un modelo remoto:
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 ] );
Haz los cambios siguientes:
PROJECT_ID: tu ID de proyecto.DATASET_ID: 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 estés usando.MODEL_NAME: el nombre del modelo.REGION: la región que usa la conexión.CONNECTION_ID: el ID de tu conexión de BigQuery.Para obtener este valor, consulta los detalles de la conexión en la consola Google Cloud y copia el valor de la última sección del ID de conexión completo que se muestra en ID de conexión. Por ejemplo,
projects/myproject/locations/connection_location/connections/myconnection.HUGGING_FACE_MODEL_ID: un valorSTRINGque especifica el ID del modelo de un modelo de Hugging Face compatible, en el formatoprovider_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, a continuación, copia el ID del modelo de la parte superior de la tarjeta del modelo.MODEL_GARDEN_MODEL_NAME: un valorSTRINGque especifica el ID y la versión del modelo de un modelo de Model Garden de Vertex AI compatible, con el formatopublishers/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 Vertex AI Model Garden y, a continuación, copia el ID del modelo del campo ID del modelo. Para obtener la versión predeterminada del modelo, cópiala del campo Versión de la tarjeta del modelo. Para ver otras versiones del modelo que puedes usar, haz clic en Implementar modelo y, a continuación, en el campo ID de recurso.HUGGING_FACE_TOKEN: un valorSTRINGque especifica el token de acceso de usuario de Hugging Face que se va a usar. Solo puedes especificar un valor para esta opción si también especificas un valor para la opciónHUGGING_FACE_MODEL_ID.El token debe tener al menos el rol
read, pero también se aceptan tokens con un ámbito más amplio. Esta opción es obligatoria cuando el modelo identificado por el valorHUGGING_FACE_MODEL_IDes un modelo cerrado o privado de Hugging Face.Algunos modelos con acceso restringido requieren que aceptes explícitamente sus términos del servicio para poder acceder a ellos. Para aceptar estos términos, sigue estos pasos:
- Ve a la página del modelo en el sitio web de Hugging Face.
- Busca y revisa los términos del servicio del modelo. Normalmente, se incluye un enlace al contrato de servicio en la tarjeta del modelo.
- Acepta los términos que se te indiquen en la página.
MACHINE_TYPE: un valorSTRINGque especifica el tipo de máquina que se va a usar al desplegar el modelo en Vertex AI. Para obtener información sobre los tipos de máquinas admitidos, consulta Tipos de máquinas. Si no especifica ningún valor para la opciónMACHINE_TYPE, se usará el tipo de máquina predeterminado de Vertex AI Model Garden para el modelo.MIN_REPLICA_COUNT: un valorINT64que especifica el número mínimo de réplicas de máquinas que se usan al desplegar el modelo en un endpoint de Vertex AI. El servicio aumenta o disminuye el número de réplicas según lo requiera la carga de inferencia en el endpoint. El número de réplicas utilizadas nunca es inferior al valor deMIN_REPLICA_COUNTni superior al valor deMAX_REPLICA_COUNT. El valor deMIN_REPLICA_COUNTdebe estar en el intervalo[1, 4096]. El valor predeterminado es1.MAX_REPLICA_COUNT: un valor deINT64que especifica el número máximo de réplicas de máquinas que se utilizan al desplegar el modelo en un endpoint de Vertex AI. El servicio aumenta o disminuye el número de réplicas según lo requiera la carga de inferencia en el endpoint. El número de réplicas utilizadas nunca es inferior al valor deMIN_REPLICA_COUNTni superior al valor deMAX_REPLICA_COUNT. El valor deMAX_REPLICA_COUNTdebe estar en el intervalo[1, 4096]. El valor predeterminado es el valorMIN_REPLICA_COUNT.RESERVATION_AFFINITY_TYPE: determina si el modelo implementado usa reservas de Compute Engine para proporcionar disponibilidad de máquinas virtuales (VM) garantizada al servir 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 las reservas de Compute Engine.Solo puedes usar las reservas de Compute Engine que se compartan con Vertex AI. Para obtener más información, consulta Permitir que se consuma una reserva.
Los valores admitidos son los siguientes:
NO_RESERVATION: no se consume ninguna reserva cuando tu modelo se despliega en un endpoint de Vertex AI. EspecificarNO_RESERVATIONtiene el mismo efecto que no especificar una afinidad de reserva.ANY_RESERVATION: el despliegue del modelo de Vertex AI consume máquinas virtuales (VMs) de las reservas de Compute Engine que están en el proyecto actual o que se comparten con el proyecto y que están configuradas para el consumo automático. Solo se utilizan las máquinas virtuales que cumplen 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 vas a crear 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
USmultirregión, la reserva debe estar en la regiónus-central1. Si el conjunto de datos está en laEUmultirregión, la reserva debe estar en la regióneurope-west4.
Si no hay suficiente capacidad en las reservas disponibles o no se encuentran reservas adecuadas, el sistema aprovisiona VMs de Compute Engine bajo demanda para satisfacer los requisitos de recursos.
- Usan el tipo de máquina especificado por el valor
SPECIFIC_RESERVATION: el despliegue del modelo de Vertex AI consume VMs solo de la reserva que especifiques en el valorRESERVATION_AFFINITY_VALUES. Esta reserva debe configurarse para un consumo específicamente segmentado. La implementación falla si la reserva especificada no tiene capacidad suficiente.
RESERVATION_AFFINITY_KEY: la cadena.compute.googleapis.com/reservation-name. Debe especificar esta opción cuando el valor deRESERVATION_AFFINITY_TYPEseaSPECIFIC_RESERVATION.RESERVATION_AFFINITY_VALUES: valorARRAY<STRING>que especifica el nombre completo del recurso de la reserva de Compute Engine, con el siguiente formato:
projects/myproject/zones/reservation_zone/reservations/reservation_namePor 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 Ver reservas.
Debe especificar esta opción cuando el valor de
RESERVATION_AFFINITY_TYPEseaSPECIFIC_RESERVATION.ENDPOINT_IDLE_TTL: un valor deINTERVALque especifica la duración de la inactividad tras la cual el modelo abierto se deja de desplegar automáticamente desde el endpoint de Vertex AI.Para habilitar la retirada automática, especifica un valor de literal de intervalo entre 390 minutos (6,5 horas) y 7 días. Por ejemplo, especifica
INTERVAL 8 HOURpara que el modelo se deje de implementar después de 8 horas de inactividad. El valor predeterminado es de 390 minutos (6,5 horas).La inactividad del modelo se define como el tiempo que ha transcurrido desde que se realizó alguna de las siguientes operaciones en el modelo:
- Ejecutando la
sentencia
CREATE MODEL. - Ejecutar la
instrucción
ALTER MODELcon el argumentoDEPLOY_MODELdefinido comoTRUE. - Envío de una solicitud de inferencia al endpoint del modelo. Por ejemplo, ejecutando la función
ML.GENERATE_EMBEDDINGoML.GENERATE_TEXT.
Cada una de estas operaciones reinicia el temporizador de inactividad a cero. El restablecimiento se activa al inicio de la tarea de BigQuery que realiza la operación.
Una vez que se haya anulado el despliegue del modelo, las solicitudes de inferencia que se envíen al modelo devolverán un error. El objeto de modelo de BigQuery no cambia, incluidos los metadatos del modelo. Para volver a usar el modelo en la inferencia, debes volver a desplegarlo ejecutando la instrucción
ALTER MODELen el modelo y configurando la opciónDEPLOY_MODELenTRUE.- Ejecutando la
sentencia
Modelos abiertos desplegados
En la Google Cloud consola, ve a la página BigQuery.
En el editor de SQL, crea un modelo remoto:
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' );
Haz los cambios siguientes:
PROJECT_ID: tu ID de proyecto.DATASET_ID: 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 estés usando.MODEL_NAME: el nombre del modelo.REGION: la región que usa la conexión.CONNECTION_ID: el ID de tu conexión de BigQuery.Para obtener este valor, consulta los detalles de la conexión en la consola Google Cloud y copia el valor de la última sección del ID de conexión completo que se muestra en ID de conexión. Por ejemplo,
projects/myproject/locations/connection_location/connections/myconnection.ENDPOINT_REGION: la región en la que se ha desplegado el modelo abierto.ENDPOINT_PROJECT_ID: el proyecto en el que se ha implementado el modelo abierto.ENDPOINT_ID: el ID del endpoint HTTPS que usa el modelo abierto. Para obtener el ID del endpoint, busca el modelo abierto en la página Predicción online y copia el valor del campo ID.
Todos los demás modelos
En la Google Cloud consola, ve a la página BigQuery.
En el editor de SQL, crea un modelo remoto:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS (ENDPOINT = 'ENDPOINT');
Haz los cambios siguientes:
PROJECT_ID: tu ID de proyecto.DATASET_ID: 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 estés usando.MODEL_NAME: el nombre del modelo.REGION: la región que usa la conexión.CONNECTION_ID: el ID de tu conexión de BigQuery.Para obtener este valor, consulta los detalles de la conexión en la consola Google Cloud y copia el valor de la última sección del ID de conexión completo que se muestra en ID de conexión. Por ejemplo,
projects/myproject/locations/connection_location/connections/myconnection.ENDPOINT: el endpoint del modelo de Vertex AI que se va a usar.En el caso de los modelos preentrenados de Vertex AI, los modelos Claude y los modelos de Mistral AI, especifica el nombre del modelo. En algunos de estos modelos, puedes especificar una versión concreta del modelo como parte del nombre. En los modelos de Gemini compatibles, puedes especificar el endpoint global para mejorar la disponibilidad.
En el caso de los modelos Llama, especifica un endpoint de la API de OpenAI con 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 los modelos admitidos, 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.
Generar texto a partir de datos de tablas estándar
Genera texto con la función ML.GENERATE_TEXT
con datos de peticiones de una tabla estándar:
Gemini
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences, GROUND_WITH_GOOGLE_SEARCH AS ground_with_google_search, SAFETY_SETTINGS AS safety_settings, REQUEST_TYPE AS request_type) );
Haz los cambios siguientes:
PROJECT_ID: tu ID de 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 la petición. Esta tabla debe tener una columna llamadaprompt. También puedes usar un alias para usar una columna con otro nombre.PROMPT_QUERY: una consulta que proporciona los datos de la petición. Esta consulta debe generar una columna llamadaprompt.TOKENS: un valorINT64que define el número máximo de tokens que se pueden generar en la respuesta. Este valor debe estar en el intervalo[1,8192]. Especifica un valor inferior para las respuestas más cortas y un valor superior para las respuestas más largas. El valor predeterminado es128.TEMPERATURE: un valorFLOAT64en el intervalo[0.0,1.0]que controla el grado de aleatoriedad en la selección de tokens. El valor predeterminado es0.Los valores bajos de
temperatureson adecuados para las peticiones que requieren una respuesta más determinista y menos abierta o creativa, mientras que los valores altos detemperaturepueden dar lugar a resultados más diversos o creativos. El valor de0paratemperaturees determinista, lo que significa que siempre se selecciona la respuesta con la probabilidad más alta.TOP_P: un valorFLOAT64en el intervalo[0.0,1.0]ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias. El valor predeterminado es0.95.FLATTEN_JSON: un valorBOOLque determina si se deben devolver el texto generado y los atributos de seguridad en columnas independientes. El valor predeterminado esFALSE.STOP_SEQUENCES: un valorARRAY<STRING>que elimina las cadenas especificadas si se incluyen en las respuestas del modelo. Las cadenas deben coincidir exactamente, incluidas las mayúsculas y las minúsculas. El valor predeterminado es un array vacío.GROUND_WITH_GOOGLE_SEARCH: un valorBOOLque determina si el modelo de Vertex AI usa [Fundamentación con la Búsqueda de Google](/vertex-ai/generative-ai/docs/grounding/overview#ground-public) al generar respuestas. La fundamentación permite que el modelo use información adicional de Internet al generar una respuesta para que las respuestas del modelo sean más específicas y factuales. Si tantoflatten_json_outputcomo este campo tienen el valorTrue, se incluye una columnaml_generate_text_grounding_resultadicional en los resultados, que proporciona las fuentes que ha usado el modelo para obtener información adicional. El valor predeterminado esFALSE.SAFETY_SETTINGS: valorARRAY<STRUCT<STRING AS category, STRING AS threshold>>que configura los umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento de la estructura especifica una categoría de contenido dañino y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que infringe estos ajustes. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificarSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)ySTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold). Si no hay ningún ajuste de seguridad para una categoría determinada, se utiliza el ajuste de seguridadBLOCK_MEDIUM_AND_ABOVE. Las categorías admitidas son las siguientes:HARM_CATEGORY_HATE_SPEECHHARM_CATEGORY_DANGEROUS_CONTENTHARM_CATEGORY_HARASSMENTHARM_CATEGORY_SEXUALLY_EXPLICIT
BLOCK_NONE(Restringido)BLOCK_LOW_AND_ABOVEBLOCK_MEDIUM_AND_ABOVE(predeterminado)BLOCK_ONLY_HIGHHARM_BLOCK_THRESHOLD_UNSPECIFIED
REQUEST_TYPE: un valorSTRINGque especifica el tipo de solicitud de inferencia que se enviará al modelo de Gemini. El tipo de solicitud determina qué cuota usa la solicitud. Estos son los valores válidos:DEDICATED: la funciónML.GENERATE_TEXTsolo usa la cuota de rendimiento aprovisionado. La funciónML.GENERATE_TEXTdevuelve el errorProvisioned throughput is not purchased or is not activesi no hay cuota de capacidad de procesamiento aprovisionada disponible.SHARED: La funciónML.GENERATE_TEXTsolo usa la cuota compartida dinámica (DSQ), aunque hayas comprado cuota de rendimiento aprovisionado.UNSPECIFIED: La funciónML.GENERATE_TEXTusa la cuota de la siguiente manera:- Si no has comprado cuota de rendimiento aprovisionado, la función
ML.GENERATE_TEXTusa la cuota de DSQ. - Si has comprado cuota de capacidad de procesamiento aprovisionada, la función
ML.GENERATE_TEXTusará primero esa cuota. Si las solicitudes superan la cuota de capacidad de procesamiento aprovisionada, el tráfico de desbordamiento utiliza la cuota de DSQ.
- Si no has comprado cuota de rendimiento aprovisionado, la función
El valor predeterminado es
UNSPECIFIED.Para obtener más información, consulta Usar el rendimiento aprovisionado de Vertex AI.
Ejemplo 1
En el ejemplo siguiente se muestra una solicitud con estas características:
- Pide un resumen del texto de la columna
bodyde la tablaarticles. - Analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
Ejemplo 2
En el ejemplo siguiente se muestra una solicitud con estas características:
- Usa una consulta para crear los datos de la petición concatenando cadenas que proporcionan prefijos de la petición con columnas de la tabla.
- Devuelve una respuesta breve.
- No analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
Ejemplo 3
En el ejemplo siguiente se muestra una solicitud con estas características:
- Usa la columna
promptde la tablapromptspara la petición. - Analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
Ejemplo 4
En el ejemplo siguiente se muestra una solicitud con estas características:
- Usa la columna
promptde la tablapromptspara la petición. - Devuelve una respuesta breve.
- Combina la respuesta JSON en columnas independientes.
- Obtiene y devuelve datos web públicos para fundamentar las respuestas.
- Filtra las respuestas no seguras mediante dos ajustes de seguridad.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT( 100 AS max_output_tokens, 0.5 AS top_p, TRUE AS flatten_json_output, 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 ejemplo siguiente se muestra una solicitud con estas características:
- Usa la columna
promptde la tablapromptspara la petición. - Devuelve una respuesta más larga.
- Combina la respuesta JSON en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.flash_2_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 8192 AS max_output_tokens, TRUE AS flatten_json_output));
Ejemplo 6
En el ejemplo siguiente se muestra una solicitud con estas características:
- Pide un resumen del texto de la columna
bodyde la tablaarticles. - Combina la respuesta JSON en columnas independientes.
- Obtiene y devuelve datos web públicos para fundamentar las respuestas.
- Filtra las respuestas no seguras mediante dos ajustes de seguridad.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .1 AS TEMPERATURE, TRUE AS flatten_json_output, 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 ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output) );
Haz los cambios siguientes:
PROJECT_ID: tu ID de 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 la petición. Esta tabla debe tener una columna llamadaprompt. También puedes usar un alias para usar una columna con otro nombre.PROMPT_QUERY: una consulta que proporciona los datos de la petición. Esta consulta debe generar una columna llamadaprompt.TOKENS: un valorINT64que define el número máximo de tokens que se pueden generar en la respuesta. Este valor debe estar en el intervalo[1,4096]. Especifica un valor inferior para las respuestas más cortas y un valor superior para las respuestas más largas. El valor predeterminado es128.TOP_K: un valorINT64del intervalo[1,40]que determina el conjunto inicial de tokens que el modelo tiene en cuenta para la selección. Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias. Si no especifica ningún valor, el modelo determinará un valor adecuado.TOP_P: un valorFLOAT64en el intervalo[0.0,1.0]ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias. Si no especifica ningún valor, el modelo determinará un valor adecuado.FLATTEN_JSON: un valorBOOLque determina si se deben devolver el texto generado y los atributos de seguridad en columnas independientes. El valor predeterminado esFALSE.
Ejemplo 1
En el ejemplo siguiente se muestra una solicitud con estas características:
- Pide un resumen del texto de la columna
bodyde la tablaarticles. - Analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
Ejemplo 2
En el ejemplo siguiente se muestra una solicitud con estas características:
- Usa una consulta para crear los datos de la petición concatenando cadenas que proporcionan prefijos de la petición con columnas de la tabla.
- Devuelve una respuesta breve.
- No analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
Ejemplo 3
En el ejemplo siguiente se muestra una solicitud con estas características:
- Usa la columna
promptde la tablapromptspara la petición. - Analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
Llama
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences) );
Haz los cambios siguientes:
PROJECT_ID: tu ID de 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 la petición. Esta tabla debe tener una columna llamadaprompt. También puedes usar un alias para usar una columna con otro nombre.PROMPT_QUERY: una consulta que proporciona los datos de la petición. Esta consulta debe generar una columna llamadaprompt.TOKENS: un valorINT64que define el número máximo de tokens que se pueden generar en la respuesta. Este valor debe estar en el intervalo[1,4096]. Especifica un valor inferior para las respuestas más cortas y un valor superior para las respuestas más largas. El valor predeterminado es128.TEMPERATURE: un valorFLOAT64en el intervalo[0.0,1.0]que controla el grado de aleatoriedad en la selección de tokens. El valor predeterminado es0.Los valores bajos de
temperatureson adecuados para las peticiones que requieren una respuesta más determinista y menos abierta o creativa, mientras que los valores altos detemperaturepueden dar lugar a resultados más diversos o creativos. El valor de0paratemperaturees determinista, lo que significa que siempre se selecciona la respuesta con la probabilidad más alta.TOP_P: un valorFLOAT64en el intervalo[0.0,1.0]ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias. El valor predeterminado es0.95.FLATTEN_JSON: un valorBOOLque determina si se deben devolver el texto generado y los atributos de seguridad en columnas independientes. El valor predeterminado esFALSE.STOP_SEQUENCES: un valorARRAY<STRING>que elimina las cadenas especificadas si se incluyen en las respuestas del modelo. Las cadenas deben coincidir exactamente, incluidas las mayúsculas y las minúsculas. El valor predeterminado es un array vacío.
Ejemplo 1
En el ejemplo siguiente se muestra una solicitud con estas características:
- Pide un resumen del texto de la columna
bodyde la tablaarticles. - Analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
Ejemplo 2
En el ejemplo siguiente se muestra una solicitud con estas características:
- Usa una consulta para crear los datos de la petición concatenando cadenas que proporcionan prefijos de la petición con columnas de la tabla.
- Devuelve una respuesta breve.
- No analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
Ejemplo 3
En el ejemplo siguiente se muestra una solicitud con estas características:
- Usa la columna
promptde la tablapromptspara la petición. - Analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
Mistral AI
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences) );
Haz los cambios siguientes:
PROJECT_ID: tu ID de 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 la petición. Esta tabla debe tener una columna llamadaprompt. También puedes usar un alias para usar una columna con otro nombre.PROMPT_QUERY: una consulta que proporciona los datos de la petición. Esta consulta debe generar una columna llamadaprompt.TOKENS: un valorINT64que define el número máximo de tokens que se pueden generar en la respuesta. Este valor debe estar en el intervalo[1,4096]. Especifica un valor inferior para las respuestas más cortas y un valor superior para las respuestas más largas. El valor predeterminado es128.TEMPERATURE: un valorFLOAT64en el intervalo[0.0,1.0]que controla el grado de aleatoriedad en la selección de tokens. El valor predeterminado es0.Los valores bajos de
temperatureson adecuados para las peticiones que requieren una respuesta más determinista y menos abierta o creativa, mientras que los valores altos detemperaturepueden dar lugar a resultados más diversos o creativos. El valor de0paratemperaturees determinista, lo que significa que siempre se selecciona la respuesta con la probabilidad más alta.TOP_P: un valorFLOAT64en el intervalo[0.0,1.0]ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias. El valor predeterminado es0.95.FLATTEN_JSON: un valorBOOLque determina si se deben devolver el texto generado y los atributos de seguridad en columnas independientes. El valor predeterminado esFALSE.STOP_SEQUENCES: un valorARRAY<STRING>que elimina las cadenas especificadas si se incluyen en las respuestas del modelo. Las cadenas deben coincidir exactamente, incluidas las mayúsculas y las minúsculas. El valor predeterminado es un array vacío.
Ejemplo 1
En el ejemplo siguiente se muestra una solicitud con estas características:
- Pide un resumen del texto de la columna
bodyde la tablaarticles. - Analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
Ejemplo 2
En el ejemplo siguiente se muestra una solicitud con estas características:
- Usa una consulta para crear los datos de la petición concatenando cadenas que proporcionan prefijos de la petición con columnas de la tabla.
- Devuelve una respuesta breve.
- No analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
Ejemplo 3
En el ejemplo siguiente se muestra una solicitud con estas características:
- Usa la columna
promptde la tablapromptspara la petición. - Analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
Modelos abiertos
.
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output) );
Haz los cambios siguientes:
PROJECT_ID: tu ID de 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 la petición. Esta tabla debe tener una columna llamadaprompt. También puedes usar un alias para usar una columna con otro nombre.PROMPT_QUERY: una consulta que proporciona los datos de la petición. Esta consulta debe generar una columna llamadaprompt.TOKENS: un valorINT64que define el número máximo de tokens que se pueden generar en la respuesta. Este valor debe estar en el intervalo[1,4096]. Especifica un valor inferior para las respuestas más cortas y un valor superior para las respuestas más largas. Si no especifica ningún valor, el modelo determinará un valor adecuado.TEMPERATURE: un valorFLOAT64en el intervalo[0.0,1.0]que controla el grado de aleatoriedad en la selección de tokens. Si no especifica ningún valor, el modelo determinará un valor adecuado.Los valores bajos de
temperatureson adecuados para las peticiones que requieren una respuesta más determinista y menos abierta o creativa, mientras que los valores altos detemperaturepueden dar lugar a resultados más diversos o creativos. El valor de0paratemperaturees determinista, lo que significa que siempre se selecciona la respuesta con la probabilidad más alta.TOP_K: un valorINT64del intervalo[1,40]que determina el conjunto inicial de tokens que el modelo tiene en cuenta para la selección. Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias. Si no especifica ningún valor, el modelo determinará un valor adecuado.TOP_P: un valorFLOAT64en el intervalo[0.0,1.0]ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias. Si no especifica ningún valor, el modelo determinará un valor adecuado.FLATTEN_JSON: un valorBOOLque determina si se deben devolver el texto generado y los atributos de seguridad en columnas independientes. El valor predeterminado esFALSE.
Ejemplo 1
En el ejemplo siguiente se muestra una solicitud con estas características:
- Pide un resumen del texto de la columna
bodyde la tablaarticles. - Analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
Ejemplo 2
En el ejemplo siguiente se muestra una solicitud con estas características:
- Usa una consulta para crear los datos de la petición concatenando cadenas que proporcionan prefijos de la petición con columnas de la tabla.
- Devuelve una respuesta breve.
- No analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
Ejemplo 3
En el ejemplo siguiente se muestra una solicitud con estas características:
- Usa la columna
promptde la tablapromptspara la petición. - Analiza la respuesta JSON del modelo en columnas independientes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
Generar texto a partir de datos de una tabla de objetos
Genera texto usando la función ML.GENERATE_TEXT con un modelo de Gemini para analizar datos sin estructurar de una tabla de objetos. Los datos de la petición se proporcionan en el parámetro prompt.
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, STRUCT(PROMPT AS prompt, TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences, SAFETY_SETTINGS AS safety_settings) );
Haz los cambios siguientes:
PROJECT_ID: tu ID de proyecto.DATASET_ID: el ID del conjunto de datos que contiene el modelo.MODEL_NAME: el nombre del modelo. Debe ser un modelo de Gemini.TABLE_NAME: nombre de la tabla de objetos que contiene el contenido que se va a analizar. Para obtener más información sobre los tipos de contenido que puedes analizar, consulta Entrada.El segmento de Cloud Storage que usa la tabla de objetos debe estar en el mismo proyecto en el que has creado el modelo y en el que llamas a la función
ML.GENERATE_TEXT. Si quieres llamar a la funciónML.GENERATE_TEXTen un proyecto distinto del que contiene el segmento de Cloud Storage que usa la tabla de objetos, debes asignar el rol Administrador de almacenamiento a nivel de segmento a la cuenta de servicioservice-A@gcp-sa-aiplatform.iam.gserviceaccount.com.PROMPT: la petición que se va a usar para analizar el contenido.TOKENS: un valorINT64que define el número máximo de tokens que se pueden generar en la respuesta. Este valor debe estar en el intervalo[1,4096]. Especifica un valor inferior para las respuestas más cortas y un valor superior para las respuestas más largas. Si no especifica ningún valor, el modelo determinará un valor adecuado.TEMPERATURE: un valorFLOAT64en el intervalo[0.0,1.0]que controla el grado de aleatoriedad en la selección de tokens. Si no especifica ningún valor, el modelo determinará un valor adecuado.Los valores bajos de
temperatureson adecuados para las peticiones que requieren una respuesta más determinista y menos abierta o creativa, mientras que los valores altos detemperaturepueden dar lugar a resultados más diversos o creativos. El valor de0paratemperaturees determinista, lo que significa que siempre se selecciona la respuesta con la probabilidad más alta.TOP_K: un valorINT64del intervalo[1,40]que determina el conjunto inicial de tokens que el modelo tiene en cuenta para la selección. Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias. Si no especifica ningún valor, el modelo determinará un valor adecuado.TOP_P: un valorFLOAT64en el intervalo[0.0,1.0]ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias. Si no especifica ningún valor, el modelo determinará un valor adecuado.FLATTEN_JSON: un valorBOOLque determina si se deben devolver el texto generado y los atributos de seguridad en columnas independientes. El valor predeterminado esFALSE.
Ejemplos
En este ejemplo, se traduce y transcribe contenido de audio de una tabla de objetos llamada feedback:
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.audio_model`, TABLE `mydataset.feedback`, STRUCT('What is the content of this audio clip, translated into Spanish?' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));
En este ejemplo se clasifica el contenido PDF de una tabla de objetos llamada invoices:
SELECT * FROM ML.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, TRUE AS FLATTEN_JSON_OUTPUT));