Implementación de historias de usuario de JIRA con IA generativa

1. Descripción general

En este lab, crearás una solución para automatizar la implementación de historias de usuario de JIRA con IA generativa.

a4ba5d8788dc40.png

Qué aprenderás

El lab tiene varias partes principales:

  • Implementa la aplicación de Cloud Run para integrarla con las APIs de Gemini
  • Crea e implementa la app de Atlassian Forge para JIRA
  • Usa agentes de LangChain ReAct para automatizar tareas de GitLab

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 Gemini para Google Cloud:

990a0ceea7d05531.png

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

ed120d672468b412.png

Instrucciones que puedes probar:

  • Explica Cloud Run en 5 puntos clave.
  • Eres el gerente de productos de Google Cloud Run. Explícale a un estudiante qué es Cloud Run en 5 puntos clave breves.
  • Eres el gerente de productos de Google Cloud Run. Explícale Cloud Run a un desarrollador certificado de Kubernetes en 5 puntos clave breves.
  • Eres el administrador de productos de Google Cloud Run. Explica cuándo usarías Cloud Run en lugar de GKE a un desarrollador sénior 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 for Google Cloud usa tus datos

Compromiso de Google con la privacidad

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 cualquier información de entrada o código que envíes para que Gemini lo analice o complete, se denominan instrucciones. Las respuestas o las sugerencias 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 para el modelo subyacente en Gemini.

Datos del programa generados por Gemini

Gemini se entrena con código propio de Google Cloud y con código de terceros seleccionado. Eres responsable de la seguridad, las pruebas y la eficacia de tu código, incluida 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 mensajes

Tienes varias opciones para probar instrucciones.

Vertex AI Studio forma parte de la plataforma Vertex AI de Google Cloud y está diseñado 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 utilizar el poder de los modelos de IA de Gemini de Google.

4. Revisar la solicitud

Crear una cuenta de servicio.

Regresa a la consola de Google Cloud y activa Cloud Shell haciendo clic en el ícono que se encuentra a la derecha de la barra de búsqueda.

3e0c761ca41f315e.png

En la terminal abierta, 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 Vertex AI Gemini desde la aplicación de Cloud Run.

Configura los detalles del proyecto con los detalles de tu proyecto de Qwiklabs.

Ejemplo: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

Crea una cuenta de servicio.

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

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

Otorga roles.

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

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

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/cloudbuild.builds.editor"

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

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

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

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

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

6356559df3eccdda.png

Habilita los servicios necesarios para usar las APIs de Vertex AI y el chat de Gemini.

gcloud services enable \
    generativelanguage.googleapis.com \
    aiplatform.googleapis.com \
    cloudaicompanion.googleapis.com \
    run.googleapis.com \
    cloudresourcemanager.googleapis.com
 

Habilita los servicios necesarios para usar las APIs de Vertex AI y el chat de Gemini.

gcloud services enable \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    runapps.googleapis.com \
    workstations.googleapis.com \
    servicemanagement.googleapis.com \
    secretmanager.googleapis.com \
    containerscanning.googleapis.com

Clona el repositorio de GitHub

Clona el repositorio de GitHub.

git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git

Abre el editor de Cloud Shell

7e71f46b6c7b67ca.png

Con el elemento de menú “File / Open Folder”, abre “genai-for-developers”.

Abre el archivo "devai-api/app/routes.py", haz clic con el botón derecho en cualquier parte del archivo y selecciona "Gemini > Explain this"" en el menú contextual.

34054e1fad005ff8.png

Revisa la explicación de Gemini sobre el archivo seleccionado.

f73af988a723142.png

5. Configuración del repositorio y el kit de herramientas de GitLab

En este lab, usarás GitLabToolkit para automatizar la creación de solicitudes de combinación de GitLab.

Descripción general de los toolkits de LangChain

Los kits de herramientas de LangChain son conjuntos de herramientas diseñados para optimizar y mejorar el desarrollo de aplicaciones con LangChain. Ofrecen varias funcionalidades según el kit de herramientas específico, pero, en general, ayudan con lo siguiente:

  • Conexión a fuentes de datos externas: Accede a información de APIs, bases de datos y otras fuentes externas, y úsala en tus aplicaciones de LangChain.
  • Técnicas avanzadas de instrucciones: Utiliza instrucciones prediseñadas o crea instrucciones personalizadas para optimizar las interacciones con los modelos de lenguaje.
  • Creación y administración de cadenas: Crea cadenas complejas con facilidad y adminístralas de manera eficiente.
  • Evaluación y supervisión: Analiza el rendimiento de tus aplicaciones y cadenas de LangChain.

Estos son algunos de los Toolkits de LangChain más populares:

  • Agent Executor Toolkits: Son herramientas para desarrollar agentes que pueden interactuar con el mundo real a través de acciones como la navegación web o la ejecución de código.
  • Kit de herramientas de ingeniería de instrucciones: Una colección de recursos para crear instrucciones eficaces.

Descripción general del kit de herramientas de GitLab

El kit de herramientas de GitLab contiene herramientas que permiten que un agente de LLM interactúe con un repositorio de GitLab. La herramienta es un wrapper para la biblioteca python-gitlab.

El kit de herramientas de GitLab puede realizar las siguientes tareas:

  • Create File: Crea un archivo nuevo en el repositorio.
  • Read File: Lee un archivo del repositorio.
  • Update File: Actualiza un archivo en el repositorio.
  • Create Pull Request: Crea una solicitud de extracción desde la rama de trabajo del bot a la rama base.
  • Get Issues: Recupera problemas del repositorio.
  • Get Issue: Recupera detalles sobre un problema específico.
  • Comment on Issue: Publica un comentario sobre un problema específico.
  • Delete File: Borra un archivo del repositorio.

Configuración del proyecto de GitLab

Abre GitLab, crea un proyecto nuevo y configura el token de acceso al proyecto en "Settings / Access Tokens".

Usa los siguientes detalles:

  • Nombre del token: devai-api-qwiklabs
  • Rol: Maintainer
  • Selecciona permisos: api

c205fd7524c456dc.png

Copia y pega el valor del token de acceso en un archivo temporal de tu laptop, ya que lo usarás en los siguientes pasos.

6. Prepárate para implementar la aplicación en Cloud Run

Regresa al Editor de Cloud Shell y usa una terminal existente o abre una nueva.

941f0c1692037664.png

Configura los detalles del proyecto con los detalles de tu proyecto de Qwiklabs.

Ejemplo: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR-QWIKLABS-PROJECT-ID

Configura el resto de las variables de entorno:

export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api

Configura las variables de entorno necesarias para la integración de GitLab.

export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-token

Para evitar exponer información sensible en la terminal, la práctica recomendada es usar read -s GITLAB_PERSONAL_ACCESS_TOKEN, que es una forma segura de establecer variables de entorno sin que el valor aparezca en el historial de comandos de la consola. Después de ejecutarlo, debes pegar el valor y presionar Intro. También deberás exportar la variable de entorno: export GITLAB_PERSONAL_ACCESS_TOKEN

Este comando requiere que actualices tu ID de usuario y el nombre del repositorio de GitLab.

Ejemplo: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"

119489def27115c8.png

export GITLAB_REPOSITORY="USERID/REPOSITORY"

Configura el resto de las variables de entorno:

export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"

Configuración de registro de LLM de LangSmith

Configura la cuenta si deseas ver la información de seguimiento del agente en LangSmith. De lo contrario, ejecuta los comandos tal como están.

Crea una cuenta de LangSmith y genera una clave de API de servicio en la sección Configuración. https://smith.langchain.com/settings

Configura las variables de entorno necesarias para la integración de LangSmith.

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"

export LANGCHAIN_API_KEY=langchain-service-api-key

Configuración de JIRA

Estos valores no se usan en este lab, por lo que no es necesario que los actualices a los valores específicos de tu proyecto de JIRA antes de ejecutar los comandos.

Configura las variables de entorno necesarias para la implementación del servicio de Cloud Run.

export JIRA_API_TOKEN=jira-token
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true

Crear clave de API

Crea una clave de API nueva en la sección Cloud Console > API y servicios > Credenciales.

Esta clave se usará para autenticar las llamadas a la API de JIRA en la aplicación de Cloud Run.

Para el entorno de producción, configurarías restricciones de aplicación y de API para la clave de API creada. Las restricciones de aplicaciones limitan el uso de una clave de API a sitios web específicos(p.ej., tu instancia de JIRA).

Configura las variables de entorno necesarias para la implementación del servicio de Cloud Run.

export DEVAI_API_KEY=your-api-key

Crea secretos en Secret Manager

En este lab, seguiremos las prácticas recomendadas y usaremos Secret Manager para almacenar y hacer referencia a los valores de los tokens de acceso, la clave de API y la clave de API de LangChain en Cloud Run.

Crea y almacena los secretos necesarios en Secret Manager.

echo -n $DEVAI_API_KEY | \
 gcloud secrets create DEVAI_API_KEY \
 --data-file=-

echo -n $JIRA_API_TOKEN | \
 gcloud secrets create JIRA_API_TOKEN \
 --data-file=-

echo -n $GITLAB_PERSONAL_ACCESS_TOKEN | \
 gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN \
 --data-file=-

echo -n $LANGCHAIN_API_KEY | \
 gcloud secrets create LANGCHAIN_API_KEY \
 --data-file=-

7. Implementa Devai-API en Cloud Run

Verifica que estés en la carpeta correcta.

cd ~/genai-for-developers/devai-api

Implementa la aplicación en Cloud Run.

gcloud run deploy "$SERVICE_NAME" \
  --source=. \
  --region="$LOCATION" \
  --allow-unauthenticated \
  --service-account vertex-client \
  --set-env-vars PROJECT_ID="$PROJECT_ID" \
  --set-env-vars LOCATION="$LOCATION" \
  --set-env-vars GITLAB_URL="$GITLAB_URL" \
  --set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
  --set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
  --set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
  --set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
  --set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
  --set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
  --set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
  --set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
  --update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
  --update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
  --update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
  --update-secrets="DEVAI_API_KEY=DEVAI_API_KEY:latest" \
  --min-instances=1 \
  --max-instances=3

Responde Y para crear el repositorio de Docker de Artifact Registry.

Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in 
region [us-central1] will be created.

Do you want to continue (Y/n)?  y

Revisa el flujo de gcloud run deploy SERVICE_NAME --source=. a continuación. Obtén más información.

5c122a89dd11822e.png

Este comando usa buildpacks y Cloud Build de Google Cloud en segundo plano para compilar automáticamente imágenes de contenedor a partir del código fuente sin tener que instalar Docker en tu máquina ni configurar los paquetes de compilación o Cloud Build. Es decir, el comando único descrito anteriormente hace lo que requeriría el uso de los comandos gcloud builds submit y gcloud run deploy.

Si proporcionaste un Dockerfile(como lo hicimos en este repositorio), Cloud Build lo usará para compilar imágenes de contenedores en lugar de depender de los buildpacks para detectar y compilar automáticamente imágenes de contenedores. Para obtener más información sobre los paquetes de compilación, consulta la documentación.

Revisa los registros de Cloud Build en la consola.

Revisa la imagen de Docker creada en Artifact Registry.

Revisa los detalles de la instancia de Cloud Run en la consola de Cloud.

Aplicación de prueba

Ejecuta el comando curl para probar el extremo.

Actualiza la URL de tu servicio de Cloud Run antes de ejecutar el comando.

Ejemplo:

curl -H "X-devai-api-key: $DEVAI_API_KEY" https://devai-api-1110000001.us-central1.run.app/test

8. Automatiza la implementación de historias

Forge es una plataforma que permite a los desarrolladores compilar apps que se integran con productos de Atlassian, como Jira, Confluence, Compass y Bitbucket.

eda6f59ff15df25e.png

Instala la CLI de Forge

Ejecuta el siguiente comando para instalar la CLI de Forge de forma global:

npm install -g @forge/cli

En este lab, usaremos variables de entorno para acceder.

e4e4e59cf8622e3f.png

Configura el proyecto de JIRA

Usa tu cuenta personal para crear o ver proyectos de JIRA.

Revisa tus proyectos existentes de JIRA: https://admin.atlassian.com/

Crea un proyecto nuevo de JIRA con tu cuenta personal.

Ve a https://team.atlassian.com/your-work, haz clic en 8654143154cb8665.png y, luego, selecciona 47b253090a08932.png. Luego, selecciona "JIRA Software" y, luego, "Probar ahora". Sigue las indicaciones para completar la creación del proyecto o sitio.

5bab2a96e3b81383.png

Selecciona JIRA Software.

785bc4d8bf920403.png

Crea un proyecto nuevo

8a6e7cdc8224ffa0.png

Crea un token de la API de Atlassian

Crea o usa un token de la API de Atlassian existente para acceder a la CLI.

La CLI usa tu token cuando ejecutas comandos.

  1. Ve a https://id.atlassian.com/manage/api-tokens.
  2. Haz clic en Crear token de API.
  3. Ingresa una etiqueta para describir tu token de API. Por ejemplo, forge-api-token.
  4. Haz clic en Crear.
  5. Haz clic en Copiar al portapapeles y cierra el diálogo.

Configura los parámetros del entorno de Forge

Regresa a la consola de Cloud y ejecuta los siguientes comandos en la terminal.

Accede a la CLI de Forge para comenzar a usar los comandos de Forge.

Establece tu dirección de correo electrónico de JIRA o FORGE. Reemplaza este texto por tu dirección de correo electrónico.

export FORGE_EMAIL=your-email

Establece el token de la API de Forge. Reemplaza este valor por tu token de API de JIRA.

export FORGE_API_TOKEN=your-jira-api-token

Ejecuta el siguiente comando para probar la CLI de Forge. Responde "No" cuando se te solicite recopilar estadísticas.

forge settings set usage-analytics false

Comprueba si accediste a tu cuenta.

forge whoami

Resultado de muestra.

Logged in as John Green (johngreen@email.com)
Account ID: 123090:aaabbcc-076a-455c-99d0-d1aavvccdd

Crea una aplicación de Forge

Verifica que estés en la carpeta "~/genai-for-developers".

Ejecuta el comando para crear una aplicación de Forge.

forge create

Usa los siguientes valores cuando se te solicite:

  • Nombre de la app: devai-jira-ui-qwiklabs
  • Selecciona una categoría: UI Kit
  • Selecciona un producto: Jira
  • Selecciona una plantilla: jira-issue-panel

bc94e2da059f15cf.png

Cambia a la carpeta de la aplicación.

cd devai-jira-ui-qwiklabs/

Ejecuta el comando para instalar las dependencias.

npm install

Ejecuta el comando de implementación.

forge deploy

Resultado de muestra:

Deploying your app to the development environment.
Press Ctrl+C to cancel.

Running forge lint...
No issues found.

✔ Deploying devai-jira-ui-qwiklabs to development...

ℹ Packaging app files
ℹ Uploading app
ℹ Validating manifest
ℹ Snapshotting functions
ℹ Deploying to environment

✔ Deployed

Deployed devai-jira-ui-qwiklabs to the development environment.

Instala la aplicación.

forge install

Usa los siguientes valores cuando se te solicite:

  • Selecciona un producto: Jira
  • Ingresa la URL del sitio: your-domain.atlassian.net

Resultado de muestra:

Select the product your app uses.

? Select a product: Jira

Enter your site. For example, your-domain.atlassian.net

? Enter the site URL: genai-for-developers.atlassian.net

Installing your app onto an Atlassian site.
Press Ctrl+C to cancel.

? Do you want to continue? Yes

✔ Install complete!

Your app in the development environment is now installed in Jira on genai-for-developers.atlassian.net

Abre tu sitio de JIRA y crea una nueva tarea de JIRA con la siguiente descripción:

Create HTML, CSS and JavaScript using React.js framework to implement Login page with username and password fields, validation and documentation. Provide complete implementation, do not omit anything.

Cuando abras la tarea, verás el botón "devai-jira-ui-qwiklabs".

Haz clic en el botón y revisa los cambios en la IU.

a64378e775125654.png

Visualiza los registros del backend de Forge.

forge logs

Consola para desarrolladores de Atlassian

También puedes ver y administrar las apps implementadas en la Consola para desarrolladores de Atlassian.

10281496d8181597.png

Revisa los registros: Cambia al entorno de Development.

d5c3b1a18dee166e.png

Revisa el manifiesto y el código fuente de la aplicación de Forge

Abre el archivo "devai-jira-ui-qwiklabs/manifest.yml" y usa Gemini Code Assist para explicar la configuración.

8710dc7cd343a6a4.png

Revisa la explicación.

e4c9052a0337527d.png

Abre los siguientes archivos y pídele a Gemini Code Assist que te los explique:

  • devai-jira-ui-qwiklabs/src/frontend/index.jsx
  • devai-jira-ui-qwiklabs/src/resolvers/index.js

3283420f190cda21.png

Actualiza la app de Forge con el extremo de Cloud Run de la API de DevAI

Verifica si se configuró el ID del proyecto de GCP:

gcloud config get project

Si no es así, configura tu proyecto de GCP con el ID del proyecto de la página del lab de Qwiklabs:

Ejemplo: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

Establece la URL del servicio de Cloud Run:

export DEVAI_API_URL=$(gcloud run services list --filter="(devai-api)" --format="value(URL)")

forge variables set DEVAI_API_URL $DEVAI_API_URL

Establece la clave de la API de DEVAI:

export DEVAI_API_KEY=api-key-that-you-created

forge variables set --encrypt DEVAI_API_KEY $DEVAI_API_KEY

Para confirmar, ejecuta el siguiente comando:

forge variables list

Resultado de ejemplo

f63a751f0d6211ff.png

Actualiza el manifiesto y el código de la aplicación de Forge

Puedes encontrar estos fragmentos de código en el repo, en la carpeta sample-devai-jira-ui.

Abre el archivo de manifiesto en el editor: devai-jira-ui-qwiklabs/manifest.yml

Agrega las siguientes líneas al final del archivo y reemplaza el extremo de Cloud Run por el que implementaste.

permissions:
  scopes:
    - read:jira-work
    - write:jira-work
  external:
    fetch:
      client:
        - devai-api-gjerpi6qqq-uc.a.run.app/create-gitlab-mr # replace with YOUR CLOUD RUN URL

Abre el archivo resolvers/index en el editor: devai-jira-ui-qwiklabs/src/resolvers/index.js

Agrega las siguientes líneas después de la función getText existente.

resolver.define('getApiKey', (req) => {
  return process.env.DEVAI_API_KEY;
});

resolver.define('getDevAIApiUrl', (req) => {
  return process.env.DEVAI_API_URL;
});

Abre el archivo frontend/index en el editor: devai-jira-ui-qwiklabs/src/frontend/index.jsx

Reemplaza index.jsx con el siguiente contenido. Actualiza el vínculo a tu ID de usuario o repositorio de GitLab.

Hay dos lugares en los que debes actualizar YOUR-GIT-USERID y YOUR-GIT-REPO.

Busca esta línea en el archivo y realiza los cambios:

https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests

import React from 'react';
import ForgeReconciler, { Text, Link, useProductContext } from '@forge/react';
import { requestJira } from '@forge/bridge';
import { invoke } from '@forge/bridge';
import api, { route, assumeTrustedRoute } from '@forge/api';

const devAIApiKey = await invoke("getApiKey")
const devAIApiUrl = await invoke("getDevAIApiUrl")


const App = () => {
  const context = useProductContext();

  const [description, setDescription] = React.useState();

  const fetchDescriptionForIssue = async () => {
    const issueId = context?.extension.issue.id;
  
    const res = await requestJira(`/rest/api/2/issue/${issueId}`);
    const data = await res.json();
    
    const bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;

    const generateRes = await api.fetch(devAIApiUrl+'/create-gitlab-mr,
      {
        body: bodyGenerateData,
        method: 'post',
        headers: {
          'Content-Type': 'application/json',
          'x-devai-api-key': devAIApiKey,
         },
      }
    )

    const resData = await generateRes.text();

    // Add link to the GitLab merge request page as a comment
    await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      },
      body: `{"body": "[GitLab Merge Request|https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests]"}`
    });


    return "Response will be added as a comment. Please refresh in a few moments.";
  };

  React.useEffect(() => {
    if (context) {
      fetchDescriptionForIssue().then(setDescription);
    }
  }, [context]);

  return (
    <>
      <Text>{description}</Text>
      <Link href='https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests' openNewTab={true}>GitLab Merge Request</Link>
    </>
  );
};

ForgeReconciler.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

Vuelve a implementar la aplicación de Forge

Agrega dependencias en el archivo package.json:

"@forge/api": "4.0.0",

Ejecuta el siguiente comando para instalar las dependencias:

npm install

Implementa la aplicación actualizada:

forge deploy

Resultado de muestra:

ℹ Uploading app
ℹ Validating manifest
ℹ Snapshotting functions
ℹ Deploying to environment

✔ Deployed

Deployed devai-jira-ui-qwiklabs to the development environment.

We've detected new scopes or egress URLs in your app.
Run forge install --upgrade and restart your tunnel to put them into effect.

Instala la aplicación actualizada:

forge install --upgrade

ef17c7da9b2962d8.png

Resultado de muestra:

Upgrading your app on the Atlassian site.

Your app will be upgraded with the following additional scopes:
- read:jira-work
- write:jira-work

Your app will exchange data with the following urls:
- devai-api-7su2ctuqpq-uc.a.run.app

? Do you want to continue? Yes

✔ Upgrade complete!

Your app in the development environment is now the latest in Jira on genai-for-developers.atlassian.net.

Prueba la aplicación de Forge

Abre una tarea de JIRA existente o crea una nueva en tu proyecto de JIRA.

Deberás quitar el panel anterior si ya se agregó.

Haz clic en "..." y selecciona Quitar en el menú. Después, puedes volver a hacer clic en el botón.

460503e8b2014b52.png

Revisa los comentarios de Jira

Una vez que recibas una respuesta de la API de DEVAI, se agregará un comentario al problema de JIRA.

  • Vínculo de solicitud de combinación de GitLab

Alterna entre las pestañas “History” y “Comments” para actualizar la vista.

9539d2bd3cbdad28.png

Verifica la solicitud de combinación de GitLab

Abre GitLab y busca solicitudes de combinación nuevas en tu proyecto.

4c2345a89bfe71ee.png

fa3a552923cd70f1.png

Registros de LLM de LangSmith

Si configuraste el registro de LLM, abre el portal de LangSmith y revisa el registro de LLM para la llamada de creación de la solicitud de combinación de GitLab.

Es un ejemplo de registro de LLM de LangSmith.

1ae0f88ab885f69.png

9. Envía tus cambios al repo de GitHub

(SECCIÓN OPCIONAL)

Ve al sitio web de GitHub y crea un repositorio nuevo para enviar los cambios de este lab a tu repositorio personal.

Vuelve a Cloud Console y configura el nombre de usuario y el correo electrónico de Git en la terminal.

Actualiza los valores antes de ejecutar los comandos.

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

Genera una clave SSH y agrégala al repositorio de GitHub.

Actualiza tu correo electrónico antes de ejecutar los comandos.

No ingreses la frase de contraseña y presiona Intro varias veces para completar la generación de la clave.

ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"

ssh-add ~/.ssh/id_ed25519

cat ~/.ssh/id_ed25519.pub

Agrega la clave pública generada a tu cuenta de GitHub.

Abre https://github.com/settings/keys y haz clic en "New SSH key".

Para el nombre de la clave, usa "qwiklabs-key" y copia y pega el resultado del último comando.

Regresa a la terminal, confirma y envía los cambios.

cd ~/genai-for-developers

git remote rm origin

Configura el origen remoto con el repositorio que se creó anteriormente.

Reemplaza con la URL de tu repositorio.

git remote add origin git@github.com:YOUR-GITHUB-USERID/YOUR-GITHUB-REPO.git

Agrega, confirma y envía los cambios.

git add .

git commit -m "lab changes"

git push -u origin main

10. ¡Felicitaciones!

¡Felicitaciones! Completaste el lab.

Temas abordados:

  • Cómo implementar aplicaciones de Cloud Run para integrarlas en las APIs de Gemini
  • Cómo crear e implementar una app de Atlassian Forge para JIRA
  • Cómo usar agentes de ReAct de LangChain para automatizar tareas de GitLab
  • Cómo revisar los registros de LLM en LangSmith

Pasos siguientes:

  • Pronto 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.