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 tabla
    • bigquery.models.getData en el modelo
    • bigquery.jobs.create

Antes de comenzar

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

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the 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

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. Para crear una conexión, haz clic en Agregar y, luego, en Conexiones a fuentes de datos externas.

  3. En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas y BigLake (Cloud Resource).

  4. En el campo ID de conexión, escribe un nombre para tu conexión.

  5. Haz clic en Crear conexión (Create connection).

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

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

bq

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

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

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

    Reemplaza lo siguiente:

    • REGION: tu región de conexión
    • PROJECT_ID: El ID 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...
    
  2. Recupera y copia el ID de cuenta de servicio para usarlo en un paso posterior:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    El resultado es similar a este:

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

Terraform

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 {}
}        
Reemplaza lo siguiente:

  • 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

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

    Ir a IAM y administración

  2. Haga clic en Agregar.

    Se abre el cuadro de diálogo Agregar principales.

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

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

  5. Haz clic en Guardar.

gcloud

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

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

Reemplaza lo siguiente:

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

Habilita el modelo de Vertex AI

Este paso solo es necesario si usas un modelo de Claude.

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

    Ir a Model Garden

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

  3. Haz clic en la tarjeta de modelo.

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

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

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

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

Crea un modelo remoto de BigQuery ML

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

    Ir a BigQuery

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

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

    Reemplaza lo siguiente:

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

      Cuando 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 proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamada prompt, o puedes usar un alias para usar una columna con nombre diferente.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,8192]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,2.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • GROUND_WITH_GOOGLE_SEARCH: Un valor BOOL 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. Cuando flatten_json_output y este campo se configuran en True, se incluye una columna ml_generate_text_grounding_result adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado es FALSE.
  • SAFETY_SETTINGS: Un valor ARRAY<STRUCT<STRING AS category, STRING AS threshold>> que configura umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento del struct especifica una categoría de daño, y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que incumple esta configuración. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) y STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold) a la vez. Si no hay un parámetro de configuración de seguridad para una categoría determinada, se usa el parámetro de configuración de seguridad BLOCK_MEDIUM_AND_ABOVE.

    Las categorías admitidas son las siguientes:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Los umbrales admitidos son los siguientes:

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

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

Ejemplo

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

  • Usa la columna prompt de la tabla prompts 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 proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamada prompt, o puedes usar un alias para usar una columna con nombre diferente.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,8192]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,2.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • GROUND_WITH_GOOGLE_SEARCH: Un valor BOOL 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. Cuando flatten_json_output y este campo se configuran en True, se incluye una columna ml_generate_text_grounding_result adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado es FALSE.
  • SAFETY_SETTINGS: Un valor ARRAY<STRUCT<STRING AS category, STRING AS threshold>> que configura umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento del struct especifica una categoría de daño, y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que incumple esta configuración. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) y STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold) a la vez. Si no hay un parámetro de configuración de seguridad para una categoría determinada, se usa el parámetro de configuración de seguridad BLOCK_MEDIUM_AND_ABOVE.

    Las categorías admitidas son las siguientes:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Los umbrales admitidos son los siguientes:

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

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

Ejemplo

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

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

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

  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 40.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • GROUND_WITH_GOOGLE_SEARCH: Un valor BOOL 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. Cuando flatten_json_output y este campo se configuran en True, se incluye una columna ml_generate_text_grounding_result adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado es FALSE.
  • SAFETY_SETTINGS: Un valor ARRAY<STRUCT<STRING AS category, STRING AS threshold>> que configura umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento del struct especifica una categoría de daño, y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que incumple esta configuración. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) y STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold) a la vez. Si no hay un parámetro de configuración de seguridad para una categoría determinada, se usa el parámetro de configuración de seguridad BLOCK_MEDIUM_AND_ABOVE.

    Las categorías admitidas son las siguientes:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Los umbrales admitidos son los siguientes:

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

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

Ejemplo

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

  • Usa la columna prompt de la tabla prompts para el mensaje.
  • Muestra una respuesta 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 proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamada prompt, o puedes usar un alias para usar una columna con nombre diferente.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,4096]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. Si no especificas un valor, el modelo determina uno apropiado.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. Si no especificas un valor, el modelo determina uno apropiado.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.

Ejemplo

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

  • Usa la columna prompt de la tabla prompts 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 proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamada prompt, o puedes usar un alias para usar una columna con nombre diferente.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,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 es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 40.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.

Ejemplo

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

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

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

  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 40.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.

Ejemplo

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

  • Usa la columna prompt de la tabla prompts 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 proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: el nombre de la tabla que contiene el mensaje. Esta tabla debe tener una columna llamada prompt, o puedes usar un alias para usar una columna con nombre diferente.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,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 es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 40.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.

Ejemplo

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

  • Usa la columna prompt de la tabla prompts 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)
);
Reemplaza lo siguiente:
  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,8192]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,2.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • GROUND_WITH_GOOGLE_SEARCH: Un valor BOOL 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. Cuando flatten_json_output y este campo se configuran en True, se incluye una columna ml_generate_text_grounding_result adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado es FALSE.
  • SAFETY_SETTINGS: Un valor ARRAY<STRUCT<STRING AS category, STRING AS threshold>> que configura umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento del struct especifica una categoría de daño, y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que incumple esta configuración. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) y STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold) a la vez. Si no hay un parámetro de configuración de seguridad para una categoría determinada, se usa el parámetro de configuración de seguridad BLOCK_MEDIUM_AND_ABOVE.

    Las categorías admitidas son las siguientes:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Los umbrales admitidos son los siguientes:

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

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

Ejemplo 1

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

  • Solicita un resumen del texto en la columna body de la tabla articles.
  • 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)
);
Reemplaza lo siguiente:
  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,8192]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,2.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • GROUND_WITH_GOOGLE_SEARCH: Un valor BOOL 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. Cuando flatten_json_output y este campo se configuran en True, se incluye una columna ml_generate_text_grounding_result adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado es FALSE.
  • SAFETY_SETTINGS: Un valor ARRAY<STRUCT<STRING AS category, STRING AS threshold>> que configura umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento del struct especifica una categoría de daño, y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que incumple esta configuración. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) y STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold) a la vez. Si no hay un parámetro de configuración de seguridad para una categoría determinada, se usa el parámetro de configuración de seguridad BLOCK_MEDIUM_AND_ABOVE.

    Las categorías admitidas son las siguientes:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Los umbrales admitidos son los siguientes:

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

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

Ejemplo 1

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

  • Solicita un resumen del texto en la columna body de la tabla articles.
  • 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)
);
Reemplaza lo siguiente:
  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,8192]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 40.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • GROUND_WITH_GOOGLE_SEARCH: Un valor BOOL 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. Cuando flatten_json_output y este campo se configuran en True, se incluye una columna ml_generate_text_grounding_result adicional en los resultados, que proporciona las fuentes que el modelo usó para recopilar información adicional. El valor predeterminado es FALSE.
  • SAFETY_SETTINGS: Un valor ARRAY<STRUCT<STRING AS category, STRING AS threshold>> que configura umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento del struct especifica una categoría de daño, y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que incumple esta configuración. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) y STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold) a la vez. Si no hay un parámetro de configuración de seguridad para una categoría determinada, se usa el parámetro de configuración de seguridad BLOCK_MEDIUM_AND_ABOVE.

    Las categorías admitidas son las siguientes:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Los umbrales admitidos son los siguientes:

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

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

Ejemplo 1

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

  • Solicita un resumen del texto en la columna body de la tabla articles.
  • 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 tabla articles.
  • 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)
);
Reemplaza lo siguiente:
  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,4096]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. Si no especificas un valor, el modelo determina uno apropiado.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. Si no especificas un valor, el modelo determina uno apropiado.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.

Ejemplo 1

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

  • Solicita un resumen del texto en la columna body de la tabla articles.
  • 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)
);
Reemplaza lo siguiente:
  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,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 es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 40.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.

Ejemplo 1

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

  • Solicita un resumen del texto en la columna body de la tabla articles.
  • 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)
);
Reemplaza lo siguiente:
  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,8192]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 40.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.

Ejemplo 1

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

  • Solicita un resumen del texto en la columna body de la tabla articles.
  • 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)
);
Reemplaza lo siguiente:
  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • PROMPT_QUERY: una consulta que proporciona los datos del mensaje.
  • TOKENS: un valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,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 es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 40.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.

Ejemplo 1

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

  • Solicita un resumen del texto en la columna body de la tabla articles.
  • 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 proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: El nombre de la tabla 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ón ML.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 valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,8192]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,2.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • SAFETY_SETTINGS: Un valor ARRAY<STRUCT<STRING AS category, STRING AS threshold>> que configura umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento del struct especifica una categoría de daño, y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que incumple esta configuración. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) y STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold) a la vez. Si no hay un parámetro de configuración de seguridad para una categoría determinada, se usa el parámetro de configuración de seguridad BLOCK_MEDIUM_AND_ABOVE.

    Las categorías admitidas son las siguientes:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Los umbrales admitidos son los siguientes:

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

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

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 proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: El nombre de la tabla 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ón ML.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 valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,8192]. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. El valor predeterminado es 128.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,2.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.

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

  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • SAFETY_SETTINGS: Un valor ARRAY<STRUCT<STRING AS category, STRING AS threshold>> que configura umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento del struct especifica una categoría de daño, y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que incumple esta configuración. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) y STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold) a la vez. Si no hay un parámetro de configuración de seguridad para una categoría determinada, se usa el parámetro de configuración de seguridad BLOCK_MEDIUM_AND_ABOVE.

    Las categorías admitidas son las siguientes:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Los umbrales admitidos son los siguientes:

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

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

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 proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: El nombre de la tabla 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ón ML.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 valor INT64 que establece la cantidad máxima de tokens que se pueden generar en la respuesta. Este valor debe estar en el rango [1,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 es 2048.
  • TEMPERATURE: Un valor FLOAT64 en el rango [0.0,1.0] que controla el grado de aleatorización en la selección de tokens. El valor predeterminado es 0.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 para temperature pueden generar resultados más diversos o creativos. Un valor de 0 para temperature es determinístico, lo que significa que siempre se selecciona la respuesta de mayor probabilidad.

  • TOP_K: un valor INT64 en el rango [1,40] que determina el grupo inicial de tokens que el modelo considera para la selección. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 32.
  • TOP_P: Un valor FLOAT64 en el rango [0.0,1.0] ayuda a determinar la probabilidad de los tokens seleccionados. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es 0.95.
  • FLATTEN_JSON: un valor BOOL que determina si se debe mostrar el texto generado y los atributos de seguridad en columnas separadas. El valor predeterminado es FALSE.
  • STOP_SEQUENCES: un valor ARRAY<STRING> que quita las cadenas especificadas si se incluyen en respuestas del modelo. Las cadenas coinciden de forma exacta, incluido el uso de mayúsculas. El valor predeterminado es un array vacío.
  • SAFETY_SETTINGS: Un valor ARRAY<STRUCT<STRING AS category, STRING AS threshold>> que configura umbrales de seguridad del contenido para filtrar las respuestas. El primer elemento del struct especifica una categoría de daño, y el segundo elemento especifica un umbral de bloqueo correspondiente. El modelo filtra el contenido que incumple esta configuración. Solo puedes especificar cada categoría una vez. Por ejemplo, no puedes especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) y STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold) a la vez. Si no hay un parámetro de configuración de seguridad para una categoría determinada, se usa el parámetro de configuración de seguridad BLOCK_MEDIUM_AND_ABOVE.

    Las categorías admitidas son las siguientes:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Los umbrales admitidos son los siguientes:

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

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

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));