1. Обзор
В ходе этой лабораторной работы вы создадите решение для автоматизации реализации историй использования JIRA с помощью GenAI.
Что вы узнаете
Лаборатория состоит из нескольких основных частей:
- Разверните приложение Cloud Run для интеграции с API Gemini.
- Создайте и разверните приложение Atlassian Forge для JIRA.
- Агенты LangChain ReAct для автоматизации задач GitLab
Предварительные условия
- Эта лабораторная работа предполагает знакомство со средами Cloud Console и Cloud Shell.
2. Настройка и требования
Настройка облачного проекта
- Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
- Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как
PROJECT_ID
). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта. - К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Настройка среды
Откройте чат Близнецов.
Или введите «Спросить Близнецов» в строке поиска.
Включите Cloud AI Companion API:
Нажмите « Start chatting
» и ответьте на один из примеров вопросов или введите собственное приглашение, чтобы попробовать его.
Предлагает попробовать:
- Объясните 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.
- Веб-приложение Gemini (gemini.google.com)
Веб-приложение Google Gemini (gemini.google.com) — это веб-инструмент, разработанный, чтобы помочь вам изучить и использовать возможности моделей искусственного интеллекта Gemini от Google.
- Мобильное приложение Google Gemini для Android и приложение Google для iOS
4. (НЕОБЯЗАТЕЛЬНЫЙ РАЗДЕЛ) Создать учетную запись службы.
Эти шаги были выполнены во время лабораторной настройки — вам не нужно их выполнять.
Эти шаги включены, чтобы показать, как настроить учетную запись службы и роли IAM.
Вернитесь в Google Cloud Console и активируйте Cloud Shell, щелкнув значок справа от панели поиска.
В открывшемся терминале выполните следующие команды, чтобы создать новую учетную запись службы и ключи.
Вы будете использовать эту учетную запись службы для вызовов 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'
KEY_FILE_NAME='vertex-client-key'
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"
gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
Если будет предложено авторизоваться, нажмите «Авторизовать», чтобы продолжить.
Включите необходимые службы для использования 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
(КОНЕЦ НЕОБЯЗАТЕЛЬНОГО РАЗДЕЛА)
5. Предоставьте доступ к облачным рабочим станциям.
Откройте облачные рабочие станции в облачной консоли .
Предоставьте доступ к Cloud Workstation подготовленному учащемуся Qwiklabs.
Скопируйте имя пользователя/адрес электронной почты Qwiklabs, созданное для этого проекта, и используйте его для добавления участника. Выберите рабочую станцию и нажмите « PERMISSIONS
».
Подробности см. ниже.
Нажмите кнопку « ADD PRINCIPAL
».
Вставьте адрес электронной почты учащегося Qwiklabs и выберите роль « Cloud Workstations User
».
Нажмите « Start
», а затем « Launch
», чтобы открыть рабочую станцию, и выполните следующие шаги, используя встроенный терминал.
Клонировать репозиторий GitHub
Создайте папку и клонируйте репозиторий GitHub.
mkdir github
cd github
git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git
С помощью пункта меню « File / Open Folder
» откройте « github/genai-for-developers
».
6. Включите Помощник по коду Gemini
Нажмите на значок «Gemini», в правом нижнем углу нажмите « Login to Google Cloud
».
Нажмите ссылку в терминале, чтобы начать процесс авторизации.
Нажмите «Открыть», чтобы перейти по ссылке.
Выберите свою студенческую учетную запись Qwiklabs и нажмите «Войти» на следующем экране.
Скопируйте код подтверждения:
Вернитесь к терминалу и вставьте код.
Дождитесь завершения аутентификации, а затем нажмите «Выбрать проект Google».
Во всплывающем окне выберите свой проект Qwiklabs.
Пример:
Откройте файл « devai-api/app/routes.py
», затем щелкните правой кнопкой мыши в любом месте файла и выберите « Gemini > Explain
this"
в контекстном меню.
Просмотрите объяснение Gemini для выбранного файла.
7. Наборы инструментов LangChain
Наборы инструментов LangChain — это наборы инструментов, предназначенные для оптимизации и улучшения разработки приложений с помощью LangChain. Они предлагают различные функциональные возможности в зависимости от конкретного набора инструментов, но в целом они помогают:
- Подключение к внешним источникам данных : доступ и включение информации из API, баз данных и других внешних источников в ваши приложения LangChain.
- Расширенные методы подсказок . Используйте готовые подсказки или создавайте собственные для оптимизации взаимодействия с языковыми моделями.
- Создание цепочек и управление ими . Легко создавайте сложные цепочки и эффективно управляйте ими.
- Оценка и мониторинг : анализируйте производительность ваших приложений и цепочек LangChain.
Некоторые популярные наборы инструментов LangChain включают:
- Наборы инструментов Agent Executor : инструменты для разработки агентов, которые могут взаимодействовать с реальным миром посредством таких действий, как просмотр веб-страниц или выполнение кода.
- Набор инструментов для разработки подсказок : набор ресурсов для создания эффективных подсказок.
Инструментарий GitLab
В этой лабораторной работе вы будете использовать GitLab Toolkit для автоматизации создания мерж-реквестов GitLab.
Набор инструментов Gitlab содержит инструменты, которые позволяют агенту LLM взаимодействовать с репозиторием gitlab. Этот инструмент представляет собой оболочку библиотеки python-gitlab
.
Инструментарий GitLab может выполнять следующие задачи:
- Создать файл — создает новый файл в репозитории.
- Read File – читает файл из репозитория.
- Обновить файл — обновляет файл в репозитории.
- Создать запрос на включение — создает запрос на включение из рабочей ветки бота в базовую ветку.
- Get Issue s — извлекает задачи из репозитория.
- Получить проблему — получает подробную информацию о конкретной проблеме.
- Комментарий к проблеме — публикует комментарий по конкретной проблеме.
- Удалить файл – удаляет файл из репозитория.
8. Конфигурация репозитория GitLab и набора инструментов
Откройте GitLab , создайте новый общедоступный проект и настройте токен доступа к проекту в разделе « Settings / Access Tokens
».
Используйте следующие данные:
- Имя токена:
devai-api-qwiklabs
- Роль:
Maintainer
- Выберите области:
api
Скопируйте и вставьте значение токена доступа во временный файл на вашем ноутбуке, оно будет использоваться на следующих шагах.
Создайте новую ветку « devai
» отдельно от ветки « main
» в разделе « Code / Branches
».
9. Подготовьтесь к развертыванию приложения в Cloud Run.
Вернитесь к экземпляру Cloud Workstations и используйте существующий или откройте новый терминал.
Получите учетные данные доступа для своей учетной записи пользователя через веб-процесс авторизации.
Нажмите на ссылку и следуйте инструкциям по созданию кода подтверждения.
gcloud auth login
Настройте детали проекта, используя сведения о проекте 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
Это безопасный способ установить переменные среды без отображения значений в истории команд консоли. После запуска вам нужно вставить значение и нажать Enter.
Эта команда требует от вас обновить идентификатор пользователя GitLab и имя репозитория.
Пример: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"
export GITLAB_REPOSITORY="USERID/REPOSITORY"
Установите остальные переменные среды:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
10. Конфигурация трассировки LangSmith LLM
Создайте учетную запись LangSmith и сгенерируйте ключ API службы в разделе «Настройки». https://docs.smith.langchain.com/
Установите переменные среды, необходимые для интеграции LangSmith.
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY=langchain-service-api-key
11. Конфигурация 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"
12. Развертывание Devai-API в Cloud Run
Убедитесь, что вы находитесь в правильной папке.
cd ~/github/genai-for-developers/devai-api
В этой лабораторной работе мы следуем передовым практикам и используем Secret Manager для хранения и ссылки на значения токена доступа и ключа API LangChain в Cloud Run.
Сохраните токен доступа JIRA в диспетчере секретов.
echo -n $JIRA_API_TOKEN | \
gcloud secrets create JIRA_API_TOKEN \
--data-file=-
Сохраните токен доступа GitLab в диспетчере секретов.
echo -n $GITLAB_PERSONAL_ACCESS_TOKEN | \
gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN \
--data-file=-
Сохраните ключ API LangChain в диспетчере секретов.
echo -n $LANGCHAIN_API_KEY | \
gcloud secrets create LANGCHAIN_API_KEY \
--data-file=-
Разверните приложение в Cloud Run.
gcloud beta 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 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" \
--min-instances=1 \
--max-instances=3 \
--service-min-instances=1
Ответьте 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=.
поток ниже. Узнать больше .
За кулисами эта команда использует buildpacks
Google Cloud и Cloud Build
для автоматического создания образов контейнеров из вашего исходного кода без необходимости устанавливать Docker на ваш компьютер или настраивать пакеты сборки или Cloud Build. То есть одна описанная выше команда делает то, что в противном случае потребовало бы команд gcloud builds submit
и команд gcloud run deploy
.
Если вы предоставили Dockerfile (что мы и сделали в этом репозитории), Cloud Build будет использовать его для создания образов контейнеров, а не полагаться на пакеты сборки для автоматического обнаружения и создания образов контейнеров. Чтобы узнать больше о сборочных пакетах, ознакомьтесь с документацией .
Просмотрите журналы Cloud Build в консоли .
Просмотрите созданный образ Docker в реестре артефактов .
Откройте cloud-run-source-deploy/devai-api
и просмотрите уязвимости, которые были обнаружены автоматически. Проверьте те, у которых есть доступные исправления, и посмотрите, как их можно исправить, на основе описания.
Просмотрите сведения об экземпляре Cloud Run в Cloud Console .
Проверьте конечную точку, выполнив команду Curl.
curl -X POST \
-H "Content-Type: application/json" \
-d '{"prompt": "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."}' \
$(gcloud run services list --filter="(devai-api)" --format="value(URL)")/generate
(ДОПОЛНИТЕЛЬНЫЙ РАЗДЕЛ) Настройка облачной рабочей станции
Cloud Workstations предоставляет управляемые среды разработки в Google Cloud со встроенной безопасностью и предварительно настроенными, но настраиваемыми средами разработки. Вместо того, чтобы требовать от разработчиков установки программного обеспечения и запуска сценариев установки, вы можете создать конфигурацию рабочей станции, которая воспроизводимо определяет вашу среду. Любые обновления конфигурации рабочей станции автоматически применяются к рабочим станциям при следующем запуске. Разработчики получают доступ к рабочим станциям через IDE на основе браузера, из нескольких локальных редакторов кода (таких как VSCode или IDE JetBrains, например IntelliJ IDEA Ultimate и PyCharm Professional) или через SSH.
Cloud Workstations использует следующие ресурсы Google Cloud для управления средами разработки:
- Кластеры рабочих станций определяют группу рабочих станций в определенном регионе и сеть VPC, к которой они подключены. Кластеры рабочих станций не связаны с кластерами Google Kubernetes Engine (GKE).
- Конфигурации рабочих станций действуют как шаблоны для рабочих станций. Конфигурация рабочей станции определяет такие детали, как тип экземпляра виртуальной машины (ВМ) рабочей станции, постоянное хранилище, среду определения образа контейнера, какую среду IDE или редактор кода использовать и многое другое. Администраторы и команды платформы также могут использовать правила управления идентификацией и доступом (IAM), чтобы предоставить доступ командам или отдельным разработчикам.
- Рабочие станции — это предварительно настроенные среды разработки, которые предоставляют облачную IDE, языковые инструменты, библиотеки и многое другое. Рабочие станции можно запускать или останавливать по требованию и запускать на виртуальных машинах Compute Engine в вашем проекте с подключенным постоянным диском для хранения данных между сеансами.
Администраторы и команды платформы создают конфигурации рабочих станций, которыми они делятся со своей командой разработчиков. Каждый разработчик создает рабочую станцию на основе конфигурации рабочей станции.
В этой лабораторной работе вы используете IDE на основе браузера, но облачные рабочие станции также поддерживают другие распространенные интерфейсы разработки:
- Вы можете использовать свои собственные локальные IDE JetBrains через JetBrains Gateway.
- Если вы используете Local VSCode , вы также можете получить доступ к своим рабочим станциям для удаленной разработки через SSH.
- Вы также можете настроить SSH и даже TCP-туннели к вашей рабочей станции со своего локального компьютера.
(ДОПОЛНИТЕЛЬНЫЙ РАЗДЕЛ) Создание кластера рабочих станций
Эти шаги были выполнены во время лабораторной настройки — вам не нужно их выполнять.
Эти шаги включены, чтобы показать, как настроить кластер, конфигурацию и рабочую станцию облачных рабочих станций.
Просмотрите этот раздел и перейдите в раздел «Платформа Forge».
Создайте кластер рабочих станций:
gcloud workstations clusters create ws-cluster --region=us-central1
Создать конфигурацию рабочих станций
gcloud workstations configs create devai-config \
--cluster=ws-cluster \
--machine-type=e2-standard-8 \
--region=us-central1 \
--running-timeout=21600 \
--idle-timeout=1800 \
--container-predefined-image=codeoss \
--pd-disk-size=200 \
--pd-disk-type=pd-standard \
--service-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com \
--pool-size=1
Создать рабочую станцию
gcloud workstations create devai-workstation \
--cluster=ws-cluster \
--config=devai-config \
--region=us-central1
Просмотрите доступные рабочие станции в Cloud Console . Запустите и запустите « devai-workstation
».
Включите « Gemini
» в правом нижнем углу, следуйте инструкциям по входу в новую вкладку браузера и скопируйте сгенерированный код обратно в консоль, чтобы завершить вход.
Откройте чат « Gemini
» на левой панели и спросите Близнецов:
« You are a Cloud Workstations Product Manager, tell me about Cloud Workstations
».
« You are Cloud Workstations Product Manager, Can I create my custom Cloud Workstations image with my company tools so new developers can onboard in minutes?
».
(КОНЕЦ НЕОБЯЗАТЕЛЬНОГО РАЗДЕЛА)
13. Кузница платформы
Forge — это платформа, которая позволяет разработчикам создавать приложения, интегрируемые с продуктами Atlassian, такими как Jira, Confluence, Compass и Bitbucket.
Установите Forge CLI
Запустите команды ниже в терминале.
Загрузите Node Version Manager ( nvm ) и сделайте его доступным по пути в текущем сеансе терминала.
cd ~/github/genai-for-developers
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Установите НВМ.
Выберите последнюю версию Node.js LTS, выполнив в терминале следующую команду:
nvm install --lts
nvm use --lts
Установите Forge CLI глобально, выполнив:
npm install -g @forge/cli
В этой лабораторной работе мы будем использовать переменные среды для входа в систему.
Настройка проекта JIRA
Используйте свою личную учетную запись для создания/просмотра проектов JIRA.
Просмотрите существующие проекты JIRA: https://admin.atlassian.com/
Создайте новый проект JIRA, используя свою личную учетную запись.
Перейдите на https://team.atlassian.com/your-work и нажмите а затем выберите
. После этого выберите «Программное обеспечение JIRA» — «Попробовать сейчас». Следуйте инструкциям для завершения создания проекта/сайта.
Выберите Программное обеспечение JIRA.
Создайте новый проект.
14. Токен Atlassian API
Создайте или используйте существующий токен Atlassian API для входа в CLI.
CLI использует ваш токен при выполнении команд.
- Перейдите на https://id.atlassian.com/manage/api-tokens .
- Нажмите Создать токен API .
- Введите метку, описывающую ваш токен API. Например, forge-api-token.
- Нажмите Создать .
- Нажмите «Копировать в буфер обмена» и закройте диалоговое окно.
Выполните команду ниже в терминале Cloud Workstations.
Войдите в интерфейс командной строки 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
Убедитесь, что вы находитесь в папке « ~/github/genai-for-developers
».
Запустите команду для создания приложения Forge.
forge create
При появлении запроса используйте следующие значения:
- Имя приложения:
devai-jira-ui-qwiklabs
- Выберите категорию:
UI Kit
- Выберите продукт:
Jira
- Выберите шаблон:
jira-issue-panel
Перейдите в папку приложения.
cd devai-jira-ui-qwiklabs/
Запустите команду развертывания.
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
».
Нажмите кнопку и просмотрите изменения в пользовательском интерфейсе.
Просмотр журналов серверной части Forge.
forge logs
Консоль разработчика Atlassian
Вы также можете просматривать и управлять развернутыми приложениями в Atlassian Developer Console .
Просмотрите журналы — переключитесь в среду Development
,
Просмотрите манифест и исходный код приложения Forge.
Откройте файл « devai-jira-ui-qwiklabs/manifest.yml
» и воспользуйтесь Gemini Code Assist, чтобы объяснить его.
Просмотрите объяснение.
Откройте следующие файлы и попросите Gemini Code Assist объяснить их:
-
devai-jira-ui-qwiklabs/src/frontend/index.jsx
-
devai-jira-ui-qwiklabs/src/resolvers/index.js
Обновите приложение 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
Подтвердите, выполнив команду ниже:
forge variables list
Пример вывода
Обновите манифест и код приложения 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/generate # replace with YOUR CLOUD RUN URL
Откройте файл резольверов/индекса в редакторе: devai-jira-ui-qwiklabs/src/resolvers/index.js
Добавьте строки ниже после существующей функции getText
.
resolver.define('getApiKey', (req) => {
return process.env.LLM_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 apiKey = 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 genAI = new GoogleGenerativeAI(apiKey);
// const model = genAI.getGenerativeModel({ model: "gemini-pro"});
// const prompt = `You are principal software engineer at Google and given requirements below to implement.\nPlease provide implementation details and documentation.\n\nREQUIREMENTS:\n\n${data.fields.description}`
// const result = await model.generateContent(prompt);
// const text = result.response.text();
// const jsonText = JSON.stringify(text);
const bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;
const generateRes = await api.fetch(devAIApiUrl+'/generate',
{
body: bodyGenerateData,
method: 'post',
headers: { 'Content-Type': 'application/json' },
}
)
const resData = await generateRes.text();
const jsonText = JSON.stringify(resData);
const bodyData = `{
"body": ${jsonText}
}`;
console.log("bodyData", bodyData)
// Add Gemini response as a comment on the JIRA issue
await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: bodyData
});
// 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
Разверните обновленное приложение:
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
Пример вывода:
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.
Вам нужно будет удалить предыдущую панель, если она уже была добавлена.
Нажмите « ...
» и в меню выберите «Удалить». После этого вы можете нажать на кнопку еще раз.
Проверьте комментарии Jira
Как только вы получите ответ от DEVAI API, к проблеме JIRA будут добавлены два комментария.
- Мерж-реквест GitLab
- Подробности реализации пользовательской истории Gemini
Переключайтесь между вкладками « History
» и « Comments
», чтобы обновить представление.
Включить создание запроса на слияние GitLab
Откройте файл devai-api/app/routes.py
и раскомментируйте строки ниже в generate_handler
:
print(f"{response.text}\n")
# resp_text = response.candidates[0].content.parts[0].text
# pr_prompt = f"""Create GitLab merge request using provided details below.
# Create new files, commit them and push them to opened merge request.
# When creating new files, remove the lines that start with ``` before saving the files.
# DETAILS:
# {resp_text}
# """
# print(pr_prompt)
# agent.invoke(pr_prompt)
Повторное развертывание приложения Cloud Run
Убедитесь, что вы находитесь в правильной папке.
cd ~/github/genai-for-developers/devai-api
Если вы используете тот же сеанс терминала, возможно, все переменные среды все еще установлены.
Проверьте это, запустив « echo $GITLAB_REPOSITORY
» в терминале.
Выполните следующие действия, чтобы сбросить их, если был открыт новый сеанс терминала.
Обязательно сбросьте необходимые переменные среды перед повторным развертыванием приложения.
Эта команда требует от вас обновить идентификатор пользователя GitLab и имя репозитория.
export GITLAB_REPOSITORY="USERID/REPOSITORY"
Установите остальные переменные среды:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api
export PROJECT_ID=$(gcloud config get-value project)
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
Инструментарий GitLab будет использовать ветку « devai
» для отправки изменений в мерж-реквест.
Убедитесь, что вы уже создали эту ветку.
Разверните приложение в Cloud Run.
gcloud beta 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 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" \
--min-instances=1 \
--max-instances=3 \
--service-min-instances=1
Проверьте сквозную интеграцию
Запустите процесс из задачи JIRA, снова нажав кнопку, и проверьте выходные данные в репозитории GitLab в разделе «Запрос на слияние» и в LangSmith.
Подробности запроса на слияние GitLab.
LangSmith LLM следы
Откройте портал LangSmith и просмотрите трассировку LLM для вызова создания задачи JIRA.
Пример трассировки LangSmith LLM.
GitLab Toolkit не создает новые ветки, и вам придется вручную выполнить следующие действия, если вы хотите повторно запустить процесс.
- Закрыть мерж-реквест в GitLab
- Удалите существующую ветку «
devai
» в репозитории GitLab, а затем создайте новую.
(ДОПОЛНИТЕЛЬНЫЙ РАЗДЕЛ) Отправьте изменения в репозиторий GitHub.
Перейдите на веб-сайт GitHub и создайте новый репозиторий, чтобы перенести изменения для этой лабораторной работы в ваш личный репозиторий.
Вернитесь к экземпляру Cloud Workstations и укажите имя пользователя и адрес электронной почты 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 ~/github/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
15. Поздравляем!
Поздравляем, вы закончили лабораторную работу!
Что мы рассмотрели:
- Как развернуть приложения Cloud Run для интеграции с API Gemini.
- Как создать и развернуть приложение Atlassian Forge для JIRA.
- Как использовать агенты LangChain ReAct для автоматизации задач GitLab.
- Как просмотреть трассировки LLM в LangSmith.
Что дальше:
- Впереди еще больше практических занятий!
Очистить
Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий ресурсы, либо сохраните проект и удалите отдельные ресурсы.
Удаление проекта
Самый простой способ избавиться от выставления счетов — удалить проект, созданный вами для этого руководства.
© Google LLC, 2024. Все права защищены. Google и логотип Google являются товарными знаками Google LLC. Все остальные названия компаний и продуктов могут быть товарными знаками соответствующих компаний, с которыми они связаны.