GitHub: Automatización de la revisión de código con IA generativa

1. Descripción general

En este lab, configurarás el flujo de trabajo de GitHub Actions y lo integrarás con Gemini para automatizar los pasos de revisión de código.

2bab73f63b927f93.png

Qué aprenderás

En este lab, aprenderás a realizar las siguientes tareas:

  • Cómo agregar pasos de automatización de revisión de código de GenAI en GitHub
  • Cómo ejecutar la CLI de devai de forma local para automatizar las revisiones de código

Requisitos previos

  • Para este lab, se da por sentado que el usuario tiene conocimientos previos sobre los entornos de shell y la consola de Cloud.

2. Configuración y requisitos

Configuración del proyecto de Cloud

  1. Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
  • El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto.
  • Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
  1. A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.

Configuración del entorno

Abre el chat de Gemini.

bc3c899ac8bcf488.png

También puedes escribir "Pregúntale a Gemini" en la barra de búsqueda.

e1e9ad314691368a.png

Habilita la API de Cloud AI Companion:

66cb6e561e384bbf.png

Haz clic en "Start chatting" y sigue una de las preguntas de ejemplo o escribe tu propia instrucción para probarla.

5482c153eef23126.png

Instrucciones que puedes probar:

  • Explica Cloud Run en 5 puntos clave.
  • Eres el gerente de producto de Google Cloud Run y debes explicarle Cloud Run a un estudiante en 5 puntos clave breves.
  • Eres gerente de producto de Google Cloud Run y le explicas Cloud Run a un desarrollador certificado de Kubernetes en 5 puntos clave breves.
  • Eres gerente de producto de Google Cloud Run y debes explicarle a un desarrollador sénior cuándo usarías Cloud Run en lugar de GKE en 5 puntos clave breves.

Consulta la Guía de instrucciones para obtener más información sobre cómo escribir mejores instrucciones.

Cómo Gemini para Google Cloud usa tus datos

Compromiso de privacidad de Google

Google fue uno de los primeros en el sector en publicar un compromiso de privacidad con la IA y el AA, que describe nuestra creencia de que los clientes deben tener el nivel más alto de seguridad y control sobre sus datos que se almacenan en la nube.

Datos que envías y recibes

Las preguntas que le haces a Gemini, incluida la información de entrada o el código que le envías para que las analice o complete, se denominan instrucciones. Las respuestas o las terminaciones de código que recibes de Gemini se denominan respuestas. Gemini no usa tus instrucciones ni sus respuestas como datos para entrenar sus modelos.

Encriptación de instrucciones

Cuando envías instrucciones a Gemini, tus datos se encriptan en tránsito como entrada al modelo subyacente en Gemini.

Datos de programas generados a partir de Gemini

Gemini se entrena con código propio de Google Cloud y código de terceros seleccionado. Eres responsable de la seguridad, las pruebas y la eficacia de tu código, incluidos cualquier finalización, generación o análisis de código que te ofrezca Gemini.

Obtén más información sobre cómo Google maneja tus instrucciones.

3. Opciones para probar instrucciones

Si deseas cambiar o extender las indicaciones de devai cli existentes, tienes varias opciones para hacerlo.

Vertex AI Studio es parte de la plataforma Vertex AI de Google Cloud, diseñada específicamente para simplificar y acelerar el desarrollo y el uso de modelos de IA generativa.

Google AI Studio es una herramienta basada en la Web para crear prototipos y experimentar con la ingeniería de instrucciones y la API de Gemini.

La app web de Google Gemini (gemini.google.com) es una herramienta basada en la Web diseñada para ayudarte a explorar y aprovechar el poder de los modelos de IA de Gemini de Google.

4. Crear una cuenta de servicio.

Para activar Cloud Shell, haz clic en el ícono que se encuentra a la derecha de la barra de búsqueda.

3e0c761ca41f315e.png

En la terminal abierta, habilita los servicios necesarios para usar las APIs de Vertex AI y el chat de Gemini.

gcloud services enable \
    aiplatform.googleapis.com \
    cloudaicompanion.googleapis.com \
    cloudresourcemanager.googleapis.com \
    secretmanager.googleapis.com

Si se te solicita autorización, haz clic en "Autorizar" para continuar.

6356559df3eccdda.png

Ejecuta los siguientes comandos para crear una cuenta de servicio y claves nuevas.

Usarás esta cuenta de servicio para realizar llamadas a la API de Gemini de Vertex AI desde las canalización de CI/CD.

PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME='vertex-client'
DISPLAY_NAME='Vertex Client'
KEY_FILE_NAME='vertex-client-key'

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --display-name "$DISPLAY_NAME"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin" --condition None

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor" --condition None

gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com

5. Cómo bifurcar el repositorio de GitHub a tu repositorio personal de GitHub

Ve a https://github.com/GoogleCloudPlatform/genai-for-developers/fork y selecciona tu ID de usuario de GitHub como propietario.

Desmarca la opción para copiar solo la rama "main".

Haz clic en “Create fork”.

6. Habilita el flujo de trabajo de GitHub Actions

Abre el repositorio de GitHub bifurcado en el navegador y cambia a la pestaña “Actions” para habilitar los flujos de trabajo.

1cd04db9b37af7cf.png

7. Agrega secretos del repositorio

Crea un secreto de repositorio en "Settings / Secrets and variables / Actions" en el repositorio de GitHub bifurcado.

Agrega un secreto de repositorio con el nombre "GOOGLE_API_CREDENTIALS".

94cbe2778bef25eb.png

Cambia a la ventana o pestaña de Google Cloud Shell y ejecuta el siguiente comando en la terminal de Cloud Shell.

cat ~/vertex-client-key.json

Copia el contenido del archivo y pégalo como valor del secreto.

915579a97f8f2ced.png

Agrega el secreto PROJECT_ID con el ID de tu proyecto de Qwiklabs como valor:

4fa92833ce615a36.png

8. Ejecuta el flujo de trabajo de Acciones de GitHub

Navega a tu repositorio de GitHub en el navegador y ejecuta el flujo de trabajo.

El flujo de trabajo está configurado para ejecutarse en el envío de código o la ejecución manual.

da11273b4b54f7b6.png

Revisa los resultados:

cf49aa41980aacc5.png

Resultados del comando de cobertura de pruebas:

devai review testcoverage -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

3b21bd4639524763.png

Resultados del comando de revisión de código:

devai review code -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

4876dbc2e0042943.png

Resultados del comando de revisión de rendimiento:

devai review performance -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

98dd2472b2e819bf.png

Resultados del comando de revisión de seguridad:

devai review security -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

7d180a763db92d56.png

Resultados del comando de revisión de bloqueadores:

devai review blockers -c ${{ github.workspace }}/sample-app/pom.xml

726175e874aefcf.png

9. Clona el repositorio

Regresa a la terminal de Cloud Shell y clona el repositorio.

Cambia YOUR-GITHUB-USERID a tu ID de usuario de GitHub antes de ejecutar los comandos.

git clone https://github.com/YOUR-GITHUB-USERID/genai-for-developers.git 

Cambia de carpeta y abre el archivo de flujo de trabajo en el Editor de Cloud Shell.

cd genai-for-developers

cloudshell edit .github/workflows/devai-review.yml 

Espera a que se muestre el archivo de configuración en el IDE.

9e81e5a79d421eac.png

10. Habilita Gemini Code Assist

Haz clic en el ícono “Gemini” que se encuentra en la esquina inferior derecha 7c891e32c055c0e4.png.

Haz clic en "Login to Google Cloud" y "Select a Google Cloud Project".

f5318f22c91ecaa8.png

6b7203ffdd8485fa.png

fb8d42a6bc8a260f.png

En la ventana emergente, selecciona tu proyecto de Qwiklabs.

f661047956a6d6f9.png

11. Explica el código con Gemini Code Assist

Haz clic con el botón derecho en cualquier lugar del archivo devai-review.yml y selecciona Gemini Code Assist > Explain esto.

41fb7da002bdf43.png

Explicación de la revisión:

7724d52e54918c00.png

12. Ejecuta DEVAI CLI de forma local

Regresa a la terminal de Cloud Shell y ejecuta los siguientes comandos para instalar devai de forma local.

pip3 install devai-cli

La CLI se instaló, pero no está en la PATH.

WARNING: The script devai is installed in '/home/student_00_478dfeb8df15/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

Ejecuta el siguiente comando para actualizar la variable de entorno PATH. Reemplaza por el nombre de la carpeta principal del usuario. Por ejemplo: student_00_478dfeb8df15

export PATH=$PATH:/home/YOUR-USER-HOME-FOLDER/.local/bin

Ejecuta el comando de la CLI de devai para realizar la revisión de código de forma local. Revisa el resultado de la CLI.

export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1

cd ~/genai-for-developers

devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Ejecuta el siguiente comando para abrir la secuencia de comandos de revisión:

cloudshell edit devai-cli/src/devai/commands/review.py

Haz clic con el botón derecho en cualquier lugar del archivo review.py y selecciona Gemini Code Assist > Explain esto.

Revisa la explicación.

30e3baf4c272c8ab.png

13. Desarrollo de la CLI de DevAI

En esta sección, realizarás cambios en devai cli.

Para comenzar, configura python virtualenv, instala los requisitos y ejecuta el comando de ejemplo.

cd ~/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo

Vuelve a ejecutar el comando de revisión de código para verificar que todo funcione correctamente:

devai review code -c ~/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Revisa los resultados con la vista previa de Markdown en el editor de Cloud Shell.

Crea un archivo nuevo y pega la respuesta de Gemini.

Luego, usa la paleta de comandos y selecciona "Markdown: Open Preview".

ec6fedf4b6d3fb73.png

9999e7fbb20cf251.png

9a12ba6ee8b3eedd.png

14. Explora los comandos de la CLI de devai

Comando de revisión de código

devai review code -c ~/genai-for-developers/sample-app/src/main/java

Comando de revisión de rendimiento

devai review performance -c ~/genai-for-developers/sample-app/src/main/java

Comando de revisión de seguridad

devai review security -c ~/genai-for-developers/sample-app/src/main/java

Comando de revisión de la cobertura de pruebas

devai review testcoverage -c ~/genai-for-developers/sample-app/src

Comandos de revisión de bloqueadores

devai review blockers -c ~/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/genai-for-developers/sample-app/setup.md

Revisión y resumen de imágenes o diagramas:

Diagrama de entrada [~/genai-for-developers/images/extension-diagram.png]:

4b109a74e1aa3fb6.png

Comando de revisión:

devai review image \
  -f ~/genai-for-developers/images/extension-diagram.png \
  -p "Review and summarize this diagram"

Resultado:

The diagram outlines a process for conducting local code reviews using a VS Code extension or CLI, leveraging Google Cloud's Vertex AI (Gemini Pro) for generating review prompts. 

**Process Flow:**

1. **Code Style Check:** Developers initiate the process by checking their code for adherence to pre-defined style guidelines.
2. **Prompt Generation:** The VS Code extension/CLI sends the code to Vertex AI (Gemini Pro) on Google Cloud. 
3. **Vertex AI Review:**  Vertex AI analyzes the code and generates relevant review prompts.
4. **Local Review:** The prompts are sent back to the developer's IDE for their consideration.
5. **Optional Actions:** Developers can optionally: 
    - Create new JIRA issues directly from the IDE based on the review prompts.
    - Generate new issues in a GitLab repository.

**Key Components:**

* **VS Code Extension/CLI:** Tools facilitating the interaction with Vertex AI and potential integrations with JIRA and GitLab.
* **Vertex AI (Gemini Pro):**  Google Cloud's generative AI service responsible for understanding the code and generating meaningful review prompts.
* **Google Cloud Secret Manager:** Securely stores API keys and access tokens required to authenticate and interact with Google Cloud services.
* **JIRA/GitLab (Optional):** Issue tracking and project management tools that can be integrated for a streamlined workflow.

**Benefits:**

* **Automated Review Assistance:**  Leveraging AI to generate review prompts saves time and improves the consistency and quality of code reviews. 
* **Local Development:** The process empowers developers to conduct reviews locally within their familiar IDE.
* **Integration Options:** The flexibility to integrate with project management tools like JIRA and GitLab streamlines workflow and issue tracking.

Análisis de diferencias de imágenes:

devai review imgdiff \
  -c ~/genai-for-developers/images/devai-api.png \
  -t ~/genai-for-developers/images/devai-api-slack.png  

Resultado:

The following UI elements are missing in the "AFTER UPGRADE STATE" image compared to the "BEFORE UPGRADE STATE" image:

1. **Slack:** The entire Slack element, including the icon, "Team channel" label, and the arrow indicating interaction, is absent in the AFTER UPGRADE image. 
2. **Storage Bucket:**  The "Storage Bucket" element with its icon and "PDFs" label is missing in the AFTER UPGRADE image. 
3. **"GenAI Agents" label in Vertex AI block:** The BEFORE UPGRADE image has "Vertex AI Agents" and "GenAI Agent" labels within the Vertex AI block, while the AFTER UPGRADE image only has "Vertex AI."
4. **"Open JIRA Issue" and "Team Project" labels:** In the BEFORE UPGRADE image, these labels are connected to the JIRA block with an arrow. These are missing in the AFTER UPGRADE image.

**Decision Explanation:**

The analysis is based on a direct visual comparison of the two provided images, noting the presence and absence of specific UI elements and their associated labels. The elements listed above are present in the BEFORE UPGRADE image but absent in the AFTER UPGRADE image.

Comando de generación de documentación:

devai document readme -c ~/genai-for-developers/sample-app/src/main/

Resultado:

# Bank of Anthos - Balance Reader Service

## Description

The Balance Reader service is a component of the Bank of Anthos sample application. It provides a REST endpoint for retrieving the current balance of a user account. This service demonstrates key concepts for building microservices with Spring Boot and deploying them to a Kubernetes cluster.

## Features
...

Revisa los comandos de la CLI de devai disponibles en el editor de Cloud Shell:

cloudshell edit ~/genai-for-developers/devai-cli/README.md

También puedes revisar el archivo README.md en el repositorio de GitHub.

15. ¡Felicitaciones!

¡Felicitaciones! Completaste el codelab.

Temas abordados:

  • Cómo agregar pasos de automatización de revisión de código de IA generativa en GitHub
  • Ejecuta la CLI de devai de forma local

¿Qué sigue?

  • Próximamente, habrá más sesiones prácticas.

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

©2024 Google LLC Todos los derechos reservados. Google y el logotipo de Google son marcas de Google LLC. El resto de los nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que están asociados.