1. Introducción
En este codelab, se enumeran los pasos para realizar un resumen del código fuente de repos de GitHub y la identificación del lenguaje de programación en el repo, usando el modelo de lenguaje grande de Vertex AI para la generación de texto ( text-bison) como una función alojada remota en BigQuery. Gracias al proyecto Archive de GitHub, ahora tenemos una instantánea completa de más de 2.8 millones de repositorios de código abierto de GitHub en los conjuntos de datos públicos de Google BigQuery. La lista de servicios que se usan es la siguiente:
- BigQuery ML
- API de PaLM de Vertex AI
Qué compilarás
Crearás
- Un conjunto de datos de BigQuery que contenga el modelo
- Un modelo de BigQuery que aloja la API de PaLM de Vertex AI como una función remota
- Una conexión externa para establecer la conexión entre BigQuery y Vertex AI
2. Requisitos
3. Antes de comenzar
- En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
- Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información para verificar si la facturación está habilitada en un proyecto.
- Asegúrate de que todas las APIs necesarias (API de BigQuery, API de Vertex AI y API de BigQuery Connection) estén habilitadas.
- Usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en Google Cloud y que viene precargado con bq. Consulta la documentación para ver los comandos y el uso de gcloud.
En la consola de Cloud, haz clic en Activar Cloud Shell en la esquina superior derecha:

Si tu proyecto no está configurado, usa el siguiente comando para hacerlo:
gcloud config set project <YOUR_PROJECT_ID>
- Para navegar directamente a la consola de BigQuery, ingresa la siguiente URL en tu navegador: https://console.cloud.google.com/bigquery
4. Prepara datos
En este caso de uso, utilizamos el contenido del código fuente del conjunto de datos github_repos en los conjuntos de datos públicos de Google BigQuery. Para usarla, en la consola de BigQuery, busca "github_repos" y presiona Intro. Haz clic en la estrella junto al conjunto de datos que aparece como resultado de la búsqueda. Luego, haz clic en la opción "MOSTRAR SOLO LOS DESTACADOS" para ver solo ese conjunto de datos de los conjuntos de datos públicos.

Expande las tablas del conjunto de datos para ver el esquema y la vista previa de los datos. Usaremos sample_contents, que solo contiene una muestra (10%) de los datos completos de la tabla de contenidos. Aquí tienes una vista previa de los datos:

5. Cómo crear el conjunto de datos de BigQuery
Un conjunto de datos de BigQuery es una colección de tablas. Todas las tablas de un conjunto de datos se almacenan en la misma ubicación de datos. También puedes adjuntar controles de acceso personalizados para limitar el acceso a un conjunto de datos y sus tablas.
Crea un conjunto de datos en la región "US" (o cualquier región de tu preferencia) llamado bq_llm.

Este conjunto de datos alojará el modelo de AA que crearemos en los próximos pasos. Por lo general, también almacenaríamos los datos que usamos en la aplicación de AA en una tabla de este conjunto de datos, pero, en nuestro caso de uso, los datos ya se encuentran en un conjunto de datos públicos de BigQuery, por lo que haremos referencia a ellos directamente desde nuestro conjunto de datos recién creado según sea necesario. Si deseas realizar este proyecto con tu propio conjunto de datos que se encuentra en un archivo CSV (o cualquier otro archivo), puedes cargar tus datos en una tabla de un conjunto de datos de BigQuery ejecutando el siguiente comando desde la terminal de Cloud Shell:
bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string
6. Creando conexión externa
Crea una conexión externa (habilita la API de conexión de BQ si aún no lo hiciste) y anota el ID de la cuenta de servicio en los detalles de configuración de la conexión:
- Haz clic en el botón +AGREGAR en el panel del Explorador de BigQuery (a la izquierda de la consola de BigQuery) y, luego, en "Conexión a fuentes de datos externas" en las fuentes populares que se enumeran.
- Selecciona el tipo de conexión como "BigLake y funciones remotas" y proporciona "llm-conn" como ID de conexión.

- Una vez que se cree la conexión, anota la cuenta de servicio generada a partir de los detalles de configuración de la conexión.
7. Otorgar permisos
En este paso, otorgaremos permisos a la cuenta de servicio para acceder al servicio de Vertex AI:
Abre IAM y agrega la cuenta de servicio que copiaste después de crear la conexión externa como principal y selecciona el rol "Usuario de Vertex AI".

8. Crea un modelo de AA remoto
Crea el modelo remoto que representa un modelo de lenguaje grande de Vertex AI alojado:
CREATE OR REPLACE MODEL bq_llm.llm_model
REMOTE WITH CONNECTION `us.llm-conn`
OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');
Se crea un modelo llamado llm_model en el conjunto de datos bq_llm que aprovecha la API de CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 de Vertex AI como una función remota. Este proceso puede tomar varios segundos en completarse.
9. Genera texto con el modelo de AA
Una vez creado el modelo, úsalo para generar, resumir o categorizar texto.
SELECT
ml_generate_text_result['predictions'][0]['content'] AS generated_text,
ml_generate_text_result['predictions'][0]['safetyAttributes']
AS safety_attributes,
* EXCEPT (ml_generate_text_result)
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens));
**Explicación:
ml_generate_text_result** es la respuesta del modelo de generación de texto en formato JSON que contiene atributos de contenido y seguridad: a. Content representa el resultado de texto generado b. Los atributos de seguridad representan el filtro de contenido integrado con un umbral ajustable que se habilita en la API de PaLM de Vertex AI para evitar respuestas no deseadas o imprevistas del modelo de lenguaje grande. La respuesta se bloquea si incumple el umbral de seguridad.
ML.GENERATE_TEXT es la construcción que usas en BigQuery para acceder al LLM de Vertex AI y realizar tareas de generación de texto.
CONCAT agrega tu sentencia PROMPT y el registro de la base de datos
github_repos es el nombre del conjunto de datos y sample_contents es el nombre de la tabla que contiene los datos que usaremos en el diseño de instrucciones.
Temperature es el parámetro de la instrucción para controlar la aleatoriedad de la respuesta: cuanto menor sea, mayor será la relevancia.
Max_output_tokens es la cantidad de palabras que quieres en la respuesta.
La respuesta a la consulta se ve de la siguiente manera:

10. Aplanar el resultado de la consulta
Aplanemos el resultado para no tener que decodificar el JSON de forma explícita en la consulta:
SELECT *
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output));
**Explicación:
Flatten_json_output** representa el valor booleano que, si se establece como verdadero, devuelve un texto plano comprensible extraído de la respuesta JSON.
La respuesta a la consulta se ve de la siguiente manera:

11. Limpia
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta publicación:
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrarlo.
12. ¡Felicitaciones!
¡Felicitaciones! Usaste con éxito un LLM de generación de texto de Vertex AI de forma programática para realizar análisis de texto en tus datos con solo consultas en SQL. Consulta la documentación del producto de LLM de Vertex AI para obtener más información sobre los modelos disponibles.