GenAI ile JIRA Kullanıcı Hikayeleri Uygulaması

1. Genel Bakış

Bu laboratuvarda, GenAI ile JIRA kullanım hikayesi uygulamasını otomatikleştirecek bir çözüm oluşturacaksınız.

5351e028356cd3ac.png

Öğrenecekleriniz

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

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

Ön koşullar

  • Bu laboratuvarda, Cloud Console ve Cloud Shell ortamlarına aşina olmanız gerekir.

2. Kurulum ve şartlar

Cloud projesi oluşturma

  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ının görünen adıdır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dize otomatik olarak oluşturur. Bu dizenin ne olduğu genellikle önemli değildir. Çoğu kod laboratuvarında proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) referans vermeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele başka bir kimlik oluşturabilirsiniz. Alternatif olarak, kendi anahtarınızı deneyerek kullanılabilir olup olmadığını görebilirsiniz. Bu adımdan sonra değiştirilemez ve proje boyunca geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer (Proje Numarası) olduğunu belirtmek isteriz. Bu üç değer hakkında daha fazla bilgiyi dokümanlar bölümünde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmak çok pahalı değildir. Bu eğitimden sonra faturalandırılmamak için kaynakları kapatmak istiyorsanız oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz deneme programına uygundur.

Ortam kurulumu

Gemini sohbetini açın.

bc3c899ac8bcf488.png

Alternatif olarak, arama çubuğuna "Gemini'ye sor" yazın.

e1e9ad314691368a.png

Cloud AI Companion API'yi etkinleştirin:

66cb6e561e384bbf.png

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

5482c153eef23126.png

Deneyebileceğiniz istemler:

  • Cloud Run'u 5 temel noktada açıklayın.
  • Google Cloud Run Ürün Müdürü olduğunuzu varsayarak bir öğrenciye Cloud Run'u 5 kısa ve önemli noktayla açıklayın.
  • Google Cloud Run Ürün Müdürü olarak, Cloud Run'u Sertifikalı bir Kubernetes Geliştiricisine 5 kısa ve önemli noktayla açıklayın.
  • Google Cloud Run Ürün Müdürü olduğunuzu varsayalım. Kıdemli bir geliştiriciye, Cloud Run'u ne zaman GKE yerine kullanacağınızı 5 kısa ve önemli noktayla açıklayın.

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

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

Google'ın gizlilik taahhüdü

Google, sektörde AI/ML gizlilik taahhüdü yayınlayan ilk şirketlerden biri oldu. Bu taahhüdümüzde, müşterilerin bulutta depolanan verileri üzerinde en yüksek düzeyde güvenlik ve denetime sahip olması gerektiğine olan inancımızı özetliyoruz.

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

Gemini'ye sorduğunuz sorulara (analiz etmesi veya tamamlaması için Gemini'ye gönderdiğiniz giriş bilgileri veya kodlar dahil) istem denir. Gemini'den aldığınız yanıtlara veya kod tamamlamalarına yanıt denir. Gemini, istemlerinizi veya yanıtlarını modellerini eğitmek için veri olarak kullanmaz.

İstemlerin şifrelenmesi

Gemini'ye istem gönderdiğinizde, Gemini'deki temel modele giriş olarak verileriniz aktarılırken şifrelenir.

Gemini'den oluşturulan program verileri

Gemini, birinci taraf Google Cloud kodunun yanı sıra belirli üçüncü taraf kodlarıyla eğitilmiştir. Gemini'nin sunduğu kod tamamlama, oluşturma veya analizler dahil olmak üzere kodunuzun güvenliği, test edilmesi ve etkililiğinden siz sorumlusunuz.

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 üretken yapay zeka modellerinin geliştirilmesini ve kullanımını basitleştirmek ve hızlandırmak için özel olarak tasarlanmıştır.

Google AI Studio, istem mühendisliği ve Gemini API ile prototip oluşturmak ve denemeler yapmak için 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. (İSTEĞE BAĞLI BÖLÜM) Hizmet Hesabı Oluşturma

Bu adımlar laboratuvar kurulumu sırasında uygulandı. Bunları çalıştırmanız gerekmez.

Bu adımlar, hizmet hesabı ve IAM rollerinin nasıl oluşturulacağını göstermek için eklenmiştir.

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

3e0c761ca41f315e.png

Yeni bir hizmet hesabı ve anahtar oluşturmak için açık terminalde aşağıdaki komutları çalıştırın.

Cloud Run uygulamasından Vertex AI Gemini API'ye API çağrıları yapmak için bu hizmet hesabını 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

Bir hizmet hesabı oluşturun ve roller verin.

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

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

6356559df3eccdda.png

Vertex AI API'lerini ve Gemini sohbet uygulamasını 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 sohbet uygulamasını 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

(END OF OPTIONAL SECTION)

5. Cloud Workstations'a erişim izni verme

Cloud Console'da Cloud Workstations'ı açın.

Yapılandırılmış Qwiklabs öğrencisi için Cloud Workstation'a erişim izni verin.

Bu proje için oluşturulan Qwiklabs kullanıcı adını/e-posta adresini kopyalayın ve bir asıl kullanıcı eklemek için kullanın. İş istasyonunu seçin ve "PERMISSIONS" simgesini tıklayın.

Ayrıntılı bilgileri aşağıda bulabilirsiniz.

5cbb861e4f272f7.png

"ADD PRINCIPAL" düğmesini tıklayın.

Qwiklabs öğrencisinin e-posta adresini yapıştırın ve "Cloud Workstations User" rolünü seçin.

dfe53b74453d80b1.png

"Start"yi ve ardından "Launch"yi tıklayarak iş istasyonunu açın ve yerleşik terminali kullanarak aşağıdaki adımlara geçin.

62dccf5c78880ed9.png

GitHub deposunu kopyalama

Bir klasör oluşturun ve GitHub deposunu klonlayın.

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

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

6. Gemini Code Assist'i etkinleştirme

"Gemini" simgesini, ardından sağ alt köşedeki "Login to Google Cloud" simgesini tıklayın.

4a7f4640f66037f.png

8d31b61e23ebeea2.png

Yetkilendirme akışını başlatmak için terminaldeki bağlantıyı tıklayın.

d8575b4066f67745.png

Bağlantıyı takip etmek için "Aç"ı tıklayın.

3a7272fcb985ff5.png

Qwiklabs öğrenci hesabınızı seçin ve sonraki ekranda "Oturum aç"ı tıklayın.

79dc63009ce0ed49.png

Doğrulama kodunu kopyala:

403845a5abc53635.png

Terminale dönüp kodu yapıştırın.

5931f639fe69f5cb.png

Kimlik doğrulamanın tamamlanmasını bekleyin ve ardından "Google projesi seçin"i tıklayın.

614beb055f7aa5e8.png

Pop-up pencerede Qwiklabs projenizi seçin.

Örnek:

70ae6837db397e2a.png

"devai-api/app/routes.py" dosyasını açın, ardından dosyanın herhangi bir yerinde sağ tıklayın ve bağlam menüsünden "Gemini > Explain this""yi seçin.

32b902134440b7c3.png

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

f78bfee770f6be93.png

7. LangChain Araç Setleri

LangChain araç paketleri, LangChain ile uygulamaların geliştirilmesini kolaylaştırmak ve iyileştirmek için tasarlanmış araç paketleridir. Belirli araç setine bağlı olarak çeşitli işlevler sunarlar ancak genellikle şunlara yardımcı olurlar:

  • Harici veri kaynaklarına bağlanma: API'lerden, veritabanlarından ve diğer harici kaynaklardan gelen bilgilere erişip bunları LangChain uygulamalarınıza dahil edin.
  • Gelişmiş istem verme teknikleri: Dil modelleriyle etkileşimleri optimize etmek için önceden oluşturulmuş istemleri kullanın veya özel istemler oluşturun.
  • Dizi 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 araç takımlarından bazıları şunlardır:

  • Temsilci Yürütücü Aracı Kitapları: Web'de gezinme veya kod yürütme gibi işlemler aracılığıyla gerçek dünyayla etkileşime geçebilen temsilciler geliştirmek için kullanılan araçlar.
  • İstem Mühendisliği Aracı Kiti: Etkili istemler oluşturmaya yönelik bir kaynak koleksiyonu.

GitLab Araç Seti

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

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

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

  • Dosya Oluştur: Depoda yeni bir dosya oluşturur.
  • Dosya Okuma: Depodan bir dosyayı okur.
  • Dosyayı Güncelle: Depodaki bir dosyayı günceller.
  • Pull isteği oluştur: Botun çalışma dalından ana dala bir pull isteği oluşturur.
  • Get Issue: Sorunları depodan getirir.
  • Get Issue (Sorunu Getir): Belirli bir sorunla ilgili ayrıntıları getirir.
  • Sorun hakkında yorum yapma: Belirli bir sorun hakkında yorum yayınlar.
  • Dosya Sil: Depodan bir dosyayı siler.

8. GitLab deposu ve araç seti yapılandırması

GitLab'ı açın, herkese açık yeni bir proje oluşturun ve "Settings / Access Tokens" bölümünde Proje Erişim Jetonu'nu ayarlayın.

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

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

112008c7894c3a19.png

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

9. Uygulamayı Cloud Run'a dağıtmaya hazırlanma

Cloud Workstations örneğine dönün ve mevcut terminali kullanın veya yeni bir terminal açın.

9f9682d2b7317e66.png

Web tabanlı bir yetkilendirme akışı aracılığıyla kullanıcı hesabınız için erişim kimlik bilgilerini alın.

Bağlantıyı tıklayın ve doğrulama kodu oluşturmak için adımları uygulayın.

gcloud auth login

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

Ortam değişkenlerinin geri kalanını 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

Hassas bilgilerin terminalde gösterilmesini önlemek için en iyi yöntem read -s kullanmaktır. Bu, ortam değişkenlerini konsolun komut geçmişinde değer gösterilmeden ayarlamanızı sağlayan güvenli bir yöntemdir. Çalıştırdıktan sonra değeri yapıştırıp Enter tuşuna basmanız gerekir.

Bu komut için GitLab kullanıcı kimliğinizi ve depo adınızı güncellemeniz gerekir.

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

119489def27115c8.png

export GITLAB_REPOSITORY="USERID/REPOSITORY"

Ortam değişkenlerinin geri kalanını ayarlayın:

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

10. LangSmith LLM izleme yapılandırması

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

LangSmith entegrasyonu için gerekli 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

11. JIRA yapılandırması

Bu değerler bu laboratuvarda kullanılmadığından, komutları yürütmeden önce bunları belirli JIRA proje değerlerinizle güncellemeniz gerekmez.

Cloud Run hizmeti dağıtımı için gereken 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

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

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

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

Bu laboratuvarda, en iyi uygulamaları uygulayarak Cloud Run'da erişim jetonu ve LangChain API anahtarı değerlerini depolamak ve referans vermek için Secret Manager'ı kullanırız.

JIRA erişim jetonunu Secret Manager'da depolayın.

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

GitLab erişim jetonunu Secret Manager'da depolayın.

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

LangChain API anahtarını Secret Manager'da saklayın.

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

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" \
  --min-instances=1 \
  --max-instances=3

Artifact Registry Docker deposu oluşturmak için Y cevabı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 özelliklerini kullanarak makinenize Docker yüklemenize veya buildpack'ler ya da Cloud Build'i ayarlamanıza gerek kalmadan kaynak kodunuzdan otomatik olarak container görüntüleri oluşturur. Yani yukarıda açıklanan tek komut, gcloud builds submit ve gcloud run deploy komutlarının gerektirdiği işlemleri yapar.

Dockerfile sağladıysanız(bu depoda sağladık) Cloud Build, container görüntülerini otomatik olarak algılayıp oluşturmak için buildpack'lere güvenmek yerine Dockerfile'i kullanır. Derleme paketleri hakkında daha fazla bilgi edinmek için dokümanlara göz atın.

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

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

cloud-run-source-deploy/devai-api'ü açın ve otomatik olarak algılanan güvenlik açıklarını inceleyin. Düzeltme olanlarını kontrol edin ve açıklamaya göre nasıl düzeltilebileceğini öğrenin.

d00c9434b511be44.png

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

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

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

(İSTEĞE BAĞLI BÖLÜM) Cloud Workstation'ı kurma

Cloud Workstations, Google Cloud'da yerleşik güvenlik ve önceden yapılandırılmış ancak özelleştirilebilir geliştirme ortamları sunan yönetilen geliştirme ortamları sağlar. Geliştiricilerinizin yazılım yüklemesini ve kurulum komut dosyalarını çalıştırmasını zorunlu kılmak yerine, ortamınızı yeniden üretilebilir bir şekilde belirten bir iş istasyonu yapılandırması oluşturabilirsiniz. İş istasyonu yapılandırmasında yapılan tüm güncellemeler, iş istasyonları bir sonraki kez başlatıldığında otomatik olarak uygulanır. Geliştiriciler, iş istasyonlarına tarayıcı tabanlı bir IDE üzerinden, birden fazla yerel kod düzenleyiciden (ör. VSCode veya IntelliJ IDEA Ultimate ve PyCharm Professional gibi JetBrains IDE'leri) ya da SSH üzerinden erişir.

Cloud Workstations, geliştirme ortamlarınızı yönetmek için aşağıdaki Google Cloud kaynaklarını kullanır:

  • İş istasyonu kümeleri, belirli bir bölgedeki bir iş istasyonu grubunu ve bu grubun bağlı olduğu VPC ağını tanımlar. İş istasyonu kümeleri, Google Kubernetes Engine (GKE) kümeleriyle ilgili değildir.
  • İş istasyonu yapılandırmaları, iş istasyonları için şablon görevi görür. İş istasyonu yapılandırması; iş istasyonu sanal makine (VM) örneği türü, kalıcı depolama alanı, kapsayıcı görüntüsü tanımlama ortamı, kullanılacak IDE veya Kod Düzenleyici gibi ayrıntıları tanımlar. Yöneticiler ve platform ekipleri, ekiplere veya tek tek geliştiricilere erişim izni vermek için kimlik ve erişim yönetimi (IAM) kurallarını da kullanabilir.
  • İş istasyonları, bulut IDE, dil araçları, kitaplıklar ve daha fazlasını sunan önceden yapılandırılmış geliştirme ortamlarıdır. İstasyonlar isteğe bağlı olarak başlatılabilir veya durdurulabilir ve oturumlar arasında verileri depolamak için kalıcı bir disk eklenmiş olarak projenizdeki Compute Engine sanal makinelerinde çalıştırılabilir.

Yöneticiler ve platform ekipleri, geliştirme ekipleriyle paylaştıkları iş istasyonu yapılandırmaları oluşturur. Her geliştirici, iş istasyonu yapılandırmasına göre bir iş istasyonu oluşturur.

810ae08acb671f4c.png

Bu laboratuvarda tarayıcı tabanlı IDE kullanıyorsanız da Cloud Workstation'lar diğer yaygın geliştirme arayüzlerini de destekler:

  • JetBrains Gateway üzerinden kendi yerel JetBrains IDE'lerinizi kullanabilirsiniz.
  • Yerel VSCode kullanıyorsanız SSH üzerinden uzaktan geliştirme için iş istasyonlarınıza da erişebilirsiniz.
  • Ayrıca, yerel makinenizden Workstation'ınıza SSH ve hatta TCP tünelleri de ayarlayabilirsiniz.

fc95816682f1e3b0.png

(İSTEĞE BAĞLI BÖLÜM) Workstations kümesi oluşturma

Bu adımlar laboratuvar kurulumu sırasında uygulandı. Bunları çalıştırmanız gerekmez.

Bu adımlar, Cloud Workstations kümesinin, yapılandırmasının ve iş istasyonunun nasıl ayarlanacağını göstermek için eklenmiştir.

Bu bölümü inceleyin ve Forge Platform bölümüne geçin.

Workstations kümesi oluşturma:

gcloud workstations clusters create ws-cluster --region=us-central1

Workstations yapılandırması oluşturma

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

Çalışma İstasyonu Oluşturma

gcloud workstations create devai-workstation \
--cluster=ws-cluster \
--config=devai-config \
--region=us-central1

Mevcut iş istasyonlarını Cloud Console'da görüntüleyin. "devai-workstation"i başlatın.

e44784811890cfc8.png

Sağ alt köşedeki "Gemini" simgesini etkinleştirin, yeni tarayıcı sekmesinde oturum açma akışını uygulayın ve oluşturulan kodu konsola kopyalayarak oturumu tamamlayın.

Sol panelde "Gemini" sohbetini açın ve Gemini'ye şunları sorun:

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

8c3af1ad4e612f15.png

(END OF OPTIONAL SECTION)

13. Forge platformu

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'yi yükleme

Terminalde aşağıdaki komutları çalıştırın.

Node Version Manager'ı ( nvm) indirin ve mevcut terminal oturumundaki yolda kullanılabilir hale getirin.

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

nvm'yi yükleyin.

Terminalde aşağıdaki komutu çalıştırarak en son Node.js LTS sürümünü seçin:

nvm install --lts
nvm use --lts

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

npm install -g @forge/cli

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

e4e4e59cf8622e3f.png

JIRA projesini ayarlama

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 gidin, 8654143154cb8665.png simgesini tıklayın ve 47b253090a08932.png'ı seçin. Ardından "JIRA Software" - "Şimdi dene"yi seçin. Proje/site oluşturma işlemini tamamlamak için talimatları uygulayın.

5bab2a96e3b81383.png

JIRA Software'ı seçin.

785bc4d8bf920403.png

Yeni bir proje oluşturun.

8a6e7cdc8224ffa0.png

14. Atlassian API jetonu

CLI'ye giriş yapmak için mevcut bir Atlassian API jetonu oluşturun veya 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 tanımlayacak 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.

Cloud Workstations terminalinde aşağıdaki komutu ç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. 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 toplama isteğinde bulunulduğunda "No" yanıtını verin.

forge settings set usage-analytics false

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

forge whoami

Örnek çıkış.

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

Forge uygulaması oluşturma

"~/github/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
  • Ürün seçin: Jira
  • Şablon seçin: jira-issue-panel

bc94e2da059f15cf.png

Uygulama klasörüne geçin.

cd devai-jira-ui-qwiklabs/

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:

  • Ü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ı içeren 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.

88f6dd543827543.png

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

forge logs

Atlassian Developer Console

Dağıtılan uygulamaları Atlassian Developer Console'da da görüntüleyip yönetebilirsiniz.

6a0e6ea177054fe6.png

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

56a7f74de6d2a01d.png

Forge uygulama manifestini ve kaynak kodunu inceleme

"devai-jira-ui-qwiklabs/manifest.yml" dosyasını açıp Gemini Code Assist'i kullanarak dosyayı açıklayın.

4a4377922ab9a927.png

Açıklamayı inceleyin.

5dd53138212dc686.png

Aşağıdaki dosyaları açıp Gemini Code Assist'ten açıklama yapmasını isteyin:

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

c99f48a5bf624501.png

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

GCP PROJE KİMLİĞİ'nin 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 hizmet 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

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

forge variables list

Örnek çıkış

fb337c19c9009ac5.png

Forge uygulama manifestini ve kodunu güncelleme

Bu kod snippet'lerini, sample-devai-jira-ui klasörünün altındaki depoda 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ç noktayla değiştirin.

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

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

Mevcut getText işlevinin altına satır ekleyin.

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

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

Ön uç/dizin 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ğinize/deponuza ait bağlantıyı güncelleyin.

GIT-USERID ve GIT-REPO değerlerini iki yerde güncellemeniz gerekir.

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 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 uygulamasını yeniden dağıtma

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

"@forge/api": "4.0.0",

Bağımlılıkları yükleyin:

npm install

Güncellenen uygulamayı dağıtma:

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ükleme:

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ını kullanma

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

Daha önce eklenmişse önceki paneli kaldırmanız gerekir.

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

1adca6205af0f0c6.png

Jira yorumlarını kontrol etme

DEVAI API'den yanıt aldıktan sonra JIRA sorununa iki yorum eklenir.

  • GitLab birleştirme isteği
  • Gemini kullanıcı hikayesi uygulama ayrıntıları

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

e3f38114330d504f.png

GitLab birleştirme isteği oluşturma özelliğini etkinleştirme

devai-api/app/routes.py dosyasını açın ve generate_handler yöntemindeki aşağıdaki satırların yorumunu kaldırın:

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 uygulamasını yeniden dağıtma

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

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

Aynı terminal oturumunu kullanıyorsanız tüm ortam değişkenleri hâlâ ayarlanmış olabilir.

Terminalde "echo $GITLAB_REPOSITORY" komutunu çalıştırarak kontrol edin.

Yeni bir terminal oturumu açıldıysa bunları sıfırlamak için aşağıdaki adımları uygulayın.

Uygulamayı yeniden dağıtmadan önce gerekli ortam değişkenlerini sıfırladığınızdan emin olun.

Bu komut için GitLab kullanıcı kimliğinizi ve depo adınızı güncellemeniz gerekir.

export GITLAB_REPOSITORY="USERID/REPOSITORY"

Ortam değişkenlerinin geri kalanını ayarlayın:

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"
export JIRA_CLOUD=true

GitLab araç seti, birleştirme isteğiyle ilgili değişiklikleri göndermek için "devai" dalını kullanır.

Bu dalı daha önce oluşturduğunuzdan emin olun.

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" \
  --min-instances=1 \
  --max-instances=3

Uçtan uca entegrasyonu doğrulama

Düğmeyi tekrar tıklayarak JIRA görevinden süreci başlatın ve GitLab deposundaki birleştirme isteği bölümünde ve LangSmith'te çıktıyı doğrulayın.

GitLab birleştirme isteği ayrıntıları.

1cd438a10b4ce2b3.png

db6dc6c9a46e8f7b.png

LangSmith LLM izleri

LangSmith portalını açın ve JIRA sorun oluşturma çağrısı için LLM izlemesini inceleyin.

Örnek LangSmith LLM izlemesi.

1ae0f88ab885f69.png

(İSTEĞE BAĞLI BÖLÜM) Değişikliklerinizi GitHub deposuna gönderin

GitHub web sitesine gidip bu laboratuvardaki değişiklikleri kişisel deponuza göndermek için yeni bir depo oluşturun.

Cloud Workstations örneğine geri 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 şifre girip 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 herkese açık anahtarı GitHub hesabınıza ekleyin.

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

Anahtar adı için "qwiklabs-key" kullanın ve son komutun çıktısını kopyalayıp yapıştırın.

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

cd ~/github/genai-for-developers

git remote rm origin

Yukarıda oluşturulan deposu 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

15. Tebrikler!

Tebrikler, laboratuvarı tamamladınız.

Ele aldığımız konular:

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

Sıradaki adım:

  • Daha fazla uygulamalı oturum yakında kullanıma sunulacak.

Temizleme

Bu eğiticide kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız kaynakları içeren projeyi silin veya projeyi saklayıp kaynakları tek tek 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.