Genera texto con la función ML.GENERATE_TEXT
En este documento, se muestra cómo crear un modelo remoto de BigQuery ML que hace referencia al modelo de base de Vertex AI.
Luego, puedes usar ese modelo junto con la función ML.GENERATE_TEXT
para analizar texto o contenido visual en una tabla de BigQuery.
Permisos necesarios
Para crear una conexión, necesitas membresía en el siguiente rol de Identity and Access Management (IAM):
roles/bigquery.connectionAdmin
Para otorgar permisos a la cuenta de servicio de la conexión, necesitas el siguiente permiso:
resourcemanager.projects.setIamPolicy
Para crear el modelo con BigQuery ML, necesitas los siguientes permisos de IAM:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Para ejecutar inferencias, necesitas los siguientes permisos:
bigquery.tables.getData
en la tablabigquery.models.getData
en el modelobigquery.jobs.create
Antes de comenzar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de BigQuery, BigQuery Connection, and Vertex AI.
Si deseas usar ML.GENERATE_TEXT
con un modelo gemini-pro-vision
para analizar contenido visual en una tabla de objetos, debes tener una reserva de Enterprise o Enterprise Plus.
Para obtener más información, consulta Crea reservas.
Crear una conexión
Crea una conexión de recurso de Cloud y obtén la cuenta de servicio de la conexión.
Selecciona una de las opciones siguientes:
Console
Ve a la página de BigQuery.
Para crear una conexión, haz clic en
Agregar y, luego, en Conexiones a fuentes de datos externas.En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas y BigLake (Cloud Resource).
En el campo ID de conexión, escribe un nombre para tu 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_id
anula el proyecto predeterminado.Reemplaza lo siguiente:
REGION
: tu región de conexiónPROJECT_ID
: El ID del 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...
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 al siguiente:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Agrega la siguiente sección a tu archivo main.tf
.
## This creates a cloud resource connection. ## Note: The cloud resource nested object has only one output only field - serviceAccountId. resource "google_bigquery_connection" "connection" { connection_id = "CONNECTION_ID" project = "PROJECT_ID" location = "REGION" cloud_resource {} }
CONNECTION_ID
: Es un ID para tu conexión.PROJECT_ID
: El ID del proyecto de Google Cloud.REGION
: tu región de conexión
Otorga acceso a la cuenta de servicio
Otorga permiso a tu cuenta de servicio para usar la conexión. Si no se otorga permiso, se produce un error. Selecciona una de las opciones siguientes:
Console
Ir a la página IAM y administración
Haga clic en
Agregar.Se abre el cuadro de diálogo Agregar principales.
En el campo Principales nuevas (New principals), ingresa el ID de la cuenta de servicio que copiaste antes.
En el campo Selecciona un rol, selecciona Vertex AI y, luego, 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
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número de tu proyecto.MEMBER
: el ID de la cuenta de servicio que copiaste antes
Crear un modelo
En la consola de Google Cloud, ve a la página de BigQuery.
Crea un modelo remoto con el editor de SQL:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS (ENDPOINT = 'ENDPOINT');
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_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 usasMODEL_NAME
: Es el nombre del modelo.REGION
: la región que usa la conexión.CONNECTION_ID
por el ID de la conexión de BigQueryCuando ves los detalles de conexión en la consola de Google Cloud, este es el valor en la última sección del ID de conexión completamente calificado que se muestra en Conexión ID, por ejemplo,
projects/myproject/locations/connection_location/connections/myconnection
.ENDPOINT
: Es el nombre del modelo de Vertex AI compatible que se usará. Por ejemplo,ENDPOINT='gemini-pro'
.Para algunos tipos de modelos, puedes especificar una versión particular del modelo si agregas
@version
al nombre del modelo. Por ejemplo,text-bison@001
. A fin de obtener información sobre las versiones de modelo compatibles para diferentes tipos de modelos, consultaENDPOINT
.
Genera texto a partir de datos de texto mediante una instrucción desde una tabla
Genera texto con la función ML.GENERATE_TEXT
con un modelo remoto basado en un modelo de texto de la API de Vertex AI Gemini o la API de PaLM de Vertex AI y una instrucción de una columna de la tabla:
gemini-pro
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, 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, STOP_SEQUENCES AS stop_sequences) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: el nombre del modeloTABLE_NAME
: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamadaprompt
, o puedes usar un alias para usar una columna con nombre diferente.TOKENS
: un valorINT64
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 es128
.TEMPERATURE
: un valorFLOAT64
en el rango[0.0,1.0]
que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es0
.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 paratemperature
pueden generar resultados más diversos o creativos. Un valor de0
paratemperature
es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.TOP_K
: un valorINT64
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. El valor predeterminado es40
.TOP_P
: un valorFLOAT64
en el rango[0.0,1.0]
ayuda a determinar qué tokens del grupo determinado porTOP_K
están 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 es0.95
.FLATTEN_JSON
: un valorBOOL
que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado esFALSE
.STOP_SEQUENCES
: un valorARRAY<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.
Ejemplo
En el siguiente ejemplo, se muestra una solicitud con estas características:
- Usa la columna
prompt
de la tablaprompts
para el mensaje. - Muestra una respuesta corta y moderadamente probable.
- Muestra el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, 40 AS top_k, TRUE AS flatten_json_output));
text-bison
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, 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, STOP_SEQUENCES AS stop_sequences) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: el nombre del modeloTABLE_NAME
: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamadaprompt
, o puedes usar un alias para usar una columna con nombre diferente.TOKENS
: un valorINT64
que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango[1,1024]
. 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 es128
.TEMPERATURE
: un valorFLOAT64
en el rango[0.0,1.0]
que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es0
.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 paratemperature
pueden generar resultados más diversos o creativos. Un valor de0
paratemperature
es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.TOP_K
: un valorINT64
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. El valor predeterminado es40
.TOP_P
: un valorFLOAT64
en el rango[0.0,1.0]
ayuda a determinar qué tokens del grupo determinado porTOP_K
están 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 es0.95
.FLATTEN_JSON
: un valorBOOL
que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado esFALSE
.STOP_SEQUENCES
: un valorARRAY<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.
Ejemplo
En el siguiente ejemplo, se muestra una solicitud con estas características:
- Usa la columna
prompt
de la tablaprompts
para el mensaje. - Muestra una respuesta corta y moderadamente probable.
- Muestra el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, 40 AS top_k, TRUE AS flatten_json_output));
text-bison32
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, 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, STOP_SEQUENCES AS stop_sequences) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: el nombre del modeloTABLE_NAME
: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamadaprompt
, o puedes usar un alias para usar una columna con nombre diferente.TOKENS
: un valorINT64
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 es128
.TEMPERATURE
: un valorFLOAT64
en el rango[0.0,1.0]
que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es0
.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 paratemperature
pueden generar resultados más diversos o creativos. Un valor de0
paratemperature
es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.TOP_K
: un valorINT64
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. El valor predeterminado es40
.TOP_P
: un valorFLOAT64
en el rango[0.0,1.0]
ayuda a determinar qué tokens del grupo determinado porTOP_K
están 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 es0.95
.FLATTEN_JSON
: un valorBOOL
que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado esFALSE
.STOP_SEQUENCES
: un valorARRAY<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.
Ejemplo
En el siguiente ejemplo, se muestra una solicitud con estas características:
- Usa la columna
prompt
de la tablaprompts
para el mensaje. - Muestra una respuesta corta y moderadamente probable.
- Muestra el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, 40 AS top_k, TRUE AS flatten_json_output));
text-unicorn
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, 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, STOP_SEQUENCES AS stop_sequences) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: el nombre del modeloTABLE_NAME
: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamadaprompt
, o puedes usar un alias para usar una columna con nombre diferente.TOKENS
: un valorINT64
que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango[1,1024]
. 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 es128
.TEMPERATURE
: un valorFLOAT64
en el rango[0.0,1.0]
que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es0
.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 paratemperature
pueden generar resultados más diversos o creativos. Un valor de0
paratemperature
es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.TOP_K
: un valorINT64
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. El valor predeterminado es40
.TOP_P
: un valorFLOAT64
en el rango[0.0,1.0]
ayuda a determinar qué tokens del grupo determinado porTOP_K
están 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 es0.95
.FLATTEN_JSON
: un valorBOOL
que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado esFALSE
.STOP_SEQUENCES
: un valorARRAY<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.
Ejemplo
En el siguiente ejemplo, se muestra una solicitud con estas características:
- Usa la columna
prompt
de la tablaprompts
para el mensaje. - Muestra una respuesta corta y moderadamente probable.
- Muestra el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, 40 AS top_k, TRUE AS flatten_json_output));
Genera texto a partir de datos de texto mediante una instrucción desde una consulta
Genera texto con la función ML.GENERATE_TEXT
con un modelo remoto basado en un modelo de texto compatible de la API de Gemini o de la API de PaLM y una consulta que proporcione la instrucción:
gemini-pro
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_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, STOP_SEQUENCES AS stop_sequences) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: el nombre del modeloPROMPT_QUERY
: una consulta que proporciona los datos del mensaje.TOKENS
: un valorINT64
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 es128
.TEMPERATURE
: un valorFLOAT64
en el rango[0.0,1.0]
que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es0
.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 paratemperature
pueden generar resultados más diversos o creativos. Un valor de0
paratemperature
es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.TOP_K
: un valorINT64
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. El valor predeterminado es40
.TOP_P
: un valorFLOAT64
en el rango[0.0,1.0]
ayuda a determinar qué tokens del grupo determinado porTOP_K
están 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 es0.95
.FLATTEN_JSON
: un valorBOOL
que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado esFALSE
.STOP_SEQUENCES
: un valorARRAY<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.
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 tablaarticles
. - Muestra una respuesta moderadamente larga y más probable.
- Muestra el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 0.2 AS temperature, 650 AS max_output_tokens, 0.2 AS top_p, 15 AS top_k, TRUE AS flatten_json_output));
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 corta y moderadamente probable.
- No muestra el texto generado y los atributos de seguridad en columnas separadas.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, 30 AS top_k, FALSE AS flatten_json_output));
text-bison
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_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, STOP_SEQUENCES AS stop_sequences) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: el nombre del modeloPROMPT_QUERY
: una consulta que proporciona los datos del mensaje.TOKENS
: un valorINT64
que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango[1,1024]
. 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 es128
.TEMPERATURE
: un valorFLOAT64
en el rango[0.0,1.0]
que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es0
.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 paratemperature
pueden generar resultados más diversos o creativos. Un valor de0
paratemperature
es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.TOP_K
: un valorINT64
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. El valor predeterminado es40
.TOP_P
: un valorFLOAT64
en el rango[0.0,1.0]
ayuda a determinar qué tokens del grupo determinado porTOP_K
están 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 es0.95
.FLATTEN_JSON
: un valorBOOL
que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado esFALSE
.STOP_SEQUENCES
: un valorARRAY<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.
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 tablaarticles
. - Muestra una respuesta moderadamente larga y más probable.
- Muestra el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 0.2 AS temperature, 650 AS max_output_tokens, 0.2 AS top_p, 15 AS top_k, TRUE AS flatten_json_output));
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 corta y moderadamente probable.
- No muestra el texto generado y los atributos de seguridad en columnas separadas.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, 30 AS top_k, FALSE AS flatten_json_output));
text-bison32
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_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, STOP_SEQUENCES AS stop_sequences) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: el nombre del modeloPROMPT_QUERY
: una consulta que proporciona los datos del mensaje.TOKENS
: un valorINT64
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 es128
.TEMPERATURE
: un valorFLOAT64
en el rango[0.0,1.0]
que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es0
.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 paratemperature
pueden generar resultados más diversos o creativos. Un valor de0
paratemperature
es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.TOP_K
: un valorINT64
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. El valor predeterminado es40
.TOP_P
: un valorFLOAT64
en el rango[0.0,1.0]
ayuda a determinar qué tokens del grupo determinado porTOP_K
están 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 es0.95
.FLATTEN_JSON
: un valorBOOL
que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado esFALSE
.STOP_SEQUENCES
: un valorARRAY<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.
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 tablaarticles
. - Muestra una respuesta moderadamente larga y más probable.
- Muestra el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 0.2 AS temperature, 650 AS max_output_tokens, 0.2 AS top_p, 15 AS top_k, TRUE AS flatten_json_output));
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 corta y moderadamente probable.
- No muestra el texto generado y los atributos de seguridad en columnas separadas.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, 30 AS top_k, FALSE AS flatten_json_output));
text-unicorn
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_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, STOP_SEQUENCES AS stop_sequences) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: el nombre del modeloPROMPT_QUERY
: una consulta que proporciona los datos del mensaje.TOKENS
: un valorINT64
que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango[1,1024]
. 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 es128
.TEMPERATURE
: un valorFLOAT64
en el rango[0.0,1.0]
que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es0
.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 paratemperature
pueden generar resultados más diversos o creativos. Un valor de0
paratemperature
es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.TOP_K
: un valorINT64
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. El valor predeterminado es40
.TOP_P
: un valorFLOAT64
en el rango[0.0,1.0]
ayuda a determinar qué tokens del grupo determinado porTOP_K
están 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 es0.95
.FLATTEN_JSON
: un valorBOOL
que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado esFALSE
.STOP_SEQUENCES
: un valorARRAY<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.
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 tablaarticles
. - Muestra una respuesta moderadamente larga y más probable.
- Muestra el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 0.2 AS temperature, 650 AS max_output_tokens, 0.2 AS top_p, 15 AS top_k, TRUE AS flatten_json_output));
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 corta y moderadamente probable.
- No muestra el texto generado y los atributos de seguridad en columnas separadas.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, 30 AS top_k, FALSE AS flatten_json_output));
Genera texto que describa el contenido visual
Genera texto con la funciónML.GENERATE_TEXT
con un modelo remoto basado en un modelo multimodal gemini-pro-vision
:
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_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: el nombre del modeloTABLE_NAME
: el nombre de la tabla de objetos que incluye el contenido visual que se analizará. Para obtener más información sobre qué tipos de contenido visual puedes analizar, consulta Contenido visual admitido.El bucket de Cloud Storage que usa la tabla de objetos debe estar en el mismo proyecto en el que creaste el modelo y en el que llamas a la función
ML.GENERATE_TEXT
.PROMPT
: la instrucción que se usará para analizar el contenido visual.TOKENS
: un valorINT64
que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango[1,2048]
. 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 es2048
.TEMPERATURE
: un valorFLOAT64
en el rango[0.0,1.0]
que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es0.4
.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 paratemperature
pueden generar resultados más diversos o creativos. Un valor de0
paratemperature
es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.TOP_K
: un valorINT64
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. El valor predeterminado es32
.TOP_P
: un valorFLOAT64
en el rango[0.0,1.0]
ayuda a determinar qué tokens del grupo determinado porTOP_K
están 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 es0.95
.FLATTEN_JSON
: un valorBOOL
que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado esFALSE
.STOP_SEQUENCES
: Es un valorARRAY<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.
Ejemplo
En este ejemplo, se analiza el contenido visual de una tabla de objetos llamada videos
y se describe el contenido de cada video:
SELECT uri, ml_generate_text_llm_result FROM ML.GENERATE_TEXT( MODEL `mydataset.gemini_pro_vision_model` TABLE `mydataset.videos` STRUCT('What is happening in this video?' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));