1. Genel Bakış
Bu laboratuvarda, CICD ardışık düzenini ayarlayacak ve kod inceleme adımlarını otomatikleştirmek için Gemini ile entegrasyon yapacaksınız.

Öğrenecekleriniz
Bu laboratuvarda şunları yapmayı öğreneceksiniz:
- GitHub, GitLab ve CircleCI'da üretken yapay zeka kod inceleme otomasyonu adımları ekleme
- LangChain ReAct aracılarını ve araç kitlerini kullanarak GitLab sorunlarına yorum yapma ve JIRA biletleri açma gibi görevleri otomatikleştirme
Ö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
- 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.



- 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_IDolarak 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.
- 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şim başlatın.

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

Cloud AI Companion API'yi etkinleştirin:

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

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'ı ne zaman kullanacağınızı ve GKE'yi 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 Rehberi'ne 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 üzerinde 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
Mevcut devai cli istemlerini değiştirmek/uzatmak isterseniz birkaç seçeneğiniz 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ılması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şturma ve deneme yapmaya yönelik web tabanlı bir araçtır. 1 milyon parçalık bağlam penceresine sahip Gemini 1.5 Pro'ya kaydolun veya daha fazla bilgi edinin.
- Gemini web uygulaması (gemini.google.com)
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.
- Android için Google Gemini mobil uygulaması ve iOS'te Google uygulaması
4. Hizmet hesabı oluşturma
Arama çubuğunun sağındaki simgeyi tıklayarak Cloud Shell'i etkinleştirin.

Açılan terminalde, Vertex AI API'lerini ve Gemini ile etkileşim özelliğini kullanmak için gerekli hizmetleri etkinleştirin.
gcloud services enable \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
cloudresourcemanager.googleapis.com \
secretmanager.googleapis.com
Yetkilendirmeniz istenirse devam etmek için "Yetkilendir"i tıklayın.

Yeni bir hizmet hesabı ve anahtarlar oluşturmak için aşağıdaki komutları çalıştırın.
Bu hizmet hesabını, CICD ardışık düzenlerinden Vertex AI Gemini API'ye API çağrıları yapmak için kullanacaksınız.
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 --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" --condition None
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor" --condition None
gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
5. GitHub deposunu kişisel GitHub deponuza çatallama
https://github.com/GoogleCloudPlatform/genai-for-developers/fork adresine gidin ve GitHub kullanıcı kimliğinizi sahip olarak seçin.
Yalnızca "ana" dalı kopyalama seçeneğinin işaretini kaldırın.
"Create fork" öğesini tıklayın.
6. GitHub Actions iş akışlarını etkinleştirme
Tarayıcıda çatallanmış GitHub deposunu açın ve iş akışlarını etkinleştirmek için "Actions" sekmesine geçin.

7. Depo gizli anahtarları ekleme
Çatal oluşturulan GitHub deposunda "Settings / Secrets and variables / Actions" altında bir depo gizli anahtarı oluşturun.
"GOOGLE_API_CREDENTIALS" adlı bir depo gizli anahtarı ekleyin.

Google Cloud Shell penceresine/sekmesine geçin ve Cloud Shell terminalinde aşağıdaki komutu çalıştırın.
cat ~/vertex-client-key.json
Dosya içeriğini kopyalayıp gizli anahtar değeri olarak yapıştırın.

Değer olarak Qwiklabs proje kimliğinizle PROJECT_ID gizli anahtarını ekleyin 
8. GitHub Actions iş akışını çalıştırma
Tarayıcıda GitHub deponuza gidin ve iş akışını çalıştırın.
İş akışı, kod gönderme veya manuel yürütme sırasında çalışacak şekilde yapılandırılır.
Tüm iş akışları bölümünde "GenAI For Developers"yı seçin ve "main" dalını kullanarak "Run workflow"yı tıklayın.

Sonuçları inceleyin:

Test kapsamı komutunun sonuçları:
devai review testcoverage -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Kod inceleme komutunun sonuçları:
devai review code -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Performans inceleme komutunun sonuçları:
devai review performance -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Güvenlik inceleme komutunun sonuçları:
devai review security -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Engelleyiciler, komutun sonuçlarını inceler:
devai review blockers -c ${{ github.workspace }}/sample-app/pom.xml

9. Depoyu klonlama
Cloud Shell terminaline dönün ve depoyu klonlayın.
GitHub deposu için bir klasör oluşturun.
mkdir github
cd github
Komutları çalıştırmadan önce YOUR-GITHUB-USERID yerine GitHub kullanıcı kimliğinizi girin.
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"
git clone https://github.com/YOUR-GITHUB-USERID/genai-for-developers.git
Klasörü değiştirin ve iş akışı dosyasını Cloud Shell Düzenleyici'de açın.
cd genai-for-developers
cloudshell edit .github/workflows/devai-review.yml
Yapılandırma dosyası IDE'de gösterilene kadar bekleyin.

10. Gemini Code Assist'i etkinleştirme
Sağ alt köşedeki "Gemini" simgesini tıklayın
.
"Login to Google Cloud" ve "Select a Google Cloud Project" simgesini tıklayın.



Pop-up pencerede Qwiklabs projenizi seçin.

11. Gemini Code Assist ile kodu açıklama
devai-review.yml dosyasında herhangi bir yeri sağ tıklayın ve Gemini Code Assist > Explain seçeneğini belirleyin.

İnceleme açıklaması:

12. DEVAI CLI'yı yerel olarak çalıştırma
Cloud Shell Düzenleyici'ye geri dönün ve yeni bir terminal açın.

Cloud Shell terminaline dönün ve devai'ı yerel olarak yüklemek için aşağıdaki komutları çalıştırın.
pip3 install devai-cli
CLI yüklendi ancak PATH'de değil.
WARNING: The script devai is installed in '/home/student_00_478dfeb8df15/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
PATH ortam değişkenini güncellemek için aşağıdaki komutu çalıştırın. Kullanıcınızın ana klasör adıyla değiştirin. Örneğin: student_00_478dfeb8df15
export PATH=$PATH:/home/YOUR-USER-HOME-FOLDER/.local/bin
Kodu yerel olarak incelemek için devai cli komutunu çalıştırın. CLI çıkışını inceleyin.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
cd ~/github/genai-for-developers
devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Aşağıdaki komutu çalıştırarak inceleme komut dosyasını açın:
cloudshell edit devai-cli/src/devai/commands/review.py
review.py dosyasında herhangi bir yeri sağ tıklayın ve Gemini Code Assist > Explain seçeneğini belirleyin.
Açıklamayı inceleyin.

13. DevAI CLI Geliştirme
Bu bölümde, devai cli'de değişiklikler yapacaksınız.
Başlamak için Python virtualenv'yi ayarlayın, gereksinimleri yükleyin ve örnek komutu çalıştırın.
cd ~/github/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo
Her şeyin düzgün çalıştığını kontrol etmek için test kapsamı inceleme komutunu çalıştırın:
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
Cloud Shell Düzenleyici'deki Markdown önizlemesini kullanarak sonuçları inceleyin.
Yeni bir dosya oluşturup Gemini'ın yanıtını yapıştırın.
Ardından komut paletini kullanıp "Markdown: Open Preview" seçeneğini belirleyin.



14. devai CLI komutlarını keşfetme
Kod inceleme komutu
devai review code -c ~/github/genai-for-developers/sample-app/src/main/java
Performans inceleme komutu
devai review performance -c ~/github/genai-for-developers/sample-app/src/main/java
Güvenlik inceleme komutu
devai review security -c ~/github/genai-for-developers/sample-app/src/main/java
Test kapsamı inceleme komutu
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
Engelleyici inceleme komutları
devai review blockers -c ~/github/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/github/genai-for-developers/sample-app/setup.md
Resim/Şema inceleme ve özetleme:
Giriş diyagramı[~/github/genai-for-developers/images/extension-diagram.png]:

İnceleme komutu:
devai review image \
-f ~/github/genai-for-developers/images/extension-diagram.png \
-p "Review and summarize this diagram"
Çıkış:
The diagram outlines a process for conducting local code reviews using a VS Code extension or CLI, leveraging Google Cloud's Vertex AI (Gemini Pro) for generating review prompts.
**Process Flow:**
1. **Code Style Check:** Developers initiate the process by checking their code for adherence to pre-defined style guidelines.
2. **Prompt Generation:** The VS Code extension/CLI sends the code to Vertex AI (Gemini Pro) on Google Cloud.
3. **Vertex AI Review:** Vertex AI analyzes the code and generates relevant review prompts.
4. **Local Review:** The prompts are sent back to the developer's IDE for their consideration.
5. **Optional Actions:** Developers can optionally:
- Create new JIRA issues directly from the IDE based on the review prompts.
- Generate new issues in a GitLab repository.
**Key Components:**
* **VS Code Extension/CLI:** Tools facilitating the interaction with Vertex AI and potential integrations with JIRA and GitLab.
* **Vertex AI (Gemini Pro):** Google Cloud's generative AI service responsible for understanding the code and generating meaningful review prompts.
* **Google Cloud Secret Manager:** Securely stores API keys and access tokens required to authenticate and interact with Google Cloud services.
* **JIRA/GitLab (Optional):** Issue tracking and project management tools that can be integrated for a streamlined workflow.
**Benefits:**
* **Automated Review Assistance:** Leveraging AI to generate review prompts saves time and improves the consistency and quality of code reviews.
* **Local Development:** The process empowers developers to conduct reviews locally within their familiar IDE.
* **Integration Options:** The flexibility to integrate with project management tools like JIRA and GitLab streamlines workflow and issue tracking.
Resim farkı analizi:
devai review imgdiff \
-c ~/github/genai-for-developers/images/devai-api.png \
-t ~/github/genai-for-developers/images/devai-api-slack.png
Çıkış:
The following UI elements are missing in the "AFTER UPGRADE STATE" image compared to the "BEFORE UPGRADE STATE" image: 1. **Slack:** The entire Slack element, including the icon, "Team channel" label, and the arrow indicating interaction, is absent in the AFTER UPGRADE image. 2. **Storage Bucket:** The "Storage Bucket" element with its icon and "PDFs" label is missing in the AFTER UPGRADE image. 3. **"GenAI Agents" label in Vertex AI block:** The BEFORE UPGRADE image has "Vertex AI Agents" and "GenAI Agent" labels within the Vertex AI block, while the AFTER UPGRADE image only has "Vertex AI." 4. **"Open JIRA Issue" and "Team Project" labels:** In the BEFORE UPGRADE image, these labels are connected to the JIRA block with an arrow. These are missing in the AFTER UPGRADE image. **Decision Explanation:** The analysis is based on a direct visual comparison of the two provided images, noting the presence and absence of specific UI elements and their associated labels. The elements listed above are present in the BEFORE UPGRADE image but absent in the AFTER UPGRADE image.
Belge oluşturma komutu:
devai document readme -c ~/github/genai-for-developers/sample-app/src/main/
Çıkış:
# Bank of Anthos - Balance Reader Service ## Table of Contents - [Description](#description) - [Features](#features) - [Technologies Used](#technologies-used) - [Installation](#installation) - [Configuration](#configuration) - [Usage](#usage) - [Health Checks](#health-checks) - [Metrics and Tracing](#metrics-and-tracing) - [Contributing](#contributing) - [License](#license) ## Description The Balance Reader service is a component of the Bank of Anthos sample application. It provides a REST endpoint for retrieving the current balance of a user account. This service demonstrates key concepts for building microservices with Spring Boot and deploying them to a Kubernetes cluster. ## Features - Securely retrieves account balances using JWT authentication. - Leverages a local cache for fast balance retrieval. - Asynchronously processes transactions from a central ledger. - Provides health check endpoints for Kubernetes liveness and readiness probes. - Exposes metrics to Stackdriver for monitoring and observability. - Supports distributed tracing with Zipkin. ## Technologies Used - Java - Spring Boot - Spring Data JPA - Hibernate - Google Cloud SQL (PostgreSQL) - JWT (JSON Web Token) - Guava Cache - Micrometer - Stackdriver - Zipkin ## Installation 1. **Prerequisites:** - Java 17 or later - Maven 3.5 or later - Docker (for containerization) - Kubernetes cluster (for deployment) - Google Cloud account (for Stackdriver and other GCP services)
Cloud Shell Düzenleyici'de kullanılabilen devai cli komutlarını inceleyin:
cloudshell edit ~/github/genai-for-developers/devai-cli/README.md
Alternatif olarak, GitHub deposundaki README.md dosyasını inceleyin.
15. Tüm ortam değişkenlerini bir dosyada takip etme
Oluşturacağınız tüm ortam değişkenlerini (ör. API anahtarları, API jetonları vb.) takip etmek için yeni bir dosya başlatın.
Laboratuvar boyunca farklı sistemler için bu bilgileri birçok kez kullanacağınızdan, tek bir yerden referans vermek daha kolay olacaktır.
16. LangSmith LLM izleme yapılandırması
LangSmith hesabı oluşturun ve Ayarlar bölümünde bir Hizmet API anahtarı oluşturun. https://docs.smith.langchain.com/
LangSmith entegrasyonu için gereken ortam değişkenlerini ayarlayın. Komutları çalıştırmadan önce Hizmet API anahtarını değiştirin.
export LANGCHAIN_API_KEY=langsmith-service-api-key
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
Terminalde hassas bilgilerin açığa çıkmasını önlemek için en iyi yöntem, read -s 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.
17. JIRA komut yapılandırması
Henüz hesabınız yoksa JIRA hesabı oluşturun.
Projeniz için bir JIRA API jetonu oluşturun. https://id.atlassian.com/manage-profile/security/api-tokens
JIRA entegrasyonu için gerekli olan bu ortam değişkenlerini ayarlayın (komutları çalıştırmadan önce değerleri değiştirin).
export JIRA_API_TOKEN=your-token-value
export JIRA_USERNAME="email that you used to register with JIRA"
export JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="JIRA project key"
export JIRA_CLOUD=true
review.py dosyasını açın:
cloudshell edit ~/github/genai-for-developers/devai-cli/src/devai/commands/review.py
review.py dosyasını inceleyin:
source=source.format(format_files_as_string(context))
code_chat_model = GenerativeModel(model_name)
code_chat = code_chat_model.start_chat()
code_chat.send_message(qry)
response = code_chat.send_message(source)
...
else:
click.echo(response.text)
Aşağıdaki satırı bulun ve açıklamasını iptal edin:
# Uncomment after configuring JIRA and GitLab env variables - see README.md for details
Dosyanın üst kısmındaki JIRA komutunu içe aktarma
# from devai.commands.jira import create_jira_issue
code yönteminde JIRA sorunu oluşturma yöntemi
#create_jira_issue("Code Review Results", response.text)
Kod inceleme komutunu yeniden çalıştırın ve aracının çıkışını kontrol edin:
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
devai review code -c ~/github/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Örnek çıktı:
(venv) student_00_19a997c157f8@cloudshell:~/genai-for-developers/devai-cli (qwiklabs-gcp-02-71a9948ae110)$ devai review code -c ../sample-app/src/main/java/anthos/samples/bankofanthos/balancereader /home/student_00_19a997c157f8/genai-for-developers/devai-cli/venv/lib/python3.9/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `initialize_agent` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use new agent constructor methods like create_react_agent, create_json_agent, create_structured_chat_agent, etc. instead. warn_deprecated( Response from Model: ```java // Class: TransactionRepository // Method: findBalance // Efficiency - Consider using a native SQL query to improve performance for complex database operations. - Use prepared statements to avoid SQL injection vulnerabilities. // Best Practices - Return a Optional<Long> instead of null to handle the case when no balance is found for the given account.
/home/student_00_19a997c157f8/genai-for-developers/devai-cli/venv/lib/python3.9/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function __call__ was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Bunun yerine invoke'u kullanın. warn_deprecated(
Yeni AgentExecutor zinciri giriliyor... Düşünce: Açıklama soruda verildiği için düşünülmesi gereken bir şey yok. İşlem:
{
"action": "create_issue",
"action_input": {
"description": "Class: TransactionRepository\nMethod: findBalance\n\nEfficiency\n- Consider using a native SQL query to improve performance for complex database operations.\n- Use prepared statements to avoid SQL injection vulnerabilities.\n\nBest Practices\n- Return a Optional<Long> instead of null to handle the case when no balance is found for the given account."
}
}
CYMEATS-117 anahtarıyla yeni sorun oluşturuldu
Gözlem: Anahtarı CYMEATS-117 olan yeni bir sorun oluşturuldu. Düşünce:Son Yanıt: CYMEATS-117
Bitmiş zincir.
Open your JIRA project in the browser and review the created issue.
Sample JIRA issue view.
<img src="img/9a93a958c30f0b51.png" alt="9a93a958c30f0b51.png" width="624.00" />
Open [LangSmith portal](https://smith.langchain.com/) and review LLM trace for JIRA issue creation call.
Sample LangSmith LLM trace.
<img src="img/6222ee1653a5ea54.png" alt="6222ee1653a5ea54.png" width="624.00" />
## Import GitHub repo to GitLab repo
Go to [https://gitlab.com/projects/new](https://gitlab.com/projects/new) and select "`Import project`" / "`Repository by URL`" option:
Git repository url:
https://github.com/GoogleCloudPlatform/genai-for-developers.git
Or
Your personal GitHub project that you created earlier in this lab.
Under Project URL - select your GitLab userid
Set Visibility to `Public`.
Click - "`Create Project`" to start the import process.
If you see an error about invalid GitHub Repository URL, [create a new GitHub token](https://github.com/settings/tokens)(fine-grained) with Public repositories read-only access, and retry import again providing your GitHub userid and token.
## Clone GitLab repo and setup SSH key
Return to Google Cloud Shell terminal and set up a new SSH key.
Update your email before running the commands. Hit enter multiple times to accept defaults.
ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
Add a public key to your GitLab account.
Open [https://gitlab.com/-/profile/keys](https://gitlab.com/-/profile/keys) and click "Add new key".
For the key value copy/paste the output of the last command.
Go back to the terminal and clone the repository.
cd ~ mkdir gitlab cd gitlab
Replace with your GitLab userid and repository url that was just created.
```console
git clone git@gitlab.com:YOUR_GITLAB_USERID/genai-for-developers.git
Dizini değiştirin ve .gitlab-ci.yml dosyasını açın.
cd genai-for-developers
cloudshell edit .gitlab-ci.yml
Daha önce yapmadıysanız Cloud Shell Düzenleyici'de Gemini özelliğini etkinleştirin.

.gitlab-ci.yml dosyasında herhangi bir yeri sağ tıklayın ve "Gemini Code Assist > Explain this"" seçeneğini belirleyin.

18. GitLab komut yapılandırması
GitLab'ı açın ve önceki adımlarda oluşturulan GitLab deposundaki "Settings / Access Tokens" altında bir proje erişim jetonu oluşturun.
Erişim jetonu değerini kopyalayıp sonraki adımlarda kullanmak üzere saklayın.
Aşağıdaki ayrıntıları kullanın:
- Jeton adı:
devai-cli-qwiklabs - Rol:
Maintainer - Kapsam:
api

GitLab entegrasyonu için gereken ortam değişkenlerini ayarlayın.
Bu komut için GitLab erişim jetonunuzu güncellemeniz gerekir.
export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-access-token
Bu komut, GitLab kullanıcı kimliğinizi ve depo adınızı güncellemenizi gerektirir.
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"
GitLab web sitesini açın ve projenizde "CICD AI Insights" başlıklı yeni bir GitLab sorunu oluşturun.

Diğer bir seçenek de aşağıdaki curl komutunu kullanmaktır. Bir GitLab proje kimliğine ihtiyacınız olacak. Bu kimliği "Settings / General" bölümünde bulabilirsiniz.
export GITLAB_PROJECT_ID=56390153 # replace
curl --request POST \
--header "PRIVATE-TOKEN: $GITLAB_PERSONAL_ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{"title":"CICD AI Insights"}' \
https://gitlab.com/api/v4/projects/$GITLAB_PROJECT_ID/issues
Cloud Shell'e geri dönün ve review.py dosyasını açın:
cloudshell edit ~/gitlab/genai-for-developers/devai-cli/src/devai/commands/review.py
Aşağıdaki kodu bulup yorum satırı olmaktan çıkarma
GitLab komutunu içe aktarma satırı
# from devai.commands.gitlab import create_gitlab_issue_comment
GitLab sorununa yorum ekleme yöntemi
# create_gitlab_issue_comment(response.text)
19. DevAI CLI geliştirme
GitLab deposuna/dizine geçtiğiniz için. Aşağıdaki kurulum adımlarını yeniden uygulamanız gerekir.
Terminalde Python sanal ortamınızı ayarlayın, gereksinimleri yükleyin ve örnek komutu çalıştırın.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
cd ~/gitlab/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo
cli'nin konumunu doğrulayabilirsiniz. Bu kez GitLab klasöründe yer almalıdır.
which devai
Terminalde kod inceleme komutunu yeniden çalıştırın:
devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Örnek çıkış (bazı bölümler kısaltılmıştır):
(venv) student_00_19a997c157f8@cloudshell:~/genai-for-developers/devai-cli (qwiklabs-gcp-02-71a9948ae110)$ devai review code -c ../sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
.
.
Response from Model: **Class: Transaction**
**Method: toString**
**Maintainability:**
* The formatting of the string representation could be more clear and concise. Consider using a dedicated method for formatting the amount, e.g., `formatAmount()`.
.
.
> Entering new AgentExecutor chain...
Thought: I need to first get the issue ID using the Get Issues tool, then I can comment on the issue using the Comment on Issue tool.
Action: Get Issues
Action Input:
Observation: Found 1 issues:
[{'title': 'CICD AI Insights', 'number': 1}]
Thought:Thought: I found the issue ID, so now I can add the comment to the issue.
Action: Comment on Issue
Action Input: 1
Action: Get Issue
Action Input: 1
Observation: {"title": "CICD AI Insights", "body": "", "comments": "[{'body': '**Transaction.java**\\n\\n\\n**Class:** Transaction\\n\\n\\n* **Security:** Consider using a custom date format like \\\\\"yyyy-MM-dd HH:mm:ss.SSS\\\\\" to handle timestamps more robustly.\\n\\n\\n**JWTVerifierGenerator.java**\\n\\n\\n* .
.
Thought:Now I can use the Comment on Issue tool to add the comment to the issue.
Action: Comment on Issue
Action Input:
1
**Class: Transaction**
**Method: toString**
**Maintainability:**
.
.
.
Observation: Commented on issue 1
Thought:I have now completed the necessary actions and added the comment to the issue 'CICD AI Insights'.
Final Answer: Comment added to issue 'CICD AI Insights'
> Finished chain.
GitLab web sitesini açın ve güncellenen sorunu inceleyin.

LangSmith'te LLM izini inceleyin.
Örnek LLM izi.

20. Değişiklikleri GitLab deposuna aktarma
Google Cloud Shell Düzenleyici'ye dönün.
"Source Control" sekmesine geçin.
review.py dosyasını güncellemek için yaptığınız değişiklikleri hazırlayın, işleyin ve gönderin.

21. GitLab CICD yapılandırması
Ardından, değişiklikler depoya gönderildiğinde kod incelemesi çalıştırmak için GitLab CICD ardışık düzenini etkinleştireceksiniz.
GitLab web sitesini açın ve "Settings / CICD"" bölümüne gidin.
Variables bölümünü genişletip "Add variable"yı tıklayın.
Değişkenleri eklerken tüm onay kutularının işaretini kaldırdığınızdan emin olun. Örnek:

Tüm ortam değişkenlerini tuttuğunuz notlarınızı kullanarak JIRA, GitLab ve LangSmith için ortam değişkenleri ekleyin.
PROJECT_ID=qwiklabs-project-id LOCATION=us-central1 GOOGLE_CLOUD_CREDENTIALS - cat ~/vertex-client-key.json LANGCHAIN_TRACING_V2=true LANGCHAIN_ENDPOINT="https://api.smith.langchain.com" LANGCHAIN_API_KEY=your-service-api-key JIRA_API_TOKEN=your-token JIRA_USERNAME="email that you used to register with JIRA" JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net" JIRA_PROJECT_KEY="JIRA project key" JIRA_CLOUD=true GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token GITLAB_URL="https://gitlab.com" GITLAB_REPOSITORY="USERID/REPOSITORY" GITLAB_BRANCH="devai" GITLAB_BASE_BRANCH="main"
GOOGLE_CLOUD_CREDENTIALS değişken değeri için yukarıdaki bölümde oluşturulan hizmet hesabı anahtarını kullanın.
cat ~/vertex-client-key.json
CI/CD değişkenleri görünümü:

22. GitLab CICD ardışık düzenini çalıştırma
GitLab kullanıcı arayüzünde "Build / Pipelines"yı açın ve "Run Pipeline"yı tıklayın.

23. GitLab ardışık düzen çıktısını inceleme
GitLab kullanıcı arayüzünde "Build / Jobs"yı açın ve işlem hattı çıkışını inceleyin.

GitLab web sitesini açın ve "CICD Insights" sorunuyla ilgili güncellenen yorumları inceleyin.
GitLab iş akışı yürütmesini devre dışı bırakma
Google Cloud Shell Düzenleyici'ye dönün. Kod gönderme etkinliklerinde GitLab iş akışı yürütmesini devre dışı bırakmak için satırlardaki yorum işaretini kaldırın. İş akışını kullanıcı arayüzünden isteğe bağlı olarak yine de çalıştırabilirsiniz.
# workflow: # rules: # - if: $CI_PIPELINE_SOURCE == "web"
Projenin kök dizininde .gitlab-ci.yml dosyasını açın ve şu satırların yorumunu kaldırın:
cloudshell edit ~/gitlab/genai-for-developers/.gitlab-ci.yml
"Source Control" sekmesine geçin. Bu değişikliği hazırlayın, işleyin ve gönderin.

24. CircleCI entegrasyonu
CircleCI nedir?
CircleCI, ekiplerin yazılım geliştirme ve dağıtım süreçlerini otomatikleştirmesine olanak tanıyan bulut tabanlı bir CI/CD platformudur. GitHub, Bitbucket ve GitLab gibi sürüm kontrol sistemleriyle entegre olarak ekiplerin otomatik testler ve derlemeler çalıştırarak kod değişikliklerini anında doğrulamasına olanak tanır. CircleCI, sürekli teslim için yazılımların AWS, Google Cloud ve Azure gibi çeşitli bulut ortamlarına dağıtımını otomatikleştirebilir.
Kurulum
CircleCI web sitesini açın ve yeni bir proje oluşturun. Deponuz için "GitLab" veya "Cloud" simgesini seçin.
CircleCI'ya GitLab hesabınıza erişim izni verin.
En hızlı seçeneğin altında main dalını seçin. CircleCI, mevcut bir yapılandırma dosyasını algılayabilir ve bu adımı atlayabilir.

Proje oluşturulduktan sonra "Project Settings" / "Environment Variables" bölümünü tıklayın.

Şimdiye kadar kullandığınız tüm ortam değişkenlerini ekleyin.

Eklenecek ortam değişkenlerinin örnek listesini aşağıda bulabilirsiniz.
PROJECT_ID=qwiklabs-project-id LOCATION=us-central1 GOOGLE_CLOUD_CREDENTIALS - cat ~/vertex-client-key.json LANGCHAIN_TRACING_V2=true LANGCHAIN_ENDPOINT="https://api.smith.langchain.com" LANGCHAIN_API_KEY=your-service-api-key JIRA_API_TOKEN=your-token JIRA_USERNAME="email that you used to register with JIRA" JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net" JIRA_PROJECT_KEY="JIRA project key" JIRA_CLOUD=true GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token GITLAB_URL="https://gitlab.com" GITLAB_REPOSITORY="USERID/REPOSITORY" GITLAB_BRANCH="devai" GITLAB_BASE_BRANCH="main"
25. JIRA ve GitLab yöntemlerini etkinleştirme
Google Cloud Shell Düzenleyici'yi açın ve review.py dosyasında değişiklik yapın.
Aşağıdaki satırları bulup yorum satırı olmaktan çıkarın.
# from devai.commands.jira import create_jira_issue
create_jira_issue("Performance Review Results", response.text)
create_gitlab_issue_comment(response.text)
.
.
.
create_jira_issue("Security Review Results", response.text)
create_gitlab_issue_comment(response.text)
"Source Control" sekmesine geçin. Bu değişikliği hazırlayın, işleyin ve gönderin.
GitLab web sitesini açıp "Build" / "Pipelines" bölümüne gidin.

İş akışını incelemek için CircleCI bağlantısını takip edin.

Deponuzdaki GitLab sorununa yapılan yorumları inceleyin.


JIRA projenizde oluşturulan yeni sorunları inceleyin.

26. Tebrikler!
Tebrikler, laboratuvarı tamamladınız.
İşlediğimiz konular:
- GitHub, GitLab ve CircleCI'da üretken yapay zeka kod inceleme otomasyon adımları ekleme
- LangChain ReAct aracıları, GitLab sorununa yorum yapma ve JIRA biletleri açma gibi görevleri otomatikleştirir.
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.