Реализация пользовательских историй JIRA с помощью GenAI

1. Обзор

В этой лабораторной работе вы разработаете решение для автоматизации реализации пользовательских историй в JIRA с помощью GenAI.

a4ba5d8788dc40.png

Что вы узнаете

Лаборатория состоит из нескольких основных частей:

  • Разверните приложение Cloud Run для интеграции с API Gemini.
  • Создайте и разверните приложение Atlassian Forge для JIRA.
  • Используйте LangChain ReAct Agents для автоматизации задач GitLab.

Предварительные требования

  • Для выполнения этой лабораторной работы предполагается знакомство со средами Cloud Console и Cloud Shell.

2. Настройка и требования

Настройка облачного проекта

  1. Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Название проекта — это отображаемое имя участников данного проекта. Это строка символов, не используемая API Google. Вы всегда можете его изменить.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (его нельзя изменить после установки). Консоль Cloud автоматически генерирует уникальную строку; обычно вам неважно, какая она. В большинстве практических заданий вам потребуется указать идентификатор вашего проекта (обычно обозначается как PROJECT_ID ). Если сгенерированный идентификатор вас не устраивает, вы можете сгенерировать другой случайный идентификатор. В качестве альтернативы вы можете попробовать свой собственный и посмотреть, доступен ли он. После этого шага его нельзя изменить, и он сохраняется на протяжении всего проекта.
  • К вашему сведению, существует третье значение — номер проекта , которое используется некоторыми API. Подробнее обо всех трех значениях можно узнать в документации .
  1. Далее вам потребуется включить оплату в консоли Cloud для использования ресурсов/API Cloud. Выполнение этого практического задания не потребует больших затрат, если вообще потребует. Чтобы отключить ресурсы и избежать дополнительных расходов после завершения этого урока, вы можете удалить созданные ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .

Настройка среды

Откройте чат Близнецов.

bc3c899ac8bcf488.png

Или введите "Спроси Близнецов" в строку поиска.

e1e9ad314691368a.png

Включите Gemini для Google Cloud API:

990a0ceea7d05531.png

Нажмите « Start chatting » и ответьте на один из примеров вопросов или введите свой собственный вопрос, чтобы попробовать.

ed120d672468b412.png

Варианты для выполнения:

  • Опишите Cloud Run в 5 ключевых пунктах.
  • Вы — менеджер по продукту Google Cloud Run, объясните студенту принцип работы Cloud Run в 5 кратких ключевых моментах.
  • Вы — менеджер по продукту Google Cloud Run. Объясните Cloud Run сертифицированному разработчику Kubernetes в 5 кратких ключевых моментах.
  • Вы — менеджер по продукту Google Cloud Run. Объясните старшему разработчику в 5 кратких ключевых моментах, когда следует использовать Cloud Run, а когда GKE.

Ознакомьтесь с руководством по составлению тем , чтобы узнать больше о том, как писать более качественные темы.

Как Gemini для Google Cloud использует ваши данные

Обязательства Google в отношении конфиденциальности

Google одной из первых в отрасли опубликовала обязательство по обеспечению конфиденциальности в сфере ИИ/машинного обучения , в котором изложена наша убежденность в том, что клиенты должны иметь высочайший уровень безопасности и контроля над своими данными , хранящимися в облаке.

Данные, которые вы предоставляете и получаете

Вопросы, которые вы задаете Gemini, включая любую входную информацию или код, который вы отправляете Gemini для анализа или завершения, называются подсказками. Ответы или завершение кода, которые вы получаете от Gemini, называются ответами. Gemini не использует ваши подсказки или свои ответы в качестве данных для обучения своих моделей .

Шифрование подсказок

При отправке запросов в Gemini ваши данные шифруются во время передачи и используются в качестве входных данных для базовой модели в Gemini.

Программные данные сгенерированы из Gemini

Gemini обучается на собственном коде Google Cloud, а также на выбранном коде сторонних разработчиков. Вы несете ответственность за безопасность, тестирование и эффективность своего кода , включая любое автозавершение, генерацию или анализ кода, которые предлагает вам Gemini.

Узнайте больше о том, как Google обрабатывает ваши запросы.

3. Варианты для проверки подсказок.

У вас есть несколько вариантов для проверки подсказок.

Vertex AI Studio — это часть платформы Vertex AI от Google Cloud, специально разработанная для упрощения и ускорения разработки и использования моделей генеративного искусственного интеллекта.

Google AI Studio — это веб-инструмент для прототипирования и экспериментирования с оперативной разработкой и API Gemini.

Веб-приложение Google Gemini (gemini.google.com) — это веб-инструмент, разработанный для того, чтобы помочь вам изучить и использовать возможности моделей искусственного интеллекта Google Gemini.

4. Рассмотрение заявки

Создать учетную запись службы

Вернитесь в консоль Google Cloud и активируйте Cloud Shell, щелкнув значок справа от строки поиска.

3e0c761ca41f315e.png

В открытом терминале выполните следующие команды для создания новой учетной записи службы и ключей.

Вы будете использовать этот сервисный аккаунт для выполнения вызовов API к Vertex AI Gemini API из приложения Cloud Run.

Настройте параметры проекта, используя данные вашего проекта Qwiklabs.

Пример: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

Создайте учетную запись службы.

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"

Роли, связанные с грантами.

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"

Если появится запрос на авторизацию, нажмите «Авторизовать», чтобы продолжить.

6356559df3eccdda.png

Включите необходимые сервисы для использования API Vertex AI и чата Gemini.

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

Включите необходимые сервисы для использования API Vertex AI и чата 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

Клонировать репозиторий GitHub

Клонируйте репозиторий GitHub.

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

Open Cloud Shell Editor

7e71f46b6c7b67ca.png

С помощью пункта меню « File / Open Folder » откройте папку « genai-for-developers ».

Откройте файл " devai-api/app/routes.py ", затем щелкните правой кнопкой мыши в любом месте файла и выберите в контекстном меню " Gemini > Explain this" .

34054e1fad005ff8.png

Ознакомьтесь с пояснениями Gemini к выбранному файлу.

f73af988a723142.png

5. Настройка репозитория и инструментария GitLab.

В этой лабораторной работе вы будете использовать GitLabToolkit для автоматизации создания запросов на слияние в GitLab.

Обзор наборов инструментов LangChain

Наборы инструментов LangChain — это комплекты инструментов, предназначенные для оптимизации и улучшения разработки приложений с использованием LangChain. В зависимости от конкретного набора инструментов они предлагают различные функции, но в целом помогают в следующем:

  • Подключение к внешним источникам данных : Получайте доступ к информации из API, баз данных и других внешних источников и интегрируйте ее в свои приложения LangChain.
  • Расширенные методы подсказок : используйте готовые подсказки или создавайте собственные для оптимизации взаимодействия с языковыми моделями.
  • Создание и управление цепочками : С легкостью создавайте сложные цепочки и эффективно управляйте ими.
  • Оценка и мониторинг : анализируйте производительность ваших приложений и цепочек LangChain.

К числу популярных наборов инструментов для анализа цепей языков относятся:

  • Наборы инструментов для разработки агентов : Инструменты для создания агентов, способных взаимодействовать с реальным миром посредством таких действий, как просмотр веб-страниц или выполнение кода.
  • Набор инструментов для разработки эффективных подсказок : коллекция ресурсов для создания эффективных подсказок.

Обзор инструментария GitLab

Инструментарий Gitlab содержит средства, позволяющие агенту LLM взаимодействовать с репозиторием Gitlab. Этот инструмент представляет собой обертку для библиотеки python-gitlab .

Инструментарий GitLab может выполнять следующие задачи:

  • Создать файл — создает новый файл в репозитории.
  • Функция «Чтение файла » читает файл из репозитория.
  • Обновить файл — обновляет файл в репозитории.
  • Создать запрос на слияние (Pull Request) — создает запрос на слияние из рабочей ветки бота в базовую ветку.
  • Get Issues - извлекает задачи из репозитория.
  • Get Issue - получает подробную информацию о конкретной проблеме.
  • Комментарий к вопросу — оставляет комментарий к конкретному вопросу.
  • Удаление файла - удаляет файл из репозитория.

Настройка проекта GitLab

Откройте GitLab , создайте новый проект и настройте токен доступа к проекту в разделе « Settings / Access Tokens ».

Используйте следующие данные:

  • Имя токена: devai-api-qwiklabs
  • Роль: Maintainer
  • Выберите области действия: api

c205fd7524c456dc.png

Скопируйте и вставьте значение токена доступа во временный файл на вашем ноутбуке; оно понадобится на следующих шагах.

6. Подготовка к развертыванию приложения в Cloud Run.

Вернитесь в редактор Cloud Shell и используйте существующий или откройте новый терминал.

941f0c1692037664.png

Настройте параметры проекта, используя данные вашего проекта Qwiklabs.

Пример: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR-QWIKLABS-PROJECT-ID

Установите остальные переменные среды:

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

Установите переменные среды, необходимые для интеграции с GitLab.

export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-token

Чтобы избежать раскрытия конфиденциальной информации в терминале, рекомендуется использовать read -s GITLAB_PERSONAL_ACCESS_TOKEN Это безопасный способ установки переменных окружения без отображения их значений в истории команд консоли. После выполнения команды необходимо вставить значение и нажать Enter. Также потребуется экспортировать переменную окружения: export GITLAB_PERSONAL_ACCESS_TOKEN

Для выполнения этой команды необходимо обновить ваш идентификатор пользователя GitLab и имя репозитория.

Пример: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"

119489def27115c8.png

export GITLAB_REPOSITORY="USERID/REPOSITORY"

Установите остальные переменные среды:

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

Конфигурация трассировки LangSmith LLM

Настройте учетную запись, если хотите просматривать информацию о трассировке агента в LangSmith, в противном случае выполняйте команды как есть.

Создайте учетную запись LangSmith и сгенерируйте ключ API сервиса в разделе «Настройки». https://smith.langchain.com/settings

Установите переменные среды, необходимые для интеграции с LangSmith.

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

export LANGCHAIN_API_KEY=langchain-service-api-key

конфигурация JIRA

В данной лабораторной работе эти значения не используются, поэтому вам не нужно обновлять их в соответствии со значениями вашего конкретного проекта JIRA перед выполнением команд.

Установите переменные среды, необходимые для развертывания сервиса 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

Создать ключ API

Создайте новый ключ API в разделе Cloud Console / API & Services / Credentials.

Этот ключ будет использоваться для аутентификации вызовов API JIRA к приложению Cloud Run.

В производственной среде необходимо настроить ограничения для приложений и API для созданного ключа API. Ограничения для приложений ограничивают использование ключа API определенными веб-сайтами (например, вашим экземпляром JIRA).

Установите переменные среды, необходимые для развертывания сервиса Cloud Run.

export DEVAI_API_KEY=your-api-key

Создавайте секреты в Secret Manager.

В этой лабораторной работе мы следуем передовым практикам и используем Secret Manager для хранения и обращения к значениям токенов доступа, ключа API и ключа API LangChain в Cloud Run.

Создавайте и храните необходимые секреты в 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. Разверните Devai-API в облаке.

Убедитесь, что вы находитесь в правильной папке.

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

Разверните приложение в 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

Ответьте Y , чтобы создать репозиторий Docker в реестре артефактов.

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

Ознакомьтесь с приведенным ниже алгоритмом gcloud run deploy SERVICE_NAME --source=. Узнайте больше .

5c122a89dd11822e.png

В фоновом режиме эта команда использует buildpacks и Cloud Build от Google Cloud для автоматической сборки образов контейнеров из вашего исходного кода без необходимости установки Docker на ваш компьютер или настройки buildpacks или Cloud Build. То есть, описанная выше единственная команда делает то, что в противном случае потребовало бы команд gcloud builds submit и gcloud run deploy .

Если вы предоставили Dockerfile (что мы и сделали в этом репозитории), то Cloud Build будет использовать его для сборки образов контейнеров, а не полагаться на buildpacks для автоматического обнаружения и сборки образов контейнеров. Чтобы узнать больше о buildpacks, ознакомьтесь с документацией .

Просмотрите журналы Cloud Build в консоли .

В реестре артефактов создан образ Docker для проверки.

Просмотрите подробные сведения об экземпляре Cloud Run в консоли Cloud .

Тестовое приложение

Проверьте работоспособность конечной точки, выполнив команду curl.

Перед выполнением команды укажите URL-адрес вашей службы Cloud Run.

Пример:

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

8. Автоматизация реализации историй.

Forge — это платформа, которая позволяет разработчикам создавать приложения, интегрирующиеся с продуктами Atlassian, такими как Jira, Confluence, Compass и Bitbucket.

eda6f59ff15df25e.png

Установите Forge CLI.

Установите Forge CLI глобально, выполнив команду:

npm install -g @forge/cli

В этой лабораторной работе мы будем использовать переменные среды для входа в систему.

e4e4e59cf8622e3f.png

Настройка проекта JIRA

Используйте свой личный аккаунт для создания/просмотра проектов в JIRA.

Просмотрите свои существующие проекты в JIRA: https://admin.atlassian.com/

Создайте новый проект JIRA, используя свой личный аккаунт.

Перейдите по ссылке https://team.atlassian.com/your-work и нажмите 8654143154cb8665.png а затем выберите 47b253090a08932.png После этого выберите «JIRA Software» — «Попробовать сейчас». Следуйте инструкциям, чтобы завершить создание проекта/сайта.

5bab2a96e3b81383.png

Выберите JIRA Software.

785bc4d8bf920403.png

Создать новый проект.

8a6e7cdc8224ffa0.png

Создать токен API Atlassian

Для входа в CLI создайте или используйте существующий токен API Atlassian.

Интерфейс командной строки использует ваш токен при выполнении команд.

  1. Перейдите по ссылке https://id.atlassian.com/manage/api-tokens .
  2. Нажмите «Создать API-токен» .
  3. Введите метку для описания вашего API-токена. Например, forge-api-token.
  4. Нажмите «Создать» .
  5. Нажмите «Скопировать в буфер обмена» и закройте диалоговое окно.

Настройка параметров среды Forge

Вернитесь в Cloud Console и выполните приведенные ниже команды в терминале.

Войдите в интерфейс командной строки Forge, чтобы начать использовать команды Forge.

Укажите свой адрес электронной почты для JIRA/FORGE. Замените на свой адрес электронной почты.

export FORGE_EMAIL=your-email

Установите токен API Forge. Замените на свой токен API JIRA.

export FORGE_API_TOKEN=your-jira-api-token

Протестируйте Forge CLI, выполнив команду ниже. Ответьте « No », когда вас попросят собрать аналитические данные.

forge settings set usage-analytics false

Проверьте, вошли ли вы в систему.

forge whoami

Пример выходных данных.

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

Создать приложение Forge

Убедитесь, что вы находитесь в папке " ~/genai-for-developers ".

Выполните команду для создания приложения Forge.

forge create

При появлении запроса используйте следующие значения:

  • Имя приложения: devai-jira-ui-qwiklabs
  • Выберите категорию: UI Kit
  • Выберите продукт: Jira
  • Выберите шаблон: jira-issue-panel

bc94e2da059f15cf.png

Перейдите в папку приложения.

cd devai-jira-ui-qwiklabs/

Выполните команду для установки зависимостей.

npm install

Выполните команду развертывания.

forge deploy

Пример выходных данных:

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.

Установите приложение.

forge install

При появлении запроса используйте следующие значения:

  • Выберите продукт: Jira
  • Введите URL-адрес сайта: your-domain.atlassian.net

Пример выходных данных:

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

Откройте свой сайт JIRA и создайте новую задачу JIRA со следующим описанием:

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.

Когда вы откроете задачу, вы увидите кнопку " devai-jira-ui-qwiklabs ".

Нажмите кнопку и просмотрите изменения в пользовательском интерфейсе.

a64378e775125654.png

Просмотрите журналы работы бэкэнда Forge.

forge logs

Консоль разработчика Atlassian

Также вы можете просматривать и управлять развернутыми приложениями в консоли разработчика Atlassian .

10281496d8181597.png

Просмотрите журналы — переключитесь в среду Development .

d5c3b1a18dee166e.png

Проанализируйте манифест и исходный код приложения Forge.

Откройте файл " devai-jira-ui-qwiklabs/manifest.yml " и воспользуйтесь Gemini Code Assist для получения пояснений к конфигурации.

8710dc7cd343a6a4.png

См. пояснение.

e4c9052a0337527d.png

Откройте следующие файлы и попросите Gemini Code Assist дать им пояснения:

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

3283420f190cda21.png

Обновите приложение Forge с помощью конечной точки DevAI API Cloud Run.

Проверьте, задан ли идентификатор проекта GCP:

gcloud config get project

В противном случае, укажите свой проект GCP, используя идентификатор проекта со страницы лаборатории Qwiklabs:

Пример: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

Установите URL-адрес службы 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

Установите ключ API DEVAI:

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

forge variables set --encrypt DEVAI_API_KEY $DEVAI_API_KEY

Подтвердите выполнением приведенной ниже команды:

forge variables list

Пример выходных данных

f63a751f0d6211ff.png

Обновите манифест и код приложения Forge.

Эти фрагменты кода можно найти в репозитории в папке sample-devai-jira-ui .

Откройте файл манифеста в редакторе: devai-jira-ui-qwiklabs/manifest.yml

Добавьте в конец файла следующие строки — замените конечную точку Cloud Run на ту, которую вы развернули.

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

Откройте файл resolvers/index в редакторе: devai-jira-ui-qwiklabs/src/resolvers/index.js

Добавьте строки ниже после существующей функции getText .

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

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

Откройте файл frontend/index в редакторе: devai-jira-ui-qwiklabs/src/frontend/index.jsx

Замените содержимое файла index.jsx на приведенное ниже. Обновите ссылку на ваш идентификатор пользователя/репозиторий GitLab.

Необходимо обновить два параметра: YOUR-GIT-USERID и YOUR-GIT-REPO.

Найдите в файле эту строку и внесите изменения:

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

Повторное развертывание приложения Forge

Добавьте зависимости в файл package.json :

"@forge/api": "4.0.0",

Выполните команду для установки зависимостей:

npm install

Разверните обновленное приложение:

forge deploy

Пример выходных данных:

ℹ 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.

Установите обновлённое приложение:

forge install --upgrade

ef17c7da9b2962d8.png

Пример выходных данных:

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.

Тестовое приложение Forge

Откройте существующую или создайте новую задачу JIRA в своем проекте JIRA.

Если предыдущая панель уже была добавлена, вам потребуется её удалить.

Нажмите " ... " и выберите "Удалить" в меню. После этого вы можете снова нажать на кнопку.

460503e8b2014b52.png

Проверьте комментарии в Jira.

После получения ответа от API DEVAI к задаче в JIRA будет добавлен комментарий.

  • Ссылка на запрос на слияние в GitLab

Для обновления отображения переключайтесь между вкладками « History » и « Comments ».

9539d2bd3cbdad28.png

Проверить запрос на слияние в GitLab

Откройте GitLab и проверьте наличие новых запросов на слияние в вашем проекте.

4c2345a89bfe71ee.png

fa3a552923cd70f1.png

Траектории LLM ЛангСмита

Если вы настроили трассировку LLM, откройте портал LangSmith и просмотрите трассировку LLM для вызова создания запроса на слияние в GitLab.

Пример трассировки LLM от LangSmith.

1ae0f88ab885f69.png

9. Отправьте изменения в репозиторий GitHub.

(ДОПОЛНИТЕЛЬНЫЙ РАЗДЕЛ)

Перейдите на сайт GitHub и создайте новый репозиторий, чтобы отправлять изменения для этой лабораторной работы в свой личный репозиторий.

Вернитесь в Cloud Console и в терминале укажите имя пользователя и адрес электронной почты Git.

Перед выполнением команд обновите значения.

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

Сгенерируйте SSH-ключ и добавьте его в репозиторий GitHub.

Обновите свой адрес электронной почты перед выполнением команд.

Не вводите парольную фразу и нажимайте Enter несколько раз, чтобы завершить генерацию ключа.

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

ssh-add ~/.ssh/id_ed25519

cat ~/.ssh/id_ed25519.pub

Добавьте сгенерированный открытый ключ в свой аккаунт GitHub.

Откройте https://github.com/settings/keys и нажмите " New SSH key ".

В качестве имени ключа используйте " qwiklabs-key " и скопируйте/вставьте вывод последней команды.

Вернитесь в терминал, зафиксируйте и отправьте изменения.

cd ~/genai-for-developers

git remote rm origin

Укажите удаленный источник, используя созданный выше репозиторий.

Замените на URL вашего репозитория.

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

Добавьте, зафиксируйте и отправьте изменения.

git add .

git commit -m "lab changes"

git push -u origin main

10. Поздравляем!

Поздравляем, вы завершили лабораторную работу!

Что мы рассмотрели:

  • Как развернуть приложения Cloud Run для интеграции с API Gemini.
  • Как создать и развернуть приложение Atlassian Forge для JIRA.
  • Как использовать агенты LangChain ReAct для автоматизации задач GitLab.
  • Как проверять результаты LLM-тестирования в LangSmith.

Что дальше:

  • Впереди еще больше практических занятий!

Уборка

Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий эти ресурсы, либо сохраните проект и удалите отдельные ресурсы.

Удаление проекта

Самый простой способ избежать выставления счетов — удалить проект, созданный для этого урока.

©2024 Google LLC. Все права защищены. Google и логотип Google являются товарными знаками Google LLC. Все остальные названия компаний и продуктов могут являться товарными знаками соответствующих компаний, с которыми они связаны.