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

1. Обзор

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

a4ba5d8788dc40.png

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

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

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

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

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

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

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как PROJECT_ID ). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта.
  • К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи 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 и объясните старшему разработчику, когда вы будете использовать 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) — это веб-инструмент, призванный помочь вам изучить и использовать возможности моделей искусственного интеллекта Gemini от Google.

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

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

Вернитесь в Google Cloud Console и активируйте 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

Открыть редактор Cloud Shell

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.

Некоторые популярные наборы инструментов LangChain включают:

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

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

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

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

  • Создать файл – создает новый файл в репозитории.
  • Read File – читает файл из репозитория.
  • Обновить файл — обновляет файл в репозитории.
  • Создать запрос на включение — создает запрос на включение из рабочей ветки бота в базовую ветку.
  • Get Issue s — извлекает задачи из репозитория.
  • Получить проблему — получает подробную информацию о конкретной проблеме.
  • Комментарий к проблеме — публикует комментарий по конкретной проблеме.
  • Удалить файл – удаляет файл из репозитория.

Настройка проекта 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 в Cloud Run

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

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

Просмотрите gcloud run deploy SERVICE_NAME --source=. поток ниже. Узнать больше .

5c122a89dd11822e.png

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

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

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

Просмотрите созданный образ Docker в реестре артефактов .

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

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

Проверьте конечную точку, выполнив команду 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» — «Попробовать сейчас». Следуйте инструкциям для завершения создания проекта/сайта.

5bab2a96e3b81383.png

Выберите Программное обеспечение JIRA.

785bc4d8bf920403.png

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

8a6e7cdc8224ffa0.png

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

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

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

  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

Установите токен Forge API. Замените своим токеном 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 ».

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

а64378e775125654.png

Просмотр журналов серверной части Forge.

forge logs

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

Вы также можете просматривать и управлять развернутыми приложениями в Atlassian Developer Console .

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

Откройте файл резольверов/индекса в редакторе: 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;
});

Откройте файл интерфейса/индекса в редакторе: 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

Как только вы получите ответ от DEVAI API, к проблеме JIRA будет добавлен комментарий.

  • Ссылка на мерж-реквест GitLab

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

9539d2bd3cbdad28.png

Проверьте мерж-реквест GitLab

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

4c2345a89bfe71ee.png

fa3a552923cd70f1.png

LangSmith LLM следы

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

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

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 за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий ресурсы, либо сохраните проект и удалите отдельные ресурсы.

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

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

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