Wdrażanie historii użytkowników Jira za pomocą generatywnej AI

1. Przegląd

W tym laboratorium stworzysz rozwiązanie do automatyzacji wdrażania historyjek użytkownika JIRA z użyciem generatywnej AI.

a4ba5d8788dc40.png

Czego się nauczysz

Laboratorium składa się z kilku głównych części:

  • Wdrażanie aplikacji Cloud Run w celu integracji z interfejsami Gemini API
  • Tworzenie i wdrażanie aplikacji Atlassian Forge dla JIRA
  • Automatyzacja zadań w GitLab za pomocą agentów LangChain ReAct

Wymagania wstępne

  • Zakładamy, że użytkownik zna środowiska konsoli Cloud i Cloud Shell.

2. Konfiguracja i wymagania

Konfigurowanie projektu w Google Cloud

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu.
  • Warto wiedzieć, że istnieje trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego ćwiczenia nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Konfigurowanie środowiska

Otwórz rozmowę z Gemini.

bc3c899ac8bcf488.png

Możesz też wpisać „Zapytaj Gemini” na pasku wyszukiwania.

e1e9ad314691368a.png

Włącz interfejs Gemini for Google Cloud API:

990a0ceea7d05531.png

Kliknij „Start chatting” i wybierz jedno z przykładowych pytań lub wpisz własny prompt, aby wypróbować tę funkcję.

ed120d672468b412.png

Prompty do wypróbowania:

  • Wyjaśnij, czym jest Cloud Run, w 5 najważniejszych punktach.
  • Jesteś menedżerem produktu Google Cloud Run. Wyjaśnij studentowi, czym jest Cloud Run, w 5 krótkich punktach.
  • Jesteś menedżerem produktu Google Cloud Run. Wyjaśnij certyfikowanemu programiście Kubernetes, czym jest Cloud Run, w 5 krótkich punktach.
  • Jesteś menedżerem produktu Google Cloud Run. Wyjaśnij starszemu programiście w 5 krótkich punktach, kiedy warto używać Cloud Run, a kiedy GKE.

Więcej informacji o tworzeniu lepszych promptów znajdziesz w przewodniku po tworzeniu promptów.

Jak Gemini w Google Cloud korzysta z danych użytkowników

Zobowiązanie Google do ochrony prywatności

Google jako jedna z pierwszych firm w branży opublikowała zobowiązanie do ochrony prywatności w systemach AI/ML, w którym podkreślamy, że klienci powinni mieć najwyższy poziom bezpieczeństwa i kontroli nad danymi przechowywanymi w chmurze.

Dane, które przesyłasz i odbierasz

Pytania, które zadajesz Gemini, w tym wszelkie dane wejściowe lub kod, które przesyłasz do Gemini w celu analizy lub uzupełnienia, nazywane są promptami. Odpowiedzi lub uzupełnienia kodu, które otrzymujesz od Gemini, nazywamy odpowiedziami. Gemini nie używa Twoich promptów ani swoich odpowiedzi jako danych do trenowania swoich modeli.

Szyfrowanie promptów

Gdy przesyłasz prompty do Gemini, Twoje dane są szyfrowane podczas przesyłania jako dane wejściowe do modelu bazowego w Gemini.

Dane programu wygenerowane przez Gemini

Gemini jest trenowany na podstawie kodu Google Cloud oraz wybranego kodu innych firm. Ponosisz odpowiedzialność za bezpieczeństwo, testowanie i skuteczność swojego kodu, w tym za uzupełnianie, generowanie i analizowanie kodu oferowane przez Gemini.

Dowiedz się więcej o tym, jak Google przetwarza Twoje prompty.

3. Opcje testowania promptów

Możesz testować prompty na kilka sposobów.

Vertex AI Studio to część platformy Vertex AI w Google Cloud, która została zaprojektowana specjalnie z myślą o upraszczaniu i przyspieszaniu tworzenia i używania modeli generatywnej AI.

Google AI Studio to internetowe narzędzie do tworzenia prototypów i eksperymentowania z inżynierią promptów oraz interfejsem Gemini API.

Aplikacja internetowa Google Gemini (gemini.google.com) to narzędzie internetowe, które pomaga odkrywać i wykorzystywać możliwości modeli AI Gemini od Google.

4. Sprawdzanie aplikacji

Utwórz konto usługi

Wróć do konsoli Google Cloud i aktywuj Cloud Shell, klikając ikonę po prawej stronie paska wyszukiwania.

3e0c761ca41f315e.png

W otwartym terminalu uruchom te polecenia, aby utworzyć nowe konto usługi i klucze.

To konto usługi będzie używane do wywoływania interfejsu Vertex AI Gemini API z aplikacji Cloud Run.

Skonfiguruj szczegóły projektu, korzystając z informacji o projekcie Qwiklabs.

Przykład: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

Utwórz konto usługi.

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"

Przyznaj role.

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"

Jeśli pojawi się prośba o autoryzację, kliknij „Autoryzuj”, aby kontynuować.

6356559df3eccdda.png

Włącz wymagane usługi, aby korzystać z interfejsów Vertex AI API i rozmowy z Gemini.

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

Włącz wymagane usługi, aby korzystać z interfejsów Vertex AI API i rozmowy z 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

Klonowanie repozytorium GitHub

Sklonuj repozytorium GitHub.

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

Otwórz edytor Cloud Shell

7e71f46b6c7b67ca.png

Wybierz „File / Open Folder”, aby otworzyć „genai-for-developers”.

Otwórz plik „devai-api/app/routes.py”, a następnie kliknij prawym przyciskiem myszy dowolne miejsce w pliku i z menu kontekstowego wybierz „Gemini > Explain this"”.

34054e1fad005ff8.png

Sprawdź wyjaśnienie Gemini dotyczące wybranego pliku.

f73af988a723142.png

5. Konfiguracja repozytorium GitLab i zestawu narzędzi

W tym module użyjesz GitLabToolkit do automatyzacji tworzenia żądań scalenia w GitLab.

Omówienie zestawów narzędzi LangChain

Zestawy narzędzi LangChain to zbiory narzędzi zaprojektowane w celu usprawnienia i ulepszenia tworzenia aplikacji za pomocą LangChain. Oferują one różne funkcje w zależności od konkretnego zestawu narzędzi, ale ogólnie pomagają w:

  • Łączenie z zewnętrznymi źródłami danych: dostęp do informacji z interfejsów API, baz danych i innych zewnętrznych źródeł oraz włączanie ich do aplikacji LangChain.
  • Zaawansowane techniki promptowania: korzystaj z gotowych promptów lub twórz własne, aby optymalizować interakcje z modelami językowymi.
  • Tworzenie łańcuchów i zarządzanie nimi: łatwo twórz złożone łańcuchy i skutecznie nimi zarządzaj.
  • Ocena i monitorowanie: analizuj skuteczność aplikacji i łańcuchów LangChain.

Niektóre popularne zestawy narzędzi LangChain to:

  • Zestawy narzędzi do wykonywania zadań przez agenta: narzędzia do tworzenia agentów, którzy mogą wchodzić w interakcje ze światem rzeczywistym, wykonując działania takie jak przeglądanie internetu czy wykonywanie kodu.
  • Zestaw narzędzi do inżynierii promptów: zbiór zasobów do tworzenia skutecznych promptów.

Omówienie narzędzi GitLab

Zestaw narzędzi Gitlab zawiera narzędzia, które umożliwiają agentowi LLM interakcję z repozytorium Gitlab. Narzędzie jest otoczką biblioteki python-gitlab.

Zestaw narzędzi GitLab może wykonywać te zadania:

  • Utwórz plik – tworzy nowy plik w repozytorium.
  • Odczytaj plik – odczytuje plik z repozytorium.
  • Update File (Aktualizuj plik) – aktualizuje plik w repozytorium.
  • Utwórz żądanie pull – tworzy żądanie pull z gałęzi roboczej bota do gałęzi podstawowej.
  • Get Issues (Pobierz problemy) – pobiera problemy z repozytorium.
  • Get Issue (Pobierz problem) – pobiera szczegółowe informacje o konkretnym problemie.
  • Comment on Issue (Skomentuj problem) – publikuje komentarz do konkretnego problemu.
  • Delete File (Usuń plik) – usuwa plik z repozytorium.

Konfiguracja projektu GitLab

Otwórz GitLab, utwórz nowy projekt i skonfiguruj token dostępu do projektu w sekcji „Settings / Access Tokens”.

Podaj te informacje:

  • Nazwa tokena: devai-api-qwiklabs
  • Rola: Maintainer
  • Wybierz zakresy: api

c205fd7524c456dc.png

Skopiuj i wklej wartość tokena dostępu do pliku tymczasowego na laptopie. Zostanie ona użyta w następnych krokach.

6. Przygotowywanie do wdrożenia aplikacji w Cloud Run

Wróć do edytora Cloud Shell i użyj istniejącego terminala lub otwórz nowy.

941f0c1692037664.png

Skonfiguruj szczegóły projektu, korzystając z informacji o projekcie Qwiklabs.

Przykład: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR-QWIKLABS-PROJECT-ID

Ustaw pozostałe zmienne środowiskowe:

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

Ustaw zmienne środowiskowe wymagane do integracji z GitLab.

export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-token

Aby uniknąć ujawnienia informacji poufnych w terminalu, najlepiej użyć read -s GITLAB_PERSONAL_ACCESS_TOKEN. Jest to bezpieczny sposób ustawiania zmiennych środowiskowych bez wyświetlania wartości w historii poleceń konsoli. Po uruchomieniu musisz wkleić wartość i nacisnąć Enter. Musisz też wyeksportować zmienną środowiskową: export GITLAB_PERSONAL_ACCESS_TOKEN

To polecenie wymaga zaktualizowania identyfikatora użytkownika GitLab i nazwy repozytorium.

Przykład: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"

119489def27115c8.png

export GITLAB_REPOSITORY="USERID/REPOSITORY"

Ustaw pozostałe zmienne środowiskowe:

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

Konfiguracja śledzenia LLM w LangSmith

Jeśli chcesz wyświetlać informacje o śledzeniu agenta w LangSmith, skonfiguruj konto. W przeciwnym razie wykonaj polecenia w obecnej postaci.

Utwórz konto LangSmith i wygeneruj klucz interfejsu API usługi w sekcji Ustawienia. https://smith.langchain.com/settings

Ustaw zmienne środowiskowe wymagane do integracji z LangSmith.

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

export LANGCHAIN_API_KEY=langchain-service-api-key

Konfiguracja JIRA

Te wartości nie są używane w tym laboratorium, więc przed wykonaniem poleceń nie musisz ich aktualizować do wartości konkretnego projektu JIRA.

Ustaw zmienne środowiskowe wymagane do wdrożenia usługi 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

Utwórz klucz interfejsu API

Utwórz nowy klucz interfejsu API w Cloud Console w sekcji Interfejsy API i usługi / Dane logowania.

Ten klucz będzie używany do uwierzytelniania wywołań interfejsu API JIRA w aplikacji Cloud Run.

W środowisku produkcyjnym skonfigurujesz ograniczenia aplikacji i interfejsu API dla utworzonego klucza interfejsu API. Ograniczenia aplikacji ograniczają użycie klucza interfejsu API do określonych witryn(np. instancji JIRA).

Ustaw zmienne środowiskowe wymagane do wdrożenia usługi Cloud Run.

export DEVAI_API_KEY=your-api-key

Tworzenie obiektów tajnych w usłudze Secret Manager

W tym module postępujemy zgodnie ze sprawdzonymi metodami i używamy usługi Secret Manager do przechowywania i odwoływania się do wartości tokenów dostępu, klucza interfejsu API i klucza interfejsu LangChain API w Cloud Run.

Utwórz i zapisz wymagane obiekty tajne w usłudze 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. Wdrażanie Devai-API w Cloud Run

Sprawdź, czy jesteś w odpowiednim folderze.

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

wdrożyć aplikację w 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

Odpowiedz Y, aby utworzyć repozytorium Dockera w 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

Sprawdź poniższą gcloud run deploy SERVICE_NAME --source=. automatyzację. Więcej informacji

5c122a89dd11822e.png

W tle to polecenie używa buildpacksCloud Build Google Cloud do automatycznego tworzenia obrazów kontenerów z kodu źródłowego bez konieczności instalowania Dockera na komputerze ani konfigurowania pakietów kompilacji lub Cloud Build. Oznacza to, że pojedyncze polecenie opisane powyżej wykonuje to, co w innych przypadkach wymagałoby użycia poleceń gcloud builds submitgcloud run deploy.

Jeśli podasz plik Dockerfile(co zrobiliśmy w tym repozytorium), Cloud Build użyje go do kompilowania obrazów kontenerów, zamiast polegać na pakietach kompilacji, które automatycznie wykrywają i kompilują obrazy kontenerów. Więcej informacji o pakietach kompilacji znajdziesz w dokumentacji.

Przejrzyj logi Cloud Build w konsoli.

Sprawdź utworzony obraz Dockera w Artifact Registry.

Sprawdź szczegóły instancji Cloud Run w Cloud Console.

Testowanie aplikacji

Przetestuj punkt końcowy, uruchamiając polecenie curl.

Przed uruchomieniem polecenia zastąp adres URL usługi Cloud Run.

Przykład:

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

8. Automatyzacja wdrażania historii

Forge to platforma, która umożliwia programistom tworzenie aplikacji integrujących się z produktami Atlassian, takimi jak Jira, Confluence, Compass i Bitbucket.

eda6f59ff15df25e.png

Instalowanie interfejsu wiersza poleceń Forge

Zainstaluj interfejs wiersza poleceń Forge globalnie, uruchamiając to polecenie:

npm install -g @forge/cli

Na potrzeby tego laboratorium użyjemy zmiennych środowiskowych do logowania.

e4e4e59cf8622e3f.png

Konfigurowanie projektu JIRA

Używaj konta osobistego do tworzenia i wyświetlania projektów JIRA.

Sprawdź istniejące projekty JIRA: https://admin.atlassian.com/

Utwórz nowy projekt JIRA, używając konta osobistego.

Otwórz https://team.atlassian.com/your-work i kliknij 8654143154cb8665.png, a następnie wybierz 47b253090a08932.png. Następnie wybierz „JIRA Software” – „Wypróbuj teraz”. Postępuj zgodnie z instrukcjami, aby utworzyć projekt lub witrynę.

5bab2a96e3b81383.png

Wybierz JIRA Software.

785bc4d8bf920403.png

Utwórz nowy projekt.

8a6e7cdc8224ffa0.png

Tworzenie tokena interfejsu Atlassian API

Utwórz token API Atlassian lub użyj istniejącego, aby zalogować się w interfejsie wiersza poleceń.

Interfejs CLI używa Twojego tokena podczas uruchamiania poleceń.

  1. Otwórz stronę https://id.atlassian.com/manage/api-tokens.
  2. Kliknij Create API token (Utwórz token API).
  3. Wpisz etykietę opisującą token API. Na przykład forge-api-token.
  4. Kliknij Utwórz.
  5. Kliknij Skopiuj do schowka i zamknij okno.

Konfigurowanie ustawień środowiska Forge

Wróć do Cloud Console i uruchom w terminalu polecenia poniżej.

Zaloguj się w interfejsie Forge CLI, aby zacząć używać poleceń Forge.

Ustaw adres e-mail JIRA/FORGE. Zastąp go swoim adresem e-mail.

export FORGE_EMAIL=your-email

Ustaw token API Forge. Zastąp go tokenem interfejsu JIRA API.

export FORGE_API_TOKEN=your-jira-api-token

Przetestuj interfejs Forge CLI, uruchamiając to polecenie. Gdy pojawi się pytanie o zbieranie danych analitycznych, odpowiedz „No”.

forge settings set usage-analytics false

Sprawdź, czy jesteś zalogowany(-a).

forge whoami

Przykładowe dane wyjściowe.

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

Tworzenie aplikacji Forge

Sprawdź, czy jesteś w folderze „~/genai-for-developers”.

Uruchom polecenie, aby utworzyć aplikację Forge.

forge create

Gdy pojawi się prośba, użyj tych wartości:

  • Nazwa aplikacji: devai-jira-ui-qwiklabs
  • Wybierz kategorię: UI Kit
  • Wybierz produkt: Jira
  • Wybierz szablon: jira-issue-panel

bc94e2da059f15cf.png

Przejdź do folderu aplikacji.

cd devai-jira-ui-qwiklabs/

Uruchom polecenie, aby zainstalować zależności.

npm install

Uruchom polecenie wdrożenia.

forge deploy

Przykładowe dane wyjściowe:

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.

Zainstaluj aplikację.

forge install

Gdy pojawi się prośba, użyj tych wartości:

  • Wybierz produkt: Jira
  • Wpisz adres URL witryny: your-domain.atlassian.net

Przykładowe dane wyjściowe:

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

Otwórz witrynę JIRA i utwórz nowe zadanie JIRA z tym opisem:

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.

Gdy otworzysz zadanie, zobaczysz przycisk „devai-jira-ui-qwiklabs”.

Kliknij przycisk i sprawdź zmiany w interfejsie.

a64378e775125654.png

Wyświetl logi backendu Forge.

forge logs

Konsola programisty Atlassian

Wdrożone aplikacje możesz też wyświetlać i nimi zarządzać w konsoli programisty Atlassian.

10281496d8181597.png

Sprawdzanie logów – przełączanie się na środowisko Development,

d5c3b1a18dee166e.png

Sprawdzanie pliku manifestu i kodu źródłowego aplikacji Forge

Otwórz plik „devai-jira-ui-qwiklabs/manifest.yml” i użyj Gemini Code Assist, aby wyjaśnić konfigurację.

8710dc7cd343a6a4.png

Sprawdź wyjaśnienie.

e4c9052a0337527d.png

Otwórz te pliki i poproś Gemini Code Assist o ich wyjaśnienie:

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

3283420f190cda21.png

Aktualizowanie aplikacji Forge za pomocą punktu końcowego DevAI API Cloud Run

Sprawdź, czy identyfikator projektu GCP jest ustawiony:

gcloud config get project

Jeśli nie, ustaw projekt GCP, używając identyfikatora projektu ze strony modułu Qwiklabs:

Przykład: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

Ustaw adres URL usługi 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

Ustaw klucz interfejsu API DEVAI:

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

forge variables set --encrypt DEVAI_API_KEY $DEVAI_API_KEY

Potwierdź, uruchamiając to polecenie:

forge variables list

Przykładowe dane wyjściowe

f63a751f0d6211ff.png

Aktualizowanie pliku manifestu i kodu aplikacji Forge

Te fragmenty kodu znajdziesz w repozytorium w folderze sample-devai-jira-ui.

Otwórz plik manifestu w edytorze: devai-jira-ui-qwiklabs/manifest.yml

Dodaj poniższe wiersze na końcu pliku. Zastąp punkt końcowy Cloud Run wdrożonym punktem końcowym.

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

Otwórz plik resolvers/index w edytorze: devai-jira-ui-qwiklabs/src/resolvers/index.js

Dodaj poniższe wiersze po istniejącej funkcji getText.

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

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

Otwórz plik frontend/index w edytorze: devai-jira-ui-qwiklabs/src/frontend/index.jsx

Zastąp index.jsx treścią poniżej. Zaktualizuj link do identyfikatora użytkownika lub repozytorium GitLab.

Musisz zaktualizować wartości YOUR-GIT-USERID i YOUR-GIT-REPO w 2 miejscach.

Wyszukaj w pliku ten wiersz i wprowadź zmiany:

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

Ponowne wdrażanie aplikacji Forge

Dodaj zależności w pliku package.json:

"@forge/api": "4.0.0",

Uruchom polecenie, aby zainstalować zależności:

npm install

Wdróż zaktualizowaną aplikację:

forge deploy

Przykładowe dane wyjściowe:

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

Zainstaluj zaktualizowaną aplikację:

forge install --upgrade

ef17c7da9b2962d8.png

Przykładowe dane wyjściowe:

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.

Testowanie aplikacji Forge

Otwórz istniejące zadanie JIRA lub utwórz nowe w projekcie JIRA.

Jeśli poprzedni panel został już dodany, musisz go usunąć.

Kliknij „...” i z menu wybierz „Usuń”. Potem możesz ponownie kliknąć przycisk.

460503e8b2014b52.png

Sprawdzanie komentarzy w Jira

Gdy otrzymasz odpowiedź z interfejsu DEVAI API, do zgłoszenia w JIRA zostanie dodany komentarz.

  • Link do żądania scalenia GitLab

Aby odświeżyć widok, przełączaj się między kartami „History” i „Comments”.

9539d2bd3cbdad28.png

Weryfikowanie prośby o scalenie w GitLab

Otwórz GitLab i sprawdź, czy w Twoim projekcie są nowe żądania scalenia.

4c2345a89bfe71ee.png

fa3a552923cd70f1.png

Ślady LLM w LangSmith

Jeśli masz skonfigurowane śledzenie LLM, otwórz portal LangSmith i sprawdź ślad LLM dla wywołania tworzenia żądania scalenia GitLab.

Przykładowy log czasu LLM w LangSmith.

1ae0f88ab885f69.png

9. Przekazywanie zmian do repozytorium GitHub

(SEKCJA OPCJONALNA)

Otwórz stronę GitHub i utwórz nowe repozytorium, do którego prześlesz zmiany wprowadzone w tym module.

Wróć do Cloud Console i ustaw nazwę użytkownika Git oraz adres e-mail w terminalu.

Zaktualizuj wartości przed uruchomieniem poleceń.

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

Wygeneruj klucz SSH i dodaj go do repozytorium GitHub.

Zaktualizuj adres e-mail przed uruchomieniem poleceń.

Nie wpisuj hasła i nie naciskaj wielokrotnie klawisza Enter, aby zakończyć generowanie klucza.

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

ssh-add ~/.ssh/id_ed25519

cat ~/.ssh/id_ed25519.pub

Dodaj wygenerowany klucz publiczny do konta GitHub.

Otwórz https://github.com/settings/keys i kliknij „New SSH key”.

Jako nazwę klucza użyj „qwiklabs-key” i skopiuj/wklej dane wyjściowe z ostatniego polecenia.

Wróć do terminala, zatwierdź i wypchnij zmiany.

cd ~/genai-for-developers

git remote rm origin

Ustaw zdalne źródło, używając repozytorium utworzonego powyżej.

Zastąp adresem URL repozytorium.

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

Dodaj, zatwierdź i prześlij zmiany.

git add .

git commit -m "lab changes"

git push -u origin main

10. Gratulacje!

Gratulacje! Moduł został ukończony.

Omówione zagadnienia:

  • Jak wdrażać aplikacje Cloud Run w celu integracji z interfejsami Gemini API.
  • Jak utworzyć i wdrożyć aplikację Atlassian Forge dla JIRA.
  • Jak używać agentów LangChain ReAct do automatyzacji zadań w GitLab.
  • Jak przeglądać ślady LLM w LangSmith.

Co dalej?

  • Wkrótce pojawią się kolejne sesje praktyczne.

Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym samouczku, możesz usunąć projekt zawierający te zasoby lub zachować projekt i usunąć poszczególne zasoby.

Usuwanie projektu

Najprostszym sposobem na uniknięcie płatności jest usunięcie projektu utworzonego w tym samouczku.

©2024 Google LLC. Wszelkie prawa zastrzeżone. Google i logo Google są znakami towarowymi Google LLC. Wszelkie inne nazwy firm i produktów mogą być znakami towarowymi odpowiednich podmiotów, z którymi są powiązane.