Genera texto con la función ML.GENERATE_TEXT
En este documento, se muestra cómo crear un
modelo remoto de BigQuery ML
que representa un modelo de Vertex AI alojado. El modelo
de Vertex AI alojado puede ser un
modelo multimodal o de texto integrado de Vertex AI
o un
modelo de Claude de Anthropic.
Según el modelo de Vertex AI que elijas, puedes
usar la
función ML.GENERATE_TEXT
para analizar datos no estructurados en
tablas de objetos o texto en
tablas estándar.
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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
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.
Haz clic en Crear conexión (Create connection).
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 a este:
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 a la cuenta de servicio de la conexión el rol de usuario de Vertex AI.
Si planeas especificar el extremo como una URL cuando crees el modelo remoto, por ejemplo, endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/text-embedding-004'
, otorga este rol en el mismo proyecto que especifiques en la URL.
Si planeas especificar el extremo con el nombre del modelo cuando crees el modelo remoto, por ejemplo, endpoint = 'text-embedding-004'
, 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-xxxx@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource
.
Para otorgar el rol, sigue estos pasos:
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
Habilita el modelo de Vertex AI
Este paso solo es necesario si usas un modelo de Claude.
En la consola de Google Cloud, ve a la página Model Garden de Vertex AI.
Busca o explora el modelo de Claude que deseas usar.
Haz clic en la tarjeta de modelo.
En la página del modelo, haz clic en Habilitar.
Completa la información de habilitación solicitada y haz clic en Siguiente.
En la sección Términos y Condiciones, selecciona la casilla de verificación.
Haz clic en Aceptar para aceptar los Términos y Condiciones y habilitar el modelo.
Crea un modelo remoto de BigQuery ML
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
: el ID de tu 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á.Para algunos tipos de modelos, puedes especificar una versión particular del modelo. Para obtener información acerca de las versiones de modelo compatibles para diferentes tipos de modelos, consulta
ENDPOINT
.
Genera texto a partir de datos de texto mediante una instrucción desde una tabla
Para generar texto, usa con la
función ML.GENERATE_TEXT
con un modelo remoto y usa los datos de la instrucción de una columna de tabla:
gemini-1.5-flash
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_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) );
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,2.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_P
: Un valorFLOAT64
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 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.GROUND_WITH_GOOGLE_SEARCH
: Un valorBOOL
que determina si el modelo de Vertex AI usa Fundamentación con la Búsqueda de Google 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. Cuandoflatten_json_output
y este campo se configuran enTrue
, se incluye una columnaml_generate_text_grounding_result
adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado esFALSE
.SAFETY_SETTINGS
: Un valorARRAY<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 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)
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 seguridadBLOCK_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.
Ejemplo
En el siguiente ejemplo, se muestra una solicitud con estas características:
- Usa la columna
prompt
de la tablaprompts
para el mensaje. - Muestra el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
gemini-1.5-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_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) );
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,2.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_P
: Un valorFLOAT64
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 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.GROUND_WITH_GOOGLE_SEARCH
: Un valorBOOL
que determina si el modelo de Vertex AI usa Fundamentación con la Búsqueda de Google 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. Cuandoflatten_json_output
y este campo se configuran enTrue
, se incluye una columnaml_generate_text_grounding_result
adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado esFALSE
.SAFETY_SETTINGS
: Un valorARRAY<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 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)
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 seguridadBLOCK_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.
Ejemplo
En el siguiente ejemplo, se muestra una solicitud con estas características:
- Usa la columna
prompt
de la tablaprompts
para el mensaje. - Muestra el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
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, GROUND_WITH_GOOGLE_SEARCH AS ground_with_google_search, SAFETY_SETTINGS AS safety_settings) );
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 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 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.GROUND_WITH_GOOGLE_SEARCH
: Un valorBOOL
que determina si el modelo de Vertex AI usa Fundamentación con la Búsqueda de Google 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. Cuandoflatten_json_output
y este campo se configuran enTrue
, se incluye una columnaml_generate_text_grounding_result
adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado esFALSE
.SAFETY_SETTINGS
: Un valorARRAY<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 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)
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 seguridadBLOCK_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.
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.
- Compacta la respuesta JSON en columnas separadas.
- 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 ML.GENERATE_TEXT( MODEL `mydataset.text_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, 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, STRUCT(TOKENS AS max_output_tokens, TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output) );
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,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 es128
.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. Si no especificas un valor, el modelo determina uno apropiado.TOP_P
: Un valorFLOAT64
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.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
.
Ejemplo
En el siguiente ejemplo, se muestra una solicitud con estas características:
- Usa la columna
prompt
de la tablaprompts
para el mensaje. - Muestra el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(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 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 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 el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(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 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 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 el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(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 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 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 el texto generado y los atributos de seguridad en columnas diferentes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
Genera texto a partir de datos de texto mediante una instrucción desde una consulta
Para generar texto, usa la
función ML.GENERATE_TEXT
con un modelo remoto y una consulta que proporcione los datos de la instrucción:
gemini-1.5-flash
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_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) );
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,2.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_P
: Un valorFLOAT64
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 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.GROUND_WITH_GOOGLE_SEARCH
: Un valorBOOL
que determina si el modelo de Vertex AI usa Fundamentación con la Búsqueda de Google 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. Cuandoflatten_json_output
y este campo se configuran enTrue
, se incluye una columnaml_generate_text_grounding_result
adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado esFALSE
.SAFETY_SETTINGS
: Un valorARRAY<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 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)
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 seguridadBLOCK_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.
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 el texto generado y los atributos de seguridad en columnas diferentes.
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 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.
- No muestra el texto generado y los atributos de seguridad en columnas separadas.
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));
gemini-1.5-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_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) );
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,2.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_P
: Un valorFLOAT64
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 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.GROUND_WITH_GOOGLE_SEARCH
: Un valorBOOL
que determina si el modelo de Vertex AI usa Fundamentación con la Búsqueda de Google 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. Cuandoflatten_json_output
y este campo se configuran enTrue
, se incluye una columnaml_generate_text_grounding_result
adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado esFALSE
.SAFETY_SETTINGS
: Un valorARRAY<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 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)
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 seguridadBLOCK_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.
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 el texto generado y los atributos de seguridad en columnas diferentes.
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 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.
- No muestra el texto generado y los atributos de seguridad en columnas separadas.
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));
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, GROUND_WITH_GOOGLE_SEARCH AS ground_with_google_search, SAFETY_SETTINGS AS safety_settings) );
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 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 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.GROUND_WITH_GOOGLE_SEARCH
: Un valorBOOL
que determina si el modelo de Vertex AI usa Fundamentación con la Búsqueda de Google 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. Cuandoflatten_json_output
y este campo se configuran enTrue
, se incluye una columnaml_generate_text_grounding_result
adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado esFALSE
.SAFETY_SETTINGS
: Un valorARRAY<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 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)
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 seguridadBLOCK_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.
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 el texto generado y los atributos de seguridad en columnas diferentes.
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 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.
- No muestra el texto generado y los atributos de seguridad en columnas separadas.
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 siguiente ejemplo, se muestra una solicitud con estas características:
- Solicita un resumen del texto en la columna
body
de la tablaarticles
. - Compacta la respuesta JSON en columnas separadas.
- 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 ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 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`, (PROMPT_QUERY), STRUCT(TOKENS AS max_output_tokens, TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output) );
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,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 es128
.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. Si no especificas un valor, el modelo determina uno apropiado.TOP_P
: Un valorFLOAT64
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.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
.
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 el texto generado y los atributos de seguridad en columnas diferentes.
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 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.
- No muestra el texto generado y los atributos de seguridad en columnas separadas.
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));
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) );
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 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 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 el texto generado y los atributos de seguridad en columnas diferentes.
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 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.
- No muestra el texto generado y los atributos de seguridad en columnas separadas.
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));
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) );
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 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 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 el texto generado y los atributos de seguridad en columnas diferentes.
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 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.
- No muestra el texto generado y los atributos de seguridad en columnas separadas.
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));
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) );
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 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 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 el texto generado y los atributos de seguridad en columnas diferentes.
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 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.
- No muestra el texto generado y los atributos de seguridad en columnas separadas.
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));
Genera texto a partir de datos de tablas de objetos
Para generar texto, usa la
función ML.GENERATE_TEXT
con un modelo remoto, usa una tabla de objetos para proporcionar el contenido que se analizará
y proporciona los datos de la instrucción en el parámetro prompt
:
gemini-1.5-flash
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) );
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 tiene 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 debe estar en el mismo proyecto en el que creaste el modelo y en el que llamas a la función
ML.GENERATE_TEXT
. Si deseas llamar a la funciónML.GENERATE_TEXT
en un proyecto diferente al que contiene el bucket de Cloud Storage que usa la tabla de objetos, debes otorgar el rol de administrador de almacenamiento a nivel del bucket a la cuenta de servicio[email protected]
.PROMPT
: La instrucción que se usará para analizar el contenido.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,2.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_P
: Un valorFLOAT64
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 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.SAFETY_SETTINGS
: Un valorARRAY<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 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)
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 seguridadBLOCK_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.
Ejemplos
En este ejemplo, se analiza el contenido de video de una tabla de objetos llamada
videos
y se describe el contenido de cada video:
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.video_model`, TABLE `mydataset.videos`, STRUCT('What is happening in this video?' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));
En este ejemplo, se traduce y transcribe el 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 en 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));
gemini-1.5-pro
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) );
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 tiene 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 debe estar en el mismo proyecto en el que creaste el modelo y en el que llamas a la función
ML.GENERATE_TEXT
. Si deseas llamar a la funciónML.GENERATE_TEXT
en un proyecto diferente al que contiene el bucket de Cloud Storage que usa la tabla de objetos, debes otorgar el rol de administrador de almacenamiento a nivel del bucket a la cuenta de servicio[email protected]
.PROMPT
: La instrucción que se usará para analizar el contenido.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,2.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_P
: Un valorFLOAT64
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 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.SAFETY_SETTINGS
: Un valorARRAY<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 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)
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 seguridadBLOCK_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.
Ejemplos
En este ejemplo, se analiza el contenido de video de una tabla de objetos llamada
videos
y se describe el contenido de cada video:
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.video_model`, TABLE `mydataset.videos`, STRUCT('What is happening in this video?' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));
En este ejemplo, se traduce y transcribe el 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 en 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));
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, SAFETY_SETTINGS AS safety_settings) );
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 tiene 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 debe estar en el mismo proyecto en el que creaste el modelo y en el que llamas a la función
ML.GENERATE_TEXT
. Si deseas llamar a la funciónML.GENERATE_TEXT
en un proyecto diferente al que contiene el bucket de Cloud Storage que usa la tabla de objetos, debes otorgar el rol de administrador de almacenamiento a nivel del bucket a la cuenta de servicio[email protected]
.PROMPT
: La instrucción que se usará para analizar el contenido.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 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 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.SAFETY_SETTINGS
: Un valorARRAY<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 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)
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 seguridadBLOCK_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.
Ejemplos
En este ejemplo, se analiza el contenido de video de una tabla de objetos llamada
videos
y se describe el contenido de cada video:
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.video_model`, TABLE `mydataset.videos`, STRUCT('What is happening in this video?' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));