1. Başlamadan önce
Bu codelab'de, Gemini Code Assist'i özel depolarınıza göre uyarlanmış kod özelleştirme önerileri sunacak şekilde nasıl hazırlayacağınız gösterilmektedir. Bu, Code Assist'in sonuçlarını önemli ölçüde daha kullanışlı hale getirebilir. Özellikle de benzer ve sık tekrarlanan işler için belirli kuralları olan ekipler bu özellikten faydalanabilir. Gemini'ın bu özellik için özel kod tabanlarınızı indekslemesine izin vermeniz, Gemini'ın özel kodunuzla geniş kapsamlı bir eğitim yapmasını sağlamaz.
Ayrıca, .aiexclude dosyasıyla hassas veya alakasız dosyaların kod özelleştirme için değerlendirmeye alınmasını nasıl engelleyeceğinizi de ele alacağız.
Ön koşullar
- Gemini Code Assist'in temel işleyişi hakkında bilgi sahibi olmak ve Gemini Code Assist'in etkinleştirildiği bir projeye erişim
- Kod özelleştirme için desteklenen bir kodlama diline hakim olmak
us-central1veyaeurope-west1konumlarında kaynak oluşturabilme. Kod özelleştirme için bu konumlarda Developer Connect bağlantıları gerekir.- Güncel ve kimliği doğrulanmış bir Google Cloud KSA
Öğrenecekleriniz
- Gemini Code Assist Enterprise'da kod özelleştirmeyi kullanma
- Kod özelleştirmenin ekiplerinizin zaman kazanmasını sağlayabileceğ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 süresi. 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 gereklidir:
- Gemini'ın etkinleştirildiği bir Google Cloud projesine erişim
- ve Gemini'ın yanıtlarını bilgilendirmek için kullanılan özel bir depo.

Gemini'ın dizine ekleyeceği en iyi aday depolar, kuruluşunuzda sıkça yeniden kullanılan kodları içerir. Bu codelab için sağlanan örnek depoda, bir veritabanındaki her bir öğeyi sunum katmanına taşınırken açıklamak için benzer bir sınıf oluşturulacağından, bu ölçütleri karşılayan bir Veri Aktarım Nesneleri klasörüyle birlikte standart bir Spring Boot web hizmeti bulunur.
3. (İsteğe bağlı) Depo kurulumu
Kendi özel depolarınızdan biri yerine örnek bir depo kullanmayı tercih ederseniz aşağıdaki adımlar, tercih ettiğiniz terminal düzenleyicide veya Cloud Shell'de uygulanabilir. Kod özelleştirmeyi uygulamada görmemize yardımcı olmak 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 erişen diğer katkıda bulunanların kullanmayı beklediği erişim yöntemlerinin, kod özelleştirme etkinleştirilerek doğru şekilde oluşturulacağını göstermek için yeterli olacaktır.
Gizli kalmasına dikkat ederek yeni bir depo oluşturun. Başlangıç kodunu 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'a ö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 amaçla .aiexclude dosyası kullanılır. Bu dosya, bazı önemli farklılıklar dışında .gitignore dosyasına benzer:
- Boş bir
.aiexcludedosyası, bulunduğu dizindeki ve tüm alt dizinlerdeki tüm dosyaları engeller.- Bu,
**/*içeren bir dosyayla aynıdır.
- Bu,
.aiexcludedosyaları olumsuzlamayı (kalıplara!önekini ekleme) desteklemez.
Bu nedenle, ekibinizin değerlendirme dışında bırakmak istediği dosya türlerini veya dizinleri göz önünde bulundurmaya çalışın ve her birini 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ızla Bağlantılar ve Linkler oluşturmanızı sağlayan hizmettir. Bu mekanizma, Gemini Code Assist'in yanıtları iyileştirmek için kullanılacak dizini oluşturmak üzere özel depolarınıza güvenli bir şekilde bağlanmasına olanak tanır.
Geliştirici Bağlantısı'nın kodunuza güvenli bir şekilde nasıl erişim sağladığını anlamak için bu iki kavramdan yararlanabilirsiniz:
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 projenizde API'yi etkinleştirmek için Developer Connect sayfasına giderek başlayın.

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

Gemini'ın kod özelleştirme özelliğinin yanıtlarında dikkate almasını istediğiniz her depo için bağlantı oluşturmak üzere bu adımları tekrarlayın. Birden fazla depo aynı platformdan geliyorsa mevcut bağlantıyı yeniden kullanabilirsiniz.
6. Dizin oluşturma ve dizine bağlanma
Kod özelleştirme, depolarınızı hızlı bir şekilde ayrıştırıp analiz etmek için dizine dayanır. Bir sonraki adımda ihtiyacınız olacağından kullandığınız INDEX_NAME'i 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
Ardından, bir depo grubu oluşturarak dizininize erişime izin 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ğerleri değiştirin:
- REPOSITORY_GROUP: Oluşturmak üzere olduğunuz depo grubunun adı
- PROJECT_ID: Google Cloud proje kimliğiniz.
- INDEX_NAME: Dizin oluşturmak için önceki bir adımda tanımladığınız dizinin adı.
- REGION: Belgelerdeki listede yer alan ve Google Cloud projenizdeki Developer Connect'te yapılandırdığınız desteklenen bir bölge.
- INDEX_CONNECTION: Dizin oluşturmak için önceki adımda oluşturduğunuz dizinin bağlantısı.
- REPOSITORY: Dizine eklemek istediğiniz depo. En az bir depo belirtmeniz gerekir. Gerekirse birden fazla depo belirtebilirsiniz.
- BRANCH_NAMES: Dizine eklemek istediğiniz dalların adı (ör. main veya dev).
Dizine eklemek istediğiniz depoların sayısına ve boyutuna bağlı olarak, içeriğin dizine eklenmesi 24 saat kadar sürebilir. Dizin oluşturma işlemi 24 saatte bir gerçekleşir ve depoda yapılan tüm değişiklikler alınır. Dizin oluşturma işleminizin durumunu kontrol etmek için bu adımları uygulayabilirsiniz:

Son olarak, istediğiniz ana hesaba gruba erişim izni verin:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/cloudaicompanion.repositoryGroupsUser'
7. Özelleştirilmiş kod oluşturma
Gemini artık özel deponuzdaki koda erişebildiğinden kod tamamlama isteklerimizde alakalı snippet'ler görmeyi bekleyebiliriz. Örnek depomuzda DTO klasörümüze gidebiliriz. Yeni bir nesneyi temsil edecek yeni bir sınıf oluştururken yazdıkça beklenen ek açıklamaların göründüğünü görebilirsiniz:

8. Sonuç
Bu Codelab'i tamamladığınız için tebrikler. Gemini Code Assist'in Kod Özelleştirme özelliğini kullanmayı öğrendiniz. Artık yanıtlarınız, ekiplerinizin özel kod tabanlarına göre uyarlanabildiğinden her istem ve kod tamamlama, ekiplerinizdeki geliştiriciler için daha değerli olacak.
Daha fazla bilgi edinmek ve IAM rollerini ayarlama gibi konularda destek almak için aşağıdaki dokümanları ve materyalleri inceleyebilirsiniz: