La función ML.GENERATE_TEXT
En este documento, se describe la función ML.GENERATE_TEXT
, que te permite realizar
tareas generativas de lenguaje natural en el texto almacenado en las tablas
de BigQuery. Estos son algunos ejemplos de tareas de lenguaje:
- Clasificación
- Análisis de opiniones
- Extracción de entidades
- Búsqueda de respuestas de extracción
- Resúmenes
- Reescritura de texto en un estilo diferente
- Generación de texto de un anuncio
- Creación de ideas de conceptos
La función envía solicitudes a un modelo remoto
de BigQuery ML
que representa uno de los modelos de base de lenguaje natural text-bison*
(LLM) de Vertex AI y, luego, muestra la respuesta del LLM. Varios de los argumentos de la
función proporcionan los
parámetros
que definen la respuesta del LLM.
El parámetro prompt
proporciona el texto para que el modelo analice.
El diseño de instrucciones puede afectar considerablemente las respuestas que muestra el LLM. Para obtener más información, consulta Diseña indicaciones de texto.
Sintaxis
ML.GENERATE_TEXT( MODEL `project_id.dataset.model`, { TABLE `project_id.dataset.table` | (query_statement) }, STRUCT( [number_of_output_tokens AS max_output_tokens] [, top_k_value AS top_k] [, top_p_value AS top_p] [, temperature AS temperature] [, flatten_json_output AS flatten_json_output]) )
Argumentos
ML.GENERATE_TEXT
toma los siguientes argumentos:
project_id
: ID del proyectodataset
: Es el conjunto de datos de BigQuery que contiene el modelo.model
: El nombre de un modelo remoto que usa uno de lostext-bison*
Vertex AI LLM. Para obtener más información sobre cómo crear este tipo de modelo remoto, consultaENDPOINT
.table
: Es el nombre de la tabla de BigQuery que contiene los datos del mensaje. El texto en la columna llamadaprompt
se envía al modelo. Si tu tabla no tiene una columnaprompt
, usa una sentenciaSELECT
para este argumento a fin de proporcionar un alias para una columna de tabla existente. Se produce un error si no hay una columnaprompt
disponible.query_statement
: Es la consulta de GoogleSQL que se usa para generar los datos del mensaje.max_output_tokens
: un valorINT64
en el rango[1,1024]
que establece la cantidad máxima de tokens que genera el modelo. 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 es50
.Un token puede ser más pequeño que una palabra y tener aproximadamente cuatro caracteres. 100 tokens corresponden a aproximadamente 60 a 80 palabras.
temperature
: un valorFLOAT64
en el rango[0.0,1.0]
que se usa para el muestreo durante la generación de la respuesta, que ocurre cuando se aplicantop_k
ytop_p
. Controla el grado de aleatorización en la selección de tokens. Los valorestemperature
más bajos son buenos para los mensajes que requieren una respuesta más determinista y menos abierta o de creatividad, mientras que los valorestemperature
más altos pueden generar resultados más diversos o creativos. Un valortemperature
de0
es determinista, lo que significa que siempre se elige la respuesta de mayor probabilidad. El valor predeterminado es1.0
.top_k
: un valorINT64
en el rango[1,40]
que cambia la forma en que el modelo selecciona tokens para la salida. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es40
.Un valor
top_k
de1
significa que el siguiente token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo, mientras que un valortop_k
de3
significa que el siguiente token se selecciona entre los tres tokens más probables mediante el valortemperature
.Para cada paso de selección de tokens, se realiza un muestreo de los tokens
top_k
con las probabilidades más altas. Luego, los tokens se filtran según el valortop_p
, y el token final se selecciona con el muestreo de temperatura.top_p
: un valorFLOAT64
en el rango[0.0,1.0]
que cambia la forma en que el modelo selecciona tokens para la salida. Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias. El valor predeterminado es1.0
.Los tokens se seleccionan del más probable (según el valor
top_k
) al menos probable hasta que la suma de sus probabilidades sea igual al valor detop_p
. Por ejemplo, si los tokens A, B y C tienen una probabilidad de0.3
,0.2
y0.1
, y el valortop_p
es0.5
, entonces el modelo selecciona A o B como el siguiente token mediante el valortemperature
y no considera C.flatten_json_output
: es un valorBOOL
que determina si el contenido JSON que muestra la función se analiza en columnas separadas. El valor predeterminado esFALSE
.
Salida
ML.GENERATE_TEXT
muestra la tabla de entrada más las siguientes columnas:
ml_generate_text_result
: la respuesta JSON de la llamadaprojects.locations.endpoints.predict
al modelo. El texto generado se encuentra en el elementocontent
. Los atributos de seguridad están en el elementosafetyAttributes
. Esta columna se muestra cuandoflatten_json_output
esFALSE
.ml_generate_text_llm_result
: un valorSTRING
que contiene el texto generado que muestra la llamadaprojects.locations.endpoints.predict
al modelo. Esta columna se muestra cuandoflatten_json_output
esTRUE
.ml_generate_text_rai_result
: un valorSTRING
que contiene los atributos de seguridad que muestra la llamadaprojects.locations.endpoints.predict
al modelo. Esta columna se muestra cuandoflatten_json_output
esTRUE
.ml_generate_text_status
: un valorSTRING
que contiene el estado de respuesta de la API para la fila correspondiente. Este valor está vacío si la operación se realizó con éxito.
Ubicaciones
ML.GENERATE_TEXT
debe ejecutarse en la misma región que el modelo remoto al que
hace referencia la función. Solo puedes crear modelos remotos basados en
modelos text-bison*
en las siguientes ubicaciones:
asia-northeast3
asia-southeast1
eu
europe-west1
europe-west2
europe-west3
europe-west4
europe-west9
us
us-central1
us-west4
Cuotas
Consulta Cuotas y límites de las funciones con valores de la tabla de servicios de Cloud AI.
Ejemplos
Ejemplo 1
En este ejemplo, se muestra una solicitud con las siguientes características:
- Proporciona un solo mensaje.
- Muestra una respuesta de texto generado más larga.
- Muestra una respuesta de texto generado menos probable.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, (SELECT 'What is the purpose of dreams?' AS prompt), STRUCT( 0.8 AS temperature, 1024 AS max_output_tokens, 0.95 AS top_p, 40 AS top_k));
Ejemplo 2
En este ejemplo, se muestra una solicitud con las siguientes características:
- Proporciona datos de solicitud desde una columna de tabla llamada
prompt
. - Muestra una respuesta de texto generado más corta.
- Muestra una respuesta de texto generado más probable.
- Compacta la respuesta JSON en columnas separadas.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model` TABLE `mydataset.prompt_table`, STRUCT( 0.2 AS temperature, 75 AS max_output_tokens, 0.3 AS top_p, 15 AS top_k, TRUE AS flatten_json_output));
Ejemplo 3
En este ejemplo, se muestra una solicitud con las siguientes características:
- Proporciona datos de solicitud de una columna de tabla llamada
question
que tiene un alias comoprompt
. - Muestra una respuesta de texto generado moderadamente larga.
- Muestra una respuesta de texto generado moderadamente probable.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, (SELECT question AS prompt FROM `mydataset.prompt_table`), STRUCT( 0.4 AS temperature, 750 AS max_output_tokens, 0.5 AS top_p, 30 AS top_k));
Ejemplo 4
En este ejemplo, se muestra una solicitud con las siguientes características:
- Concatena strings y una columna de tabla para proporcionar los datos del mensaje.
- Muestra una respuesta de texto generado más larga.
- Muestra una respuesta de texto generado más probable.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT( 'Classify the sentiment of the following text as positive or negative.Text:', input_column, 'Sentiment:') AS prompt FROM `mydataset.input_table` ), STRUCT( 0.1 AS temperature, 1000 AS max_output_tokens, 0.1 AS top_p, 10 AS top_k));
¿Qué sigue?
- Prueba un instructivo sobre cómo generar texto con un conjunto de datos públicos.
- Obtén instrucciones paso a paso sobre cómo generar texto con tus propios datos.
- Obtén más información sobre otras funciones que puedes usar para analizar datos de BigQuery.