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

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



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

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

Włącz interfejs Gemini for Google Cloud API:

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

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 Gemini (gemini.google.com)
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.
- aplikacja mobilna Google Gemini na Android i aplikacja Google na iOS;
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.

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

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

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"”.

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

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

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.

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"

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

W tle to polecenie używa buildpacks i Cloud 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 submit i gcloud 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.

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.

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
, a następnie wybierz
. Następnie wybierz „JIRA Software” – „Wypróbuj teraz”. Postępuj zgodnie z instrukcjami, aby utworzyć projekt lub witrynę.

Wybierz JIRA Software.

Utwórz nowy projekt.

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ń.
- Otwórz stronę https://id.atlassian.com/manage/api-tokens.
- Kliknij Create API token (Utwórz token API).
- Wpisz etykietę opisującą token API. Na przykład forge-api-token.
- Kliknij Utwórz.
- 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

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.

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.

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

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

Sprawdź wyjaśnienie.

Otwórz te pliki i poproś Gemini Code Assist o ich wyjaśnienie:
devai-jira-ui-qwiklabs/src/frontend/index.jsxdevai-jira-ui-qwiklabs/src/resolvers/index.js

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

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

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.

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

Weryfikowanie prośby o scalenie w GitLab
Otwórz GitLab i sprawdź, czy w Twoim projekcie są nowe żądania scalenia.


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

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.