GenAI ile JIRA Kullanıcı Hikayeleri Uygulaması

1. Genel Bakış

Bu laboratuvarda, üretken yapay zeka ile JIRA kullanıcı hikayelerinin uygulanmasını otomatikleştirecek bir çözüm oluşturacaksınız.

a4ba5d8788dc40.png

Öğrenecekleriniz

Laboratuvarın birkaç ana bölümü vardır:

  • Gemini API'leriyle entegre olacak Cloud Run uygulaması dağıtma
  • JIRA için Atlassian Forge uygulaması oluşturma ve dağıtma
  • GitLab görevlerini otomatikleştirmek için LangChain ReAct ajanlarını kullanma

Ön koşullar

  • Bu laboratuvarda, Cloud Console ve Cloud Shell ortamlarına aşina olduğunuz varsayılır.

2. Kurulum ve şartlar

Cloud projesi kurulumu

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Ortam kurulumu

Gemini ile etkileşimi açın.

bc3c899ac8bcf488.png

Alternatif olarak, arama çubuğuna "Gemini'a Sor" yazın.

e1e9ad314691368a.png

Google Cloud için Gemini API'yi etkinleştirin:

990a0ceea7d05531.png

"Start chatting"yı tıklayın ve denemek için örnek sorulardan birini yanıtlayın veya kendi isteminizi yazın.

ed120d672468b412.png

Deneyebileceğiniz istemler:

  • Cloud Run'ı 5 temel noktada açıklayın.
  • Google Cloud Run Ürün Yöneticisi olarak, Cloud Run'ı bir öğrenciye 5 kısa madde halinde açıklayın.
  • Google Cloud Run Ürün Yöneticisi olarak, Cloud Run'ı 5 kısa madde halinde Certified Kubernetes Developer'a açıkla.
  • Google Cloud Run Ürün Yöneticisi olarak, Cloud Run'ı GKE'ye kıyasla ne zaman kullanacağınızı 5 kısa madde halinde kıdemli bir geliştiriciye açıklayın.

Daha iyi istemler yazma hakkında daha fazla bilgi edinmek için İstem Kılavuzu'na göz atın.

Google Cloud için Gemini, verilerinizi nasıl kullanır?

Google'ın gizlilik taahhüdü

Google, sektörde yapay zeka/makine öğrenimi gizlilik taahhüdü yayınlayan ilk şirketlerden biriydi. Bu taahhütte, müşterilerin bulutta depolanan verileri üzerinde en yüksek düzeyde güvenlik ve denetime sahip olması gerektiğine inandığımız belirtilir.

Gönderdiğiniz ve aldığınız veriler

Gemini'a sorduğunuz sorular (Gemini'a analiz etmesi veya tamamlaması için gönderdiğiniz giriş bilgileri ya da kodlar dahil) istem olarak adlandırılır. Gemini'dan aldığınız yanıtlar veya kod tamamlama işlemleri, yanıt olarak adlandırılır. Gemini, istemlerinizi veya yanıtlarını modellerini eğitmek için veri olarak kullanmaz.

İstemlerin şifrelenmesi

Gemini'a istem gönderdiğinizde verileriniz, Gemini'daki temel modele giriş olarak aktarım sırasında şifrelenir.

Gemini'dan oluşturulan program verileri

Gemini, birinci taraf Google Cloud kodu ve seçili üçüncü taraf kodu kullanılarak eğitilmiştir. Gemini'ın sunduğu kod tamamlama, oluşturma veya analiz özellikleri de dahil olmak üzere kodunuzun güvenliği, testi ve etkinliği sizin sorumluluğunuzdadır.

Google'ın istemlerinizi nasıl işlediği hakkında daha fazla bilgi edinin.

3. İstemleri test etme seçenekleri

İstemleri test etmek için çeşitli seçenekleriniz vardır.

Vertex AI Studio, Google Cloud'un Vertex AI platformunun bir parçasıdır ve özellikle üretken yapay zeka modellerinin geliştirilmesini ve kullanılmasını basitleştirmek ve hızlandırmak için tasarlanmıştır.

Google AI Studio, istem mühendisliği ve Gemini API ile prototip oluşturma ve deneme yapmaya yönelik web tabanlı bir araçtır.

Google Gemini web uygulaması (gemini.google.com), Google'ın Gemini yapay zeka modellerinin gücünü keşfetmenize ve kullanmanıza yardımcı olmak için tasarlanmış web tabanlı bir araçtır.

4. Uygulamayı inceleme

Hizmet hesabı oluşturma

Google Cloud Console'a dönün ve arama çubuğunun sağındaki simgeyi tıklayarak Cloud Shell'i etkinleştirin.

3e0c761ca41f315e.png

Açılan terminalde, yeni bir hizmet hesabı ve anahtarlar oluşturmak için aşağıdaki komutları çalıştırın.

Bu hizmet hesabını, Cloud Run uygulamasından Vertex AI Gemini API'ye API çağrıları yapmak için kullanacaksınız.

Qwiklabs proje ayrıntılarınızı kullanarak proje ayrıntılarını yapılandırın.

Örnek: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

Hizmet hesabı oluşturun.

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"

Rol atama

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"

Yetkilendirmeniz istenirse devam etmek için "Yetkilendir"i tıklayın.

6356559df3eccdda.png

Vertex AI API'lerini ve Gemini ile etkileşimi kullanmak için gerekli hizmetleri etkinleştirin.

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

Vertex AI API'lerini ve Gemini ile etkileşimi kullanmak için gerekli hizmetleri etkinleştirin.

gcloud services enable \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    runapps.googleapis.com \
    workstations.googleapis.com \
    servicemanagement.googleapis.com \
    secretmanager.googleapis.com \
    containerscanning.googleapis.com

GitHub deposunu klonlama

GitHub deposunu klonlayın.

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

Cloud Shell Düzenleyici'yi açma

7e71f46b6c7b67ca.png

"File / Open Folder" menü öğesini kullanarak "genai-for-developers" seçeneğini açın.

"devai-api/app/routes.py" dosyasını açın, ardından dosyanın herhangi bir yerini sağ tıklayıp bağlam menüsünden "Gemini > Explain this"" seçeneğini belirleyin.

34054e1fad005ff8.png

Gemini'ın seçili dosyayla ilgili açıklamasını inceleyin.

f73af988a723142.png

5. GitLab deposu ve Toolkit yapılandırması

Bu laboratuvarda, GitLab birleştirme isteği oluşturma işlemini otomatikleştirmek için GitLabToolkit'i kullanacaksınız.

LangChain Toolkits'e Genel Bakış

LangChain Toolkits, LangChain ile uygulama geliştirmeyi kolaylaştırmak ve geliştirmek için tasarlanmış araç setleridir. Belirli araç setine bağlı olarak çeşitli işlevler sunarlar ancak genel olarak şunlara yardımcı olurlar:

  • Harici veri kaynaklarına bağlanma: API'lerden, veritabanlarından ve diğer harici kaynaklardan gelen bilgilere erişip bu bilgileri LangChain uygulamalarınıza dahil edin.
  • Gelişmiş istem teknikleri: Önceden oluşturulmuş istemleri kullanın veya dil modelleriyle etkileşimleri optimize etmek için özel istemler oluşturun.
  • Zincir oluşturma ve yönetme: Karmaşık zincirleri kolayca oluşturun ve verimli bir şekilde yönetin.
  • Değerlendirme ve izleme: LangChain uygulamalarınızın ve zincirlerinizin performansını analiz edin.

Popüler LangChain Toolkits'lerden bazıları:

  • Agent Executor Toolkits: Web'de gezinme veya kod yürütme gibi işlemlerle gerçek dünyayla etkileşime girebilen aracıları geliştirmeye yönelik araçlar.
  • İstem Mühendisliği Araç Seti: Etkili istemler oluşturmaya yönelik kaynak koleksiyonu.

GitLab Toolkit'e Genel Bakış

Gitlab araç seti, bir LLM aracısının bir GitLab deposuyla etkileşim kurmasını sağlayan araçlar içerir. Bu araç, python-gitlab kitaplığı için bir sarmalayıcıdır.

GitLab araç seti aşağıdaki görevleri gerçekleştirebilir:

  • Dosya Oluştur: Kod deposunda yeni bir dosya oluşturur.
  • Dosya Okuma: Kod deposundaki bir dosyayı okur.
  • Update File (Dosyayı Güncelle) - Depodaki bir dosyayı günceller.
  • pull isteği Oluştur: Botun çalışma dalından temel dala pull isteği oluşturur.
  • Get Issues: Depodaki sorunları getirir.
  • Get Issue: Belirli bir sorunla ilgili ayrıntıları getirir.
  • Sorun hakkında yorum yapma: Belirli bir sorun hakkında yorum yayınlar.
  • Dosyayı Sil: Dosyayı depodan siler.

GitLab Proje Ayarları

GitLab'i açın, yeni bir proje oluşturun ve "Settings / Access Tokens" bölümünde proje erişim jetonunu ayarlayın.

Aşağıdaki ayrıntıları kullanın:

  • Jeton adı: devai-api-qwiklabs
  • Rol: Maintainer
  • Kapsamları seçin: api

c205fd7524c456dc.png

Erişim jetonu değerini kopyalayıp dizüstü bilgisayarınızdaki geçici bir dosyaya yapıştırın. Bu değer sonraki adımlarda kullanılacaktır.

6. Cloud Run'da uygulama dağıtmaya hazırlanma

Cloud Shell Düzenleyici'ye dönün ve mevcut bir terminali kullanın veya yeni bir terminal açın.

941f0c1692037664.png

Qwiklabs proje ayrıntılarınızı kullanarak proje ayrıntılarını yapılandırın.

Örnek: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR-QWIKLABS-PROJECT-ID

Diğer ortam değişkenlerini ayarlayın:

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

GitLab entegrasyonu için gereken ortam değişkenlerini ayarlayın.

export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-token

Terminalde hassas bilgilerin açığa çıkmasını önlemek için en iyi yöntem, read -s GITLAB_PERSONAL_ACCESS_TOKEN kullanmaktır. Bu, değerin konsolun komut geçmişinde görünmediği güvenli bir ortam değişkeni ayarlama yöntemidir. Çalıştırdıktan sonra değeri yapıştırıp Enter tuşuna basmanız gerekir. Ortam değişkenini de dışa aktarmanız gerekir: export GITLAB_PERSONAL_ACCESS_TOKEN

Bu komut, GitLab kullanıcı kimliğinizi ve depo adınızı güncellemenizi gerektirir.

Örnek: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"

119489def27115c8.png

export GITLAB_REPOSITORY="USERID/REPOSITORY"

Diğer ortam değişkenlerini ayarlayın:

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

LangSmith LLM izleme yapılandırması

Aracı izleme bilgilerini LangSmith'te görüntülemek istiyorsanız hesabı ayarlayın, aksi takdirde komutları olduğu gibi yürütün.

LangSmith hesabı oluşturun ve Ayarlar bölümünde bir Hizmet API anahtarı oluşturun. https://smith.langchain.com/settings

LangSmith entegrasyonu için gereken ortam değişkenlerini ayarlayın.

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

export LANGCHAIN_API_KEY=langchain-service-api-key

JIRA yapılandırması

Bu değerler bu laboratuvarda kullanılmaz. Bu nedenle, komutları yürütmeden önce bunları kendi JIRA projenizin değerleriyle güncellemeniz gerekmez.

Cloud Run hizmeti dağıtımı için gerekli ortam değişkenlerini ayarlayın.

export JIRA_API_TOKEN=jira-token
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true

API anahtarı oluştur

Cloud Console / API'ler ve Hizmetler / Kimlik Bilgileri bölümünde yeni bir API anahtarı oluşturun.

Bu anahtar, Cloud Run uygulamasına yapılan JIRA API çağrılarının kimliğini doğrulamak için kullanılır.

Üretim ortamı için oluşturulan API anahtarı için uygulama ve API kısıtlamalarını yapılandırırsınız. Uygulama kısıtlamaları, bir API anahtarının kullanımını belirli web siteleriyle(ör. JIRA örneğiniz) sınırlar.

Cloud Run hizmeti dağıtımı için gerekli ortam değişkenlerini ayarlayın.

export DEVAI_API_KEY=your-api-key

Secret Manager'da gizli anahtar oluşturma

Bu laboratuvarda en iyi uygulamaları takip ediyor ve Cloud Run'da erişim jetonlarını, API anahtarını ve LangChain API anahtarı değerlerini depolayıp bunlara referans vermek için Secret Manager'ı kullanıyoruz.

Gerekli gizli anahtarları Secret Manager'da oluşturun ve saklayın.

echo -n $DEVAI_API_KEY | \
 gcloud secrets create DEVAI_API_KEY \
 --data-file=-

echo -n $JIRA_API_TOKEN | \
 gcloud secrets create JIRA_API_TOKEN \
 --data-file=-

echo -n $GITLAB_PERSONAL_ACCESS_TOKEN | \
 gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN \
 --data-file=-

echo -n $LANGCHAIN_API_KEY | \
 gcloud secrets create LANGCHAIN_API_KEY \
 --data-file=-

7. Devai-API'yi Cloud Run'a dağıtma

Doğru klasörde olduğunuzdan emin olun.

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

Uygulamayı Cloud Run'a dağıtın.

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

Artifact Registry Docker deposu oluşturmak için Y yanıtını verin.

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

Aşağıdaki gcloud run deploy SERVICE_NAME --source=. akışını inceleyin. Daha fazla bilgi edinin.

5c122a89dd11822e.png

Bu komut, arka planda Google Cloud'un buildpacks ve Cloud Build hizmetlerini kullanarak makinenize Docker'ı yüklemenize veya buildpack'leri ya da Cloud Build'i ayarlamanıza gerek kalmadan kaynak kodunuzdan otomatik olarak kapsayıcı görüntüleri oluşturur. Yani yukarıda açıklanan tek komut, aksi takdirde gcloud builds submit ve gcloud run deploy komutlarının kullanılmasını gerektirecek işlemi yapar.

Dockerfile sağladıysanız(bu depoda yaptığımız gibi) Cloud Build, container görüntülerini otomatik olarak algılamak ve oluşturmak için buildpack'lere güvenmek yerine bunları kullanır. Buildpack'ler hakkında daha fazla bilgi edinmek için dokümanları inceleyin.

Console'da Cloud Build günlüklerini inceleyin.

Oluşturulan Docker görüntüsünü Artifact Registry'de inceleyin.

Cloud Console'da Cloud Run örneği ayrıntılarını inceleyin.

Test uygulaması

Curl komutunu çalıştırarak uç noktayı test edin.

Komutu çalıştırmadan önce Cloud Run hizmeti URL'nizle güncelleyin.

Örnek:

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

8. Hikaye uygulamasını otomatikleştirme

Forge, geliştiricilerin Jira, Confluence, Compass ve Bitbucket gibi Atlassian ürünleriyle entegre olan uygulamalar oluşturmasına olanak tanıyan bir platformdur.

eda6f59ff15df25e.png

Forge CLI'yı yükleme

Aşağıdaki komutu çalıştırarak Forge CLI'yı genel olarak yükleyin:

npm install -g @forge/cli

Bu laboratuvarda oturum açmak için ortam değişkenlerini kullanacağız.

e4e4e59cf8622e3f.png

JIRA projesi oluşturma

JIRA projeleri oluşturmak/görüntülemek için kişisel hesabınızı kullanın.

Mevcut JIRA projelerinizi inceleyin: https://admin.atlassian.com/

Kişisel hesabınızı kullanarak yeni bir JIRA projesi oluşturun.

https://team.atlassian.com/your-work adresine gidip 8654143154cb8665.png simgesini tıklayın ve 47b253090a08932.png seçeneğini belirleyin. Ardından "JIRA Software" - "Şimdi deneyin"i seçin. Talimatları uygulayarak proje/site oluşturma işlemini tamamlayın.

5bab2a96e3b81383.png

JIRA Software'i seçin.

785bc4d8bf920403.png

Yeni bir proje oluşturun.

8a6e7cdc8224ffa0.png

Atlassian API jetonu oluşturma

CLI'ya giriş yapmak için Atlassian API jetonu oluşturun veya mevcut bir jetonu kullanın.

KSA, komutları çalıştırırken jetonunuzu kullanır.

  1. https://id.atlassian.com/manage/api-tokens adresine gidin.
  2. Create API token'ı (API jetonu oluştur) tıklayın.
  3. API jetonunuzu açıklayan bir etiket girin. Örneğin, forge-api-token.
  4. Oluştur'u tıklayın.
  5. Panoya kopyala'yı tıklayın ve iletişim kutusunu kapatın.

Forge ortam ayarlarını yapılandırma

Cloud Console'a dönün ve terminalde aşağıdaki komutları çalıştırın.

Forge komutlarını kullanmaya başlamak için Forge KSA'ya giriş yapın.

JIRA/FORGE e-posta adresinizi ayarlayın. E-posta adresinizle değiştirin.

export FORGE_EMAIL=your-email

Forge API jetonunu ayarlayın. kısmını JIRA API jetonunuzla değiştirin.

export FORGE_API_TOKEN=your-jira-api-token

Aşağıdaki komutu çalıştırarak forge cli'yi test edin. Analiz toplamanız istendiğinde "No" yanıtını verin.

forge settings set usage-analytics false

Giriş yapıp yapmadığınızı kontrol edin.

forge whoami

Örnek çıktı.

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

Forge uygulaması oluşturma

"~/genai-for-developers" klasöründe olduğunuzdan emin olun.

Forge uygulaması oluşturmak için komutu çalıştırın.

forge create

İstendiğinde aşağıdaki değerleri kullanın:

  • Uygulama adı: devai-jira-ui-qwiklabs
  • Bir kategori seçin: UI Kit
  • Bir ürün seçin: Jira
  • Şablon seçin: jira-issue-panel

bc94e2da059f15cf.png

Uygulama klasörüne geçin.

cd devai-jira-ui-qwiklabs/

Bağımlılıkları yüklemek için komutu çalıştırın.

npm install

Dağıtım komutunu çalıştırın.

forge deploy

Örnek çıktı:

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.

Uygulamayı yükleyin.

forge install

İstendiğinde aşağıdaki değerleri kullanın:

  • Bir ürün seçin: Jira
  • Site URL'sini girin: your-domain.atlassian.net

Örnek çıktı:

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 sitenizi açın ve aşağıdaki açıklamayı kullanarak yeni bir JIRA görevi oluşturun:

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.

Görevi açtığınızda "devai-jira-ui-qwiklabs" düğmesini görürsünüz.

Düğmeyi tıklayın ve kullanıcı arayüzündeki değişiklikleri inceleyin.

a64378e775125654.png

Forge arka uç günlüklerini görüntüleyin.

forge logs

Atlassian Developer Console

Ayrıca, dağıtılan uygulamaları Atlassian Play Console'da görüntüleyip yönetebilirsiniz.

10281496d8181597.png

Günlükleri inceleyin: Development ortamına geçin,

d5c3b1a18dee166e.png

Forge uygulama manifestini ve kaynak kodunu inceleme

"devai-jira-ui-qwiklabs/manifest.yml" dosyasını açın ve yapılandırmayı açıklamak için Gemini Code Assist'i kullanın.

8710dc7cd343a6a4.png

Açıklamayı inceleyin.

e4c9052a0337527d.png

Aşağıdaki dosyaları açın ve Gemini Code Assist'ten bunları açıklamasını isteyin:

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

3283420f190cda21.png

Forge uygulamasını DevAI API Cloud Run uç noktasıyla güncelleme

GCP PROJECT ID ayarlanıp ayarlanmadığını kontrol edin:

gcloud config get project

Aksi takdirde, Qwiklabs laboratuvar sayfasındaki proje kimliğini kullanarak GCP projenizi ayarlayın:

Örnek: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

Cloud Run hizmeti URL'sini ayarlayın:

export DEVAI_API_URL=$(gcloud run services list --filter="(devai-api)" --format="value(URL)")

forge variables set DEVAI_API_URL $DEVAI_API_URL

Set DEVAI API Key:

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

forge variables set --encrypt DEVAI_API_KEY $DEVAI_API_KEY

Aşağıdaki komutu çalıştırarak onaylayın:

forge variables list

Örnek çıktı

f63a751f0d6211ff.png

Forge uygulama manifestini ve kodunu güncelleme

Bu kod snippet'lerini, depodaki sample-devai-jira-ui klasöründe bulabilirsiniz.

Manifest dosyasını düzenleyicide açın: devai-jira-ui-qwiklabs/manifest.yml

Dosyanın sonuna aşağıdaki satırları ekleyin. Cloud Run uç noktasını, dağıttığınız uç nokta ile değiştirin.

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

Çözücüleri/dizin dosyasını düzenleyicide açın: devai-jira-ui-qwiklabs/src/resolvers/index.js

Mevcut getText işlevinin altına aşağıdaki satırları ekleyin.

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

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

Ön uç/index dosyasını düzenleyicide açın: devai-jira-ui-qwiklabs/src/frontend/index.jsx

index.jsx yerine aşağıdaki içeriği girin. GitLab kullanıcı kimliğinizin/deponuzun bağlantısını güncelleyin.

YOUR-GIT-USERID ve YOUR-GIT-REPO değerlerini güncellemeniz gereken iki yer vardır.

Dosyada bu satırı arayın ve değişiklikleri yapın:

https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests

import React from 'react';
import ForgeReconciler, { Text, Link, useProductContext } from '@forge/react';
import { requestJira } from '@forge/bridge';
import { invoke } from '@forge/bridge';
import api, { route, assumeTrustedRoute } from '@forge/api';

const devAIApiKey = await invoke("getApiKey")
const devAIApiUrl = await invoke("getDevAIApiUrl")


const App = () => {
  const context = useProductContext();

  const [description, setDescription] = React.useState();

  const fetchDescriptionForIssue = async () => {
    const issueId = context?.extension.issue.id;
  
    const res = await requestJira(`/rest/api/2/issue/${issueId}`);
    const data = await res.json();
    
    const bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;

    const generateRes = await api.fetch(devAIApiUrl+'/create-gitlab-mr,
      {
        body: bodyGenerateData,
        method: 'post',
        headers: {
          'Content-Type': 'application/json',
          'x-devai-api-key': devAIApiKey,
         },
      }
    )

    const resData = await generateRes.text();

    // Add link to the GitLab merge request page as a comment
    await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      },
      body: `{"body": "[GitLab Merge Request|https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests]"}`
    });


    return "Response will be added as a comment. Please refresh in a few moments.";
  };

  React.useEffect(() => {
    if (context) {
      fetchDescriptionForIssue().then(setDescription);
    }
  }, [context]);

  return (
    <>
      <Text>{description}</Text>
      <Link href='https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests' openNewTab={true}>GitLab Merge Request</Link>
    </>
  );
};

ForgeReconciler.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

Forge uygulamasını yeniden dağıtma

package.json dosyasına bağımlılık ekleyin:

"@forge/api": "4.0.0",

Bağımlılıkları yüklemek için komutu çalıştırın:

npm install

Güncellenen uygulamayı dağıtın:

forge deploy

Örnek çıktı:

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

Güncellenen uygulamayı yükleyin:

forge install --upgrade

ef17c7da9b2962d8.png

Örnek çıktı:

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.

Test Forge uygulaması

JIRA projenizde mevcut bir JIRA görevini açın veya yeni bir görev oluşturun.

Önceki panel zaten eklenmişse onu kaldırmanız gerekir.

"..." simgesini tıklayın ve menüden kaldır'ı seçin. Ardından düğmeyi tekrar tıklayabilirsiniz.

460503e8b2014b52.png

Jira yorumlarını kontrol etme

DEVAI API'den yanıt aldığınızda JIRA sorununa bir yorum eklenir.

  • GitLab birleştirme isteği bağlantısı

Görünümü yenilemek için "History" ve "Comments" sekmeleri arasında geçiş yapın.

9539d2bd3cbdad28.png

GitLab birleştirme isteğini doğrulama

GitLab'i açın ve projenizde yeni birleştirme istekleri olup olmadığını kontrol edin.

4c2345a89bfe71ee.png

fa3a552923cd70f1.png

LangSmith LLM izleri

LLM izlemeyi yapılandırdıysanız LangSmith portalını açın ve GitLab birleştirme isteği oluşturma çağrısı için LLM izlemeyi inceleyin.

Örnek LangSmith LLM izi.

1ae0f88ab885f69.png

9. Değişikliklerinizi GitHub deposuna gönderin

(İSTEĞE BAĞLI BÖLÜM)

GitHub web sitesine gidin ve bu laboratuvardaki değişiklikleri kişisel deponuza aktarmak için yeni bir depo oluşturun.

Cloud Console'a dönün ve terminalde Git kullanıcı adını ve e-posta adresini ayarlayın.

Komutları çalıştırmadan önce değerleri güncelleyin.

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

SSH anahtarı oluşturun ve GitHub deposuna ekleyin.

Komutları çalıştırmadan önce e-postanızı güncelleyin.

Anahtar oluşturma işlemini tamamlamak için parolayı girmeyin ve Enter tuşuna birden çok kez basmayın.

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

ssh-add ~/.ssh/id_ed25519

cat ~/.ssh/id_ed25519.pub

Oluşturulan genel anahtarı GitHub hesabınıza ekleyin.

https://github.com/settings/keys adresini açın ve "New SSH key" simgesini tıklayın.

Anahtar adı için "qwiklabs-key" kullanın ve son komuttan elde edilen çıkışı kopyalayıp yapıştırın.

Terminale geri dönün, değişiklikleri işleyin ve gönderin.

cd ~/genai-for-developers

git remote rm origin

Yukarıda oluşturulan depoyu kullanarak uzak kaynağı ayarlayın.

Depo URL'nizle değiştirin.

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

Değişiklikleri ekleyin, kaydedin ve gönderin.

git add .

git commit -m "lab changes"

git push -u origin main

10. Tebrikler!

Tebrikler, laboratuvarı tamamladınız.

İşlediğimiz konular:

  • Gemini API'lerle entegre edilecek Cloud Run uygulamalarını dağıtma
  • JIRA için Atlassian Forge uygulaması oluşturma ve dağıtma
  • GitLab görevlerini otomatikleştirmek için LangChain ReAct ajanlarını kullanma.
  • LangSmith'te LLM izlerini inceleme

Sıradaki adım:

  • Daha fazla uygulamalı oturum geliyor.

Temizleme

Bu eğitimde kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini önlemek amacıyla kaynakları içeren projeyi silin veya projeyi koruyup tek tek kaynakları silin.

Projeyi silme

Faturalandırılmanın önüne geçmenin en kolay yolu, eğitim için oluşturduğunuz projeyi silmektir.

©2024 Google LLC. Tüm hakları saklıdır. Google ve Google logosu, Google LLC şirketinin ticari markalarıdır. Diğer tüm şirket ve ürün adları ilişkili oldukları şirketlerin ticari markaları olabilir.