Gemini Code Assist Enterprise ile Kod Özelleştirme

1. Başlamadan önce

Bu codelab'de, Gemini Code Assist'i özel depolarınıza özel kod özelleştirme önerileri sunacak şekilde hazırlama işlemi gösterilmektedir. Bu, özellikle sık sık tekrarlanan benzer çalışmalar için belirli kurallara sahip ekipler için Code Assist'in sonuçlarını önemli ölçüde daha kullanışlı hale getirebilir. Ancak Gemini'ın bu özellik için özel kod tabanlarınızı dizine eklemesine izin verdiğinizde, Gemini'ın özel kodunuzla kapsamlı şekilde eğitilmesini sağlamayacağından emin olabilirsiniz.

Ayrıca, .aiexclude dosyası kullanarak hassas veya alakasız dosyaların kod özelleştirme değerlendirmesinden nasıl hariç tutulacağını da ele alacağız.

Ön koşullar

  • Gemini Code Assist'i temel düzeyde anlama ve etkinleştirildiği bir projeye erişim
  • Kod özelleştirme için desteklenen bir kodlama dilini bilme
  • Kod özelleştirmesi bu konumlarda Developer Connect bağlantıları gerektirdiğinden us-central1 veya europe-west1'te kaynak oluşturma
  • Güncel, kimliği doğrulanmış bir Google Cloud KSA

Öğrenecekleriniz

  • Gemini Code Assist Enterprise'da kod özelleştirmeyi kullanma
  • Kod özelleştirmenin ekiplerinize zaman kazandırabileceği birçok kullanım alanından biri

İhtiyacınız olanlar

  • Gemini Code Assist'in etkinleştirildiği bir Google Cloud projesi
  • Özelleştirme istekleri için dizine eklenecek özel bir depo
  • Özelleştirme istekleri için kodu dizine ekleme zamanı. Bu işlem 24 saati bulabilir
  • Gemini Code Assist'in yüklü olduğu bir IDE

2. Bağlam

Kod özelleştirmeyi denemek için iki şey gerekir:

  1. Gemini'ın etkin olduğu bir Google Cloud projesine erişim
  2. ve Gemini'ın yanıtlarını bildirmek için özel bir depo.

Gemini'ı etkinleştirme

Gemini'nin dizine eklemesi için en iyi aday depolama alanları, kuruluşunuzda sık sık yeniden kullanılan kodları içerir. Bu kod laboratuvarının örnek deposunda, bu ölçütleri karşılayan bir Veri Aktarımı Nesnesi klasörü içeren standart bir Spring Boot web hizmeti bulunur. Benzer bir sınıf, veritabanındaki her öğeyi sunum katmanına taşınırken tanımlamak için oluşturulur.

3. (İsteğe bağlı) Depo kurulumu

Kendi özel depolarınızın biri yerine örnek bir depo kullanmayı tercih ederseniz aşağıdaki adımları istediğiniz terminal düzenleyicide veya Cloud Shell'de uygulayabilirsiniz. Kod özelleştirmesini çalışırken görebilmemiz için özel bir depo oluşturarak başlayın:

mkdir customization-starter
cd customization-starter
curl https://start.spring.io/starter.zip -d dependencies=web,lombok \
           -d javaVersion=21 \
           -d type=maven-project \
           -d bootVersion=3.3.4 -o cc-starter.zip
unzip cc-starter.zip
rm cc-starter.zip
pushd src/main/java/com/example/demo
mkdir dtos
touch dtos/LedgerDTO.java

LedgerDTO dosyasına aşağıdakileri ekleyin:

package com.example.demo.dtos;

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

@Getter
@Setter
@Accessors(chain = true)
public class LedgerEntryDto {
    private Long id;
    private String accountName;
    private double amount;
    private String transactionType; 
    private String description;
    private java.util.Date transactionDate;
}

Bu, bu kod tabanına katkıda bulunan diğer katkıda bulunanların kullanmasını beklediği erişim araçlarının, kod özelleştirmesi etkinleştirildiğinde doğru şekilde oluşturulacağını göstermek için yeterli olacaktır.

Yeni bir depo oluşturun ve gizli tutmaya özen gösterin. Başlatıcıyı yeni deponuza aktarmak için aşağıdaki adımları uygulayın:

popd
gh auth login
git init
git add .
git commit -m "code customization starter"
git remote add origin git@github.com:<YOUR_GITHUB_ID>/customization-starter.git
git branch -M main
git push -u origin main

4. Dosyaları hariç tutma

Gemini'ye özel depolarınıza erişim izni vermeden önce, ekibinizin dizine eklenmesini istemediği alakasız veya hassas dosyaları nasıl hariç tutacağınızı anlamanız önemlidir. Bu işlem için bir .aiexclude dosyası kullanılır. Bu dosya, bazı önemli farklılıklar dışında .gitignore dosyasına benzer:

  • Boş bir .aiexclude dosyası, bulunduğu dizindeki ve tüm alt dizinlerdeki tüm dosyaları engeller.
    • Bu, **/* içeren bir dosyayla aynıdır.
  • .aiexclude dosyaları olumsuzlama işlemini (! ile kalıpların başına ! eklenmesi) desteklemez.

Bu nedenle, ekibinizin dikkate alınmamasını istediği dosya türlerini veya dizinleri göz önünde bulundurmaya çalışın ve bunları ayrı satırlarda listeleyin:

#Block all files with .key extensions
*.key

#Block all files under sensitive/dir
my/sensitive/dir/

#Block all .key files under sensitive/dir
my/sensitive/dir/ /.key

5. Developer Connect'i yapılandırma

Developer Connect, GitHub veya GitLab'deki özel kod depolarınızın bağlantılarını ve bağlantılarını kolaylaştıran hizmettir. Bu, Gemini Code Assist'in özel depolarınıza güvenli bir şekilde bağlanarak yanıtları iyileştirmek için kullanılacak dizini oluşturmasını sağlayan mekanizmadır.

Developer Connect'in kodunuza güvenli bir şekilde nasıl erişim sağladığını anlamak için bu iki kavramı bilmek önemlidir:

Bağlantı

  • Google ile üçüncü taraf kaynak kodu yönetim platformu arasındaki köprüyü temsil eder.

Bağlantı

  • Bağlı bir kaynak kodu yönetim platformunda seçtiğiniz tek bir kaynak kodu deposuyla ilişkilendirmeyi temsil eder.

Bu kavramları göz önünde bulundurarak, projeniz için API'yi etkinleştirmek üzere Developer Connect sayfasına gidin.

Developer Connect&#39;i etkinleştirme

Ardından, GitHub veya GitLab için Bağlantı ve Bağlantı oluşturmak üzere uygun adımları uygulayın. Her iki kaynak da sihirbaz işlemi sırasında oluşturulur.

Bağlantı ve bağlantı oluşturuluyor

Gemini'nin kod özelleştirme özelliğinin yanıtlarında dikkate almasını istediğiniz her depo için bir Bağlantı oluşturmak üzere bu adımları tekrarlayın. Aynı platformdan birden fazla depo geliyorsa mevcut bağlantıyı yeniden kullanabilirsiniz.

6. Oluştur ve dizine bağlan

Kod özelleştirme, depolarınızı hızlı bir şekilde ayrıştırmak ve analiz etmek için bir dizin kullanır. Sonraki adımda kullanacağınız için kullandığınız INDEX_NAME değerini not edin.

Dizin oluşturmak için aşağıdaki komutu çalıştırın:

gcloud gemini code-repository-indexes create <INDEX_NAME> \
    --project=<YOUR_PROJECT_ID> \
    --location=<REGION>

Invalid choice: ... hatalarıyla karşılaşırsanız aşağıdaki komutu çalıştırarak Google Cloud CLI'nizin güncel olduğundan emin olun:

gcloud components update

Daha sonra, bir depo grubu oluşturarak dizininize erişim izni verin:

gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
    --project=PROJECT_ID \
    --location=REGION \
    --code-repository-index=INDEX_NAME \
    --repositories='[{"resource": "projects/PROJECT_ID/locations/REGION/connections/INDEX_CONNECTION/gitRepositoryLinks/REPOSITORY", "branch_pattern": "BRANCH_NAMES"}]'

Aşağıdaki değerler değiştirilir:

  • REPOSITORY_GROUP: oluşturmak üzere olduğunuz depo grubunun adı
  • PROJECT_ID: Google Cloud projenizin kimliği.
  • INDEX_NAME: Dizin oluşturmak için önceki bir adımda tanımladığınız dizinin adı.
  • REGION: Belgedeki listedeki, Google Cloud projenizde Developer Connect'te yapılandırdığınız desteklenen bir bölge.
  • INDEX_CONNECTION: Dizin oluşturmak için önceki bir adımda oluşturduğunuz dizinin bağlantısı.
  • REPOSITORY: Dizine eklemek istediğiniz depo. En az bir depo belirtmeniz gerekir. Gerektiğinde birden fazla depo belirtebilirsiniz.
  • BRANCH_NAMES: Dizine eklemek istediğiniz şubelerin adı (ör. ana veya dev).

Dizine eklemek istediğiniz depoların sayısına ve boyutlarına bağlı olarak, içeriğin dizine eklenmesi 24 saati bulabilir. Dizine ekleme, 24 saatte bir gerçekleşir ve depoda yapılan değişiklikler toplanır. Dizin oluşturma işleminizin durumunu kontrol etmek için şu adımlara bakabilirsiniz:

Dizine ekleme durumu aranıyor

Son olarak, gruba istediğiniz müdür erişimini verin:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='PRINCIPAL' \
    --role='roles/cloudaicompanion.repositoryGroupsUser'

7. Özelleştirilmiş kod oluşturma

Artık Gemini'ın özel deponuzdaki koda erişimi olduğuna göre, kod tamamlama isteklerimizde alakalı snippet'lerin görünmesini bekleyebiliriz. Örnek depomuzda DTO klasörüne gidebiliriz. Yeni bir nesneyi temsil edecek yeni bir sınıf oluştururken, yazarken beklenen ek açıklamaların göründüğünü görebilirsiniz:

Oluşturulan örnek

8. Sonuç

Bu Codelab'i tamamladığınız için tebrikler. Gemini Code Assist'in Kod Özelleştirme özelliğinin nasıl kullanılacağını öğrendiniz. Yanıtlarınız artık ekiplerinize özel, özel kod tabanlarına göre uyarlanabileceğinden her istem ve kod tamamlama, ekiplerinizdeki geliştiriciler için daha değerli olacaktır.

Daha fazla okumak ve IAM rolleri oluşturma gibi konularla ilgili destek almak için aşağıdaki diğer dokümanları ve materyalleri inceleyebilirsiniz: