Gemini Code Assist Enterprise की मदद से, कोड में पसंद के मुताबिक बदलाव करना

1. शुरू करने से पहले

इस कोडलैब में, Gemini Code Assist को तैयार करने का तरीका बताया गया है. इससे आपको अपनी निजी डेटाबेस के हिसाब से, कोड को पसंद के मुताबिक बनाने के सुझाव मिलेंगे. इससे, कोड असिस्ट से मिलने वाले नतीजे ज़्यादा मददगार हो सकते हैं. खास तौर पर, उन टीमों के लिए जो एक जैसे काम के लिए खास नियमों का पालन करती हैं. भरोसा रखें कि इस सुविधा के लिए, Gemini को अपने प्राइवेट कोडबेस को इंडेक्स करने की अनुमति देने से, Gemini को आपके प्राइवेट कोड पर ट्रेनिंग देने की अनुमति नहीं मिलती है.

हम यह भी बताएंगे कि .aiexclude फ़ाइल का इस्तेमाल करके, कोड को पसंद के मुताबिक बनाने के लिए संवेदनशील या काम की नहीं रहने वाली फ़ाइलों को कैसे शामिल न करें.

ज़रूरी शर्तें

  • Gemini Code Assist के बारे में बुनियादी जानकारी और उस प्रोजेक्ट का ऐक्सेस जिसमें यह सुविधा चालू है
  • कोड को पसंद के मुताबिक बनाने के लिए, कोडिंग के लिए इस्तेमाल की जा सकने वाली भाषा की जानकारी होना
  • us-central1 या europe-west1 में संसाधन बनाने की सुविधा. ऐसा इसलिए, क्योंकि कोड को पसंद के मुताबिक बनाने के लिए, उन जगहों पर Developer Connect कनेक्शन की ज़रूरत होती है.
  • अप-टू-डेट और पुष्टि किया गया Google Cloud CLI

आपको ये सब सीखने को मिलेगा

  • Gemini Code Assist Enterprise में कोड को पसंद के मुताबिक बनाने की सुविधा का इस्तेमाल कैसे करें
  • ऐसे कई उदाहरणों में से एक जहां कोड को पसंद के मुताबिक बनाने से, आपकी टीमों का समय बच सकता है

आपको इन चीज़ों की ज़रूरत पड़ेगी

  • Gemini Code Assist की सुविधा चालू किया गया Google Cloud प्रोजेक्ट
  • कस्टमाइज़ेशन के अनुरोधों के लिए इंडेक्स करने के लिए, डेटा स्टोर करने की निजी जगह
  • कस्टम बनाने के अनुरोधों के लिए कोड को इंडेक्स करने में लगने वाला समय. इसमें 24 घंटे लग सकते हैं
  • Gemini Code Assist इंस्टॉल किया गया आईडीई

2. कॉन्टेक्स्ट

कोड को पसंद के मुताबिक बनाने की सुविधा आज़माने के लिए, ये दो चीज़ें ज़रूरी हैं:

  1. आपके पास Gemini की सुविधा चालू किए गए Google Cloud प्रोजेक्ट का ऐक्सेस होना चाहिए
  2. और Gemini को जवाब देने के लिए, एक निजी रिपॉज़िटरी.

Gemini की सुविधा चालू करना

Gemini के लिए इंडेक्स करने के लिए सबसे अच्छी कैंडिडेट रिपॉज़िटरी में ऐसा कोड होता है जिसका इस्तेमाल आपके संगठन में अक्सर किया जाता है. इस कोडलैब के लिए उपलब्ध कराई गई सैंपल रिपॉज़िटरी में, एक स्टैंडर्ड Spring Boot वेब सेवा शामिल है. इसमें डेटा ट्रांसफ़र ऑब्जेक्ट का एक फ़ोल्डर भी है, जो इस शर्त को पूरा करता है. ऐसा इसलिए है, क्योंकि डेटाबेस में मौजूद हर इकाई के बारे में बताने के लिए, एक जैसी क्लास बनाई जाएगी. ऐसा तब होगा, जब इसे प्रेजेंटेशन लेयर पर ले जाया जा रहा हो.

3. (ज़रूरी नहीं) रिपॉज़िटरी सेटअप करना

अगर आपको अपनी किसी निजी रिपॉज़िटरी के बजाय, उदाहरण के तौर पर दी गई रिपॉज़िटरी का इस्तेमाल करना है, तो अपनी पसंद के टर्मिनल एडिटर या Cloud Shell पर यह तरीका अपनाएं. सबसे पहले, एक निजी डेटाबेस बनाएं, ताकि हम कोड को पसंद के मुताबिक बनाने की सुविधा को ऐक्शन में देख सकें:

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 फ़ाइल में यह कोड जोड़ें:

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;
}

इससे यह साबित किया जा सकेगा कि इस कोडबेस के अन्य योगदानकर्ता, कोड को पसंद के मुताबिक बनाने की सुविधा चालू होने पर, ऐक्सेस करने वालों के लिए सही तरीके से जनरेट किए जाएंगे.

नई रिपॉज़िटरी बनाएं और उसे निजी के तौर पर सेट करें. स्टार्टर को अपनी नई रिपॉज़िटरी में पुश करने के लिए, यहां दिया गया तरीका अपनाएं:

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. फ़ाइलों को शामिल न करना

Gemini को अपनी निजी रिपॉज़िटरी का ऐक्सेस देने से पहले, यह समझना ज़रूरी है कि उन फ़ाइलों को कैसे हटाया जाए जो काम की नहीं हैं या संवेदनशील हैं और आपकी टीम उन्हें इंडेक्स नहीं करना चाहती. इसके लिए, .aiexclude फ़ाइल का इस्तेमाल किया जाता है. यह .gitignore फ़ाइल की तरह ही होती है. हालांकि, इन दोनों में कुछ मुख्य अंतर हैं:

  • खाली .aiexclude फ़ाइल, अपनी डायरेक्ट्री और सभी सब-डायरेक्ट्री में मौजूद सभी फ़ाइलों को ब्लॉक करती है.
    • यह उस फ़ाइल के जैसा ही है जिसमें **/* शामिल है.
  • .aiexclude फ़ाइलों में, नेगेशन (पैटर्न के पहले ! लगाना) की सुविधा काम नहीं करती.

इसे ध्यान में रखते हुए, उन फ़ाइल टाइप या डायरेक्ट्री के बारे में सोचें जिन्हें आपकी टीम को शामिल नहीं करना है. साथ ही, उन्हें अलग-अलग लाइनों में लिखें:

#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 को कॉन्फ़िगर करना

Developer Connect एक ऐसी सेवा है जो GitHub या GitLab में मौजूद आपकी निजी कोड रिपॉज़िटरी के साथ कनेक्शन और लिंक की सुविधा देती है. यह एक ऐसा सिस्टम है जिसकी मदद से Gemini Code Assist, आपकी निजी रिपॉज़िटरी से सुरक्षित तरीके से कनेक्ट हो पाता है. इससे एक इंडेक्स तैयार होता है, जिसका इस्तेमाल जवाबों को बेहतर बनाने के लिए किया जाता है.

इन दो कॉन्सेप्ट से यह समझने में मदद मिलती है कि Developer Connect, आपके कोड का ऐक्सेस सुरक्षित तरीके से कैसे देता है:

कनेक्शन

  • यह कुकी, Google और तीसरे पक्ष के सोर्स कोड मैनेजमेंट प्लैटफ़ॉर्म के बीच ब्रिज का काम करती है.

लिंक

  • यह किसी सोर्स कोड रिपॉज़िटरी के साथ जुड़ाव को दिखाता है. इसे कनेक्ट किए गए सोर्स कोड मैनेजमेंट प्लैटफ़ॉर्म में चुना जाता है.

इन बातों को ध्यान में रखते हुए, अपने प्रोजेक्ट के लिए एपीआई चालू करने के लिए, Developer Connect पेज पर जाएं.

Developer Connect को चालू करना

इसके बाद, GitHub या GitLab के लिए कनेक्शन और लिंक बनाने के लिए, सही तरीका अपनाएं. विज़र्ड प्रोसेस के दौरान, दोनों संसाधन बनाए जाएंगे.

कनेक्शन बनाना और लिंक करना

जिन रिपॉज़िटरी के लिए, Gemini की कोड को पसंद के मुताबिक़ बनाने की सुविधा का इस्तेमाल करना है उनके लिए, लिंक बनाने के लिए यह तरीका दोहराएं. अगर कई रिपॉज़िटरी एक ही प्लैटफ़ॉर्म से आती हैं, तो मौजूदा कनेक्शन का फिर से इस्तेमाल किया जा सकता है.

6. इंडेक्स बनाना और उससे कनेक्ट करना

आपकी रिपॉज़िटरी को तेज़ी से पार्स और विश्लेषण करने के लिए, कोड को पसंद के मुताबिक बनाने की सुविधा, इंडेक्स पर निर्भर करती है. इस्तेमाल किए गए INDEX_NAME को नोट कर लें, क्योंकि आपको अगले चरण में इसकी ज़रूरत पड़ेगी.

इंडेक्स बनाने के लिए, यह कमांड चलाएं:

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

अगर आपको कोई Invalid choice: ... गड़बड़ी दिखती है, तो पक्का करें कि आपका Google Cloud CLI अप-टू-डेट हो. इसके लिए, यह कमांड चलाएं:

gcloud components update

इसके बाद, रिपॉज़िटरी ग्रुप बनाकर अपने इंडेक्स को ऐक्सेस करने की अनुमति दें:

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"}]'

इन वैल्यू को बदलें:

  • REPOSITORY_GROUP: यह उस रिपॉज़िटरी ग्रुप का नाम है जिसे आपको बनाना है
  • PROJECT_ID: आपका Google Cloud प्रोजेक्ट आईडी.
  • INDEX_NAME: इंडेक्स का वह नाम जिसे आपने इंडेक्स बनाने के लिए पिछले चरण में तय किया था.
  • REGION: दस्तावेज़ में दी गई सूची में से कोई ऐसा क्षेत्र जहां यह सुविधा काम करती है. इसे आपने अपने Google Cloud प्रोजेक्ट में Developer Connect में कॉन्फ़िगर किया हो.
  • INDEX_CONNECTION: इंडेक्स बनाने के लिए, पिछले चरण में बनाए गए इंडेक्स का कनेक्शन.
  • REPOSITORY: वह रिपॉज़िटरी जिसे आपको इंडेक्स करना है. आपको कम से कम एक रिपॉज़िटरी तय करनी होगी. साथ ही, ज़रूरत के मुताबिक एक से ज़्यादा रिपॉज़िटरी तय की जा सकती हैं.
  • BRANCH_NAMES: उन ब्रांच के नाम जिन्हें आपको इंडेक्स करना है. जैसे, main या dev.

आपको जितनी रिपॉज़िटरी इंडेक्स करनी हैं और उनका साइज़ जितना है उसके हिसाब से, कॉन्टेंट को इंडेक्स करने में 24 घंटे तक लग सकते हैं. हर 24 घंटे में एक बार इंडेक्सिंग होती है. इससे रिपॉज़िटरी में किए गए सभी बदलावों को शामिल किया जाता है. इंडेक्स जनरेट होने की स्थिति देखने के लिए, यह तरीका अपनाएं:

इंडेक्स करने की स्थिति की जानकारी खोजना

आखिर में, प्रिंसिपल को ग्रुप का ऐक्सेस दें:

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

7. अपनी पसंद के मुताबिक कोड जनरेट करना

Gemini के पास अब आपकी निजी डेटाबेस में मौजूद कोड का ऐक्सेस है. इसलिए, हमें कोड पूरा करने के अनुरोधों में काम के स्निपेट दिख सकते हैं. हमारी उदाहरण रिपॉज़िटरी में, हम अपने DTO फ़ोल्डर पर जा सकते हैं. साथ ही, नया ऑब्जेक्ट दिखाने के लिए नई क्लास बनाते समय, आपको टाइप करते समय अनुमानित एनोटेशन दिख सकते हैं:

जनरेट किया गया सैंपल

8. नतीजा

इस कोडलैब को पूरा करने के लिए बधाई! आपने Gemini Code Assist की कोड को पसंद के मुताबिक बनाने की सुविधा का इस्तेमाल करना सीख लिया है. अब आपको अपनी टीमों के खास और निजी कोडबेस के हिसाब से जवाब मिल सकते हैं. इससे, आपकी टीमों के डेवलपर को हर प्रॉम्प्ट और कोड पूरा करने की सुविधा से ज़्यादा फ़ायदा मिलेगा.

ज़्यादा जानकारी के लिए, इन अन्य दस्तावेज़ों और मटीरियल को पढ़ें. साथ ही, IAM की भूमिकाएं सेट अप करने जैसी चीज़ों के लिए सहायता पाएं: