1. शुरू करने से पहले
इस कोडलैब में, Gemini Code Assist को तैयार करने का तरीका बताया गया है. इससे डेटा स्टोर करने की निजी जगहों के हिसाब से कोड को पसंद के मुताबिक बनाने के सुझाव मिल सकते हैं. इससे, कोड असिस्ट की मदद से मिलने वाले नतीजे ज़्यादा काम के हो सकते हैं. खास तौर पर, उन टीमों के लिए जो बार-बार होने वाले मिलते-जुलते काम के लिए खास समझौते करती हैं. भरोसा रखें कि इस सुविधा के लिए, Gemini को अपने निजी कोडबेस को इंडेक्स करने की अनुमति देने पर, Gemini आपके निजी कोड पर बड़े पैमाने पर ट्रेनिंग नहीं देगा.
हम इस बारे में भी बातचीत करेंगे कि .aiexclude
फ़ाइल की मदद से, संवेदनशील या बिना काम की फ़ाइलों को किस तरह कोड कस्टमाइज़ेशन से बाहर रखा जाए.
ज़रूरी शर्तें
- कोड से जुड़ी सहायता देने वाली Gemini की सुविधा के बारे में बुनियादी जानकारी और उस प्रोजेक्ट का ऐक्सेस जहां यह सुविधा चालू है
- कोड में पसंद के मुताबिक बदलाव करने के लिए, कोडिंग के लिए इस्तेमाल की जा सकने वाली भाषा के बारे में जानकारी
us-central1
याeurope-west1
में संसाधन बनाने की सुविधा उपलब्ध है, क्योंकि कोड को पसंद के मुताबिक बनाने के लिए उन जगहों पर Developer Connect कनेक्शन की ज़रूरत होती है.- अप-टू-डेट और पुष्टि किया गया Google Cloud सीएलआई
आपको ये सब सीखने को मिलेगा
- Gemini Code Assist Enterprise में कोड को पसंद के मुताबिक बनाने का तरीका
- इस्तेमाल के कई उदाहरणों में से एक, जहां कोड में पसंद के मुताबिक बदलाव करने से आपकी टीमों का समय बच सकता है
आपको इन चीज़ों की ज़रूरत पड़ेगी
- Google Cloud प्रोजेक्ट में, कोड से जुड़ी सहायता देने वाली Gemini की सुविधा चालू हो
- कस्टमाइज़ेशन के अनुरोधों को इंडेक्स करने के लिए निजी रिपॉज़िटरी
- पसंद के मुताबिक बनाने के अनुरोधों के लिए कोड को इंडेक्स करने का समय. इसमें 24 घंटे लग सकते हैं
- Gemini Code Assist की सुविधा वाला इंटिग्रेटेड डेवलपमेंट एनवायरमेंट (आईडीई)
2. संदर्भ
कोड में पसंद के मुताबिक बदलाव करने के लिए, दो चीज़ें ज़रूरी हैं:
- Gemini चालू वाले Google Cloud प्रोजेक्ट का ऐक्सेस
- और 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 एक ऐसी सेवा है जो GitHub या GitLab में मौजूद आपके निजी कोड रिपॉज़िटरी से कनेक्शन और लिंक बनाने में मदद करती है. यह एक ऐसा तरीका है जिसकी मदद से Gemini Code Assist, आपके निजी रिपॉज़िटरी से सुरक्षित तरीके से कनेक्ट हो पाता है. इससे, वह इंडेक्स बना पाता है जिसका इस्तेमाल जवाबों को बेहतर बनाने के लिए किया जाता है.
इन दो कॉन्सेप्ट से यह समझने में मदद मिलती है कि Developer Connect, आपके कोड का ऐक्सेस सुरक्षित तरीके से कैसे देता है:
कनेक्शन
- यह Google और तीसरे पक्ष के सोर्स कोड मैनेजमेंट प्लैटफ़ॉर्म के बीच के कनेक्शन को दिखाता है.
लिंक
- यह किसी सोर्स कोड रिपॉज़िटरी के साथ असोसिएशन दिखाता है. यह रिपॉज़िटरी, कनेक्ट किए गए सोर्स कोड मैनेजमेंट प्लैटफ़ॉर्म में चुनी जाती है.
इन कॉन्सेप्ट को ध्यान में रखते हुए, अपने प्रोजेक्ट के लिए एपीआई चालू करने के लिए, 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: इंडेक्स बनाने के लिए पिछले चरण में बनाए गए इंडेक्स का कनेक्शन.
- डेटा संग्रह स्थान: वह डेटा संग्रह स्थान, जिसे आप इंडेक्स करना चाहते हैं. आपको कम से कम एक रिपॉज़िटरी की जानकारी देनी होगी. ज़रूरत के हिसाब से, एक से ज़्यादा रिपॉज़िटरी की जानकारी भी दी जा सकती है.
- BRANCH_NAMES: उन शाखाओं का नाम जिन्हें आपको इंडेक्स करना है, जैसे कि main या dev.
आपको जिन रिपॉज़िटरी को इंडेक्स करना है उनकी संख्या और साइज़ के आधार पर, कॉन्टेंट को इंडेक्स करने में 24 घंटे लग सकते हैं. इंडेक्स करने की प्रोसेस हर 24 घंटे में एक बार होती है. इसमें, रिपॉज़िटरी में किए गए सभी बदलावों को शामिल किया जाता है. इंडेक्स जनरेशन की स्थिति देखने के लिए, यह तरीका अपनाएं:
आखिर में, ग्रुप को प्रिंसिपल ऐक्सेस दें:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/cloudaicompanion.repositoryGroupsUser'
7. पसंद के मुताबिक कोड जनरेट करना
अब Gemini के पास आपकी निजी रिपॉज़िटरी में मौजूद कोड का ऐक्सेस है. इसलिए, हमें उम्मीद है कि कोड पूरा करने के अनुरोधों में काम के स्निपेट दिखेंगे. रिपॉज़िटरी के उदाहरण में, हम अपने डीटीओ फ़ोल्डर पर जा सकते हैं. नए ऑब्जेक्ट को दिखाने के लिए नई क्लास बनाते समय, आपको वही एनोटेशन दिख सकते हैं जो हमारे टाइप करने पर दिखते हैं:
8. नतीजा
यह कोडलैब पूरा करने के लिए बधाई! आपने Gemini Code Assist की कोड को पसंद के मुताबिक बनाने की सुविधा का इस्तेमाल करने का तरीका जाना है. अब आपके जवाब, आपकी टीम के हिसाब से तैयार किए जा सकते हैं. जैसे, निजी कोड बेस में सेव किए गए जवाब. ऐसे में, कोड के पूरे होने के हर प्रॉम्प्ट और अनुरोध को पूरा करना, आपकी टीम के डेवलपर के लिए ज़्यादा फ़ायदेमंद साबित होगा.
ज़्यादा जानकारी के लिए, इन दस्तावेज़ों और अन्य कॉन्टेंट को पढ़ें. साथ ही, IAM भूमिकाएं सेट अप करने जैसी चीज़ों के लिए सहायता पाएं: