इस दस्तावेज़ में, Gemini Code Assist को अपने निजी कोड रिपॉज़िटरी से कनेक्ट करके, Gemini Code Assist कोड को पसंद के मुताबिक बनाने का तरीका बताया गया है. इस सुविधा की मदद से, आपको कोड के सुझाव मिलते हैं. ये सुझाव, आपके संगठन की इंटरनल लाइब्रेरी, निजी एपीआई, और कोडिंग स्टाइल के आधार पर दिए जाते हैं.
शुरू करने से पहले
- Enterprise वर्शन की सदस्यता लेकर, Gemini Code Assist सेट अप करें.
- असली उपयोगकर्ता के खाते बनाएं या कॉन्फ़िगर करें. आपके संगठन में Gemini Code Assist का इस्तेमाल करने वाले हर डेवलपर के पास, Google Cloud में उपयोगकर्ता की ऐसी पहचान होनी चाहिए जिसके पास आपके Google Cloud प्रोजेक्ट को ऐक्सेस करने की अनुमति हो. ज़्यादा जानकारी के लिए, Google Cloud Console में भूमिकाएं देना लेख पढ़ें. पक्का करें कि हर उपयोगकर्ता के पास ये भूमिकाएं हों:
Developer Connect को कॉन्फ़िगर करें. इसके बाद, अपने GitHub.com, GitLab.com या Bitbucket.org रिपॉज़िटरी से कनेक्ट करें:
GitHub
GitLab
Bitbucket
इसके अलावा, ध्यान दें कि कोड में बदलाव करने की सुविधा, सिर्फ़ इन जगहों (इलाकों) में Developer Connect कनेक्शन के साथ काम करती है:
us-central1
europe-west1
asia-southeast1
शेल एनवायरमेंट में,
gcloud components update
कमांड चलाकर पक्का करें कि आपने gcloud के सभी इंस्टॉल किए गए कॉम्पोनेंट को नए वर्शन पर अपडेट कर दिया है. इस चरण के लिए, gcloud को इंस्टॉल और शुरू किया जा सकता है या Cloud Shell Editor का इस्तेमाल किया जा सकता है.gcloud components update
चुनें कि कौनसे निजी रिपॉज़िटरी कनेक्ट किए गए हैं
सबसे सही तरीके के तौर पर, पक्का करें कि आपने ऐसे रिपॉज़िटरी कनेक्ट किए हों जो:
- आपके पास ऐसा कोड हो जो उसी स्टाइल या स्ट्रक्चर का हो जिसे आपको डेवलपर से लिखवाना है.
- आपके पास निजी लाइब्रेरी या एपीआई हों जिन्हें आपको अपने मौजूदा कोडबेस से कॉल करना हो.
(ज़रूरी नहीं) चुनें कि किन फ़ाइलों को इंडेक्स न किया जाए
डिफ़ॉल्ट रूप से, कोड में बदलाव करने की सुविधा, आपकी बताई गई रिपॉज़िटरी में मौजूद सभी काम करने वाली कोड फ़ाइलों का इंडेक्स बनाती है.कई मामलों में, हो सकता है कि आपके पास ऐसी खास फ़ाइलें या सबट्री हों जिन्हें आपको इंडेक्स नहीं करना है. उदाहरण के लिए:
- आपके संगठन में सीमित ऐक्सेस वाली बेहद संवेदनशील जानकारी
- पुराना या काम न करने वाला कोड
- अपने-आप जनरेट हुआ या कुछ समय के लिए मान्य कोड
जिस कोड को इंडेक्स नहीं करना है उसे एक्सपोज़ होने से रोकने के लिए, शाखा के पैटर्न का इस्तेमाल किया जा सकता है. इससे, अपने इंडेक्स के ऐक्सेस को कंट्रोल किया जा सकता है. साथ ही, main
जैसी किसी स्थिर शाखा का इस्तेमाल किया जा सकता है.
इसके अलावा, .aiexclude
फ़ाइल बनाकर भी फ़ाइलों को इंडेक्स से बाहर रखा जा सकता है.
इंडेक्स बनाना
कोड को पसंद के मुताबिक बनाने की सुविधा, इंडेक्स पर निर्भर करती है. इससे, कोड जनरेट करने के सुझाव और लुकअप को तेज़ी से पाने के लिए, आपकी रिपॉज़िटरी का विश्लेषण और उसे पार्स किया जाता है.
gcloud
इंडेक्स बनाने के लिए, शेल एनवायरमेंट में gemini code-repository-indexes create
कमांड का इस्तेमाल करें:
gcloud gemini code-repository-indexes create INDEX_NAME \
--project=PROJECT_ID \
--location=REGION
Terraform
resource "google_gemini_code_repository_index" "example" {
location = "REGION"
code_repository_index_id = "INDEX_NAME"
}
इनकी जगह ये डालें:
INDEX_NAME
: आपके इंडेक्स का नाम. अहम जानकारी: अपने इंडेक्स का नाम रिकॉर्ड करें. इस दस्तावेज़ में कई चरणों के लिए, आपको इसकी ज़रूरत पड़ेगी.PROJECT_ID
: आपका Google Cloud प्रोजेक्ट आईडी.REGION
: ऐसा क्षेत्र जहां यह सुविधा काम करती है. इस बारे में, इस पेज के शुरू करने से पहले सेक्शन में बताया गया है. साथ ही, यह भी ज़रूरी है कि आपने अपने Google Cloud प्रोजेक्ट में Developer Connect में इसे कॉन्फ़िगर किया हो.
आम तौर पर, इंडेक्स बनाने में 30 मिनट लगते हैं. हालांकि, इसमें एक घंटा भी लग सकता है.
Google, हर प्रोजेक्ट और संगठन के लिए कोड रिपॉज़िटरी इंडेक्स की संख्या को एक तक सीमित करता है.
रिपॉज़िटरी ग्रुप का इस्तेमाल करके, अपने इंडेक्स का ऐक्सेस कंट्रोल करना
रिपॉज़िटरी ग्रुप, इंडेक्स करने के कॉन्फ़िगरेशन के लिए एक कंटेनर होता है. इसमें रिपॉज़िटरी और उनके शाखा पैटर्न शामिल होते हैं. रिपॉज़िटरी ग्रुप को IAM के कंट्रोल के लिए डिज़ाइन किया गया है. इससे डेवलपर को उन ग्रुप के इंडेक्स किए गए डेटा का ऐक्सेस मिलता है जिनके लिए उनके पास cloudaicompanion.repositoryGroups.use
अनुमति होती है.
रिपॉज़िटरी ग्रुप में, एक ही प्रोजेक्ट और जगह के Developer Connect रिपॉज़िटरी या लिंक होते हैं.
एडमिन ये काम कर सकते हैं:
- कोड रिपॉज़िटरी इंडेक्स संसाधन बनाएं.
- उसी प्रोजेक्ट और जगह में, Developer Connect का नया कनेक्शन कॉन्फ़िगर करें.
- कनेक्शन में Git डेटा स्टोर करने की जगहों को लिंक करें.
लिंक के रिसॉर्स के नाम पाएं, हर लिंक के लिए इंडेक्स करने के लिए शाखा पैटर्न चुनें, और उसे एक या एक से ज़्यादा रिपॉज़िटरी ग्रुप में डालें.
gcloud
शेल एनवायरमेंट में कोई रिपॉज़िटरी ग्रुप बनाने के लिए, gemini code-repository-indexes repository-groups create
कमांड का इस्तेमाल करें:
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories='[{"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "BRANCH_NAMES"}]'
Terraform
resource "google_gemini_repository_group" "example" {
location = "REGION"
code_repository_index = "INDEX_NAME"
repository_group_id = "REPOSITORY_GROUP"
repositories {
resource = "REPOSITORY_RESOURCE_NAME"
branch_pattern = "BRANCH_NAMES"
}
}
इनकी जगह ये डालें:
REPOSITORY_GROUP
: रिपॉज़िटरी ग्रुप का नाम, जैसे किdefault
.PROJECT_ID
: आपका Google Cloud प्रोजेक्ट आईडी.REGION
: ऐसा देश या इलाका जहां यह सुविधा काम करती है. इसकी जानकारी, इस पेज के शुरू करने से पहले सेक्शन में दी गई है. साथ ही, यह भी ज़रूरी है कि आपने अपने Google Cloud प्रोजेक्ट में Developer Connect में इसे कॉन्फ़िगर किया हो.INDEX_NAME
: इंडेक्स बनाने के लिए, पिछले चरण में बनाए गए इंडेक्स का नाम.REPOSITORY_RESOURCE_NAME
: Developer Connect कनेक्शन में मौजूद रिपॉज़िटरी का नाम. रिपॉज़िटरी का नाम ढूंढने के लिए, Google Cloud Console में Developer Connect पेज पर जाएं. इसके बाद, रिपॉज़िटरी टैब में, टेबल के कनेक्शन कॉलम में कनेक्शन आईडी देखें. संसाधन का नाम कॉपी करने के लिए, ज़्यादा विकल्पों के लिए more_vert मेन्यू पर क्लिक करें. इसके बाद, संसाधन का पाथ कॉपी करें को चुनें.BRANCH_NAMES
: उन शाखाओं का नाम जिन्हें आपको इंडेक्स करना है, जैसे किmain|dev
.
JSON (या YAML) फ़ाइल में बताई गई रिपॉज़िटरी के साथ, रिपॉज़िटरी ग्रुप भी बनाया जा सकता है. इस फ़ाइल का फ़ॉर्मैट इस तरह का होना चाहिए:
JSON
[
{
"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "main|dev"
},
{
"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "dev"
}
]
YAML
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: main|dev
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: dev
शेल एनवायरमेंट में, JSON या YAML फ़ाइल के आधार पर कोई रिपॉज़िटरी ग्रुप बनाने के लिए, gemini code-repository-indexes repository-groups create
कमांड का इस्तेमाल करें:
JSON
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH.json
YAML
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH.yaml
अगर आप चाहें, तो क्लाउड की कुंजी मैनेजमेंट सेवा की मदद से, ग्राहक की ओर से मैनेज की जाने वाली एन्क्रिप्शन कुंजी (CMEK) का इस्तेमाल करके, अपने डेटा को एन्क्रिप्ट (सुरक्षित) किया जा सकता है और उसे कंट्रोल किया जा सकता है. CMEK का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, ग्राहक की ओर से मैनेज की जाने वाली एन्क्रिप्शन कुंजियों की मदद से डेटा एन्क्रिप्ट करना लेख पढ़ें.
किसी प्रोजेक्ट में, रिपॉज़िटरी ग्रुप को IAM भूमिका देना
आपको सिर्फ़ इंडेक्स में मौजूद रिपॉज़िटरी से सुझाव मिलते हैं. हर रिपॉज़िटरी, एक या एक से ज़्यादा रिपॉज़िटरी ग्रुप से जुड़ी होती है. सुझावों को ऐक्सेस करने के लिए, आपको 'Cloud AI Companion' के रिपॉज़िटरी ग्रुप के उपयोगकर्ता को आईएएम की भूमिका (roles/cloudaicompanion.repositoryGroupsUser
) देनी होगी. इसमें ज़रूरी cloudaicompanion.repositoryGroups.user
आईएएम अनुमति शामिल होती है. इसके लिए, इनमें से कोई एक तरीका अपनाएं:
- प्रिंसिपल को पूरे इंडेक्स को ऐक्सेस करने की अनुमति दें.
- प्रिंसिपल को इंडेक्स के सबसेट का ऐक्सेस दें.
प्रिंसिपल को पूरे इंडेक्स को ऐक्सेस करने की अनुमति देना
किसी प्रोजेक्ट के लिए, शेल एनवायरमेंट में IAM नीति को बांधने के लिए,
projects add-iam-policy-binding
कमांड का इस्तेमाल करें:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'
इनकी जगह ये डालें:
PROJECT_ID
: वह प्रोजेक्ट आईडी जहां रिपॉज़िटरी ग्रुप मौजूद है.PRINCIPAL
: उस प्रिंसिपल का ईमेल पता जिसे ऐक्सेस की ज़रूरत है. उदाहरण के लिए, किसी व्यक्ति के लिएuser:[email protected]
या किसी ग्रुप के लिएgroup:[email protected]
.
ज़्यादा जानकारी के लिए,
gcloud projects set-iam-policy
देखें.जब आपसे कोई शर्त बताने के लिए कहा जाए, तो
None
डालें.
प्रिंसिपल को इंडेक्स के सबसेट का ऐक्सेस देना
एक से ज़्यादा रिपॉज़िटरी ग्रुप बनाए जा सकते हैं. साथ ही, अलग-अलग आईएएम प्रिंसिपल को आईएएम भूमिकाएं असाइन की जा सकती हैं.
gcloud
IAM नीति सेट अप करने के लिए, आपको IAM नीति की JSON या YAML फ़ाइल तैयार करनी होगी. इसमें IAM ग्रुप और असाइन की गई भूमिकाओं की सूची होगी. उदाहरण के लिए:
bindings:
- members:
- group:[email protected]
- user:[email protected]
role: roles/cloudaicompanion.repositoryGroupsUser
ज़्यादा जानकारी और सिंटैक्स के लिए, अनुमति देने की नीतियों के बारे में जानकारी लेख पढ़ें.
शेल एनवायरमेंट में आईएएम नीति सेट करने के लिए, gemini code-repository-indexes repository-groups set-iam-policy
कमांड का इस्तेमाल करें:
gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAMEPOLICY_FILE \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME
इनकी जगह ये डालें:
GROUP_NAME
: रिपॉज़िटरी ग्रुप का इस्तेमाल करके, अपने इंडेक्स का ऐक्सेस कंट्रोल करने के लिए, पिछले चरण में बनाए गए रिपॉज़िटरी ग्रुप का नाम.POLICY_FILE
: आईएएम नीति.REGION
: ऐसा क्षेत्र जहां यह सुविधा काम करती है. इस बारे में इस पेज के शुरू करने से पहले सेक्शन में बताया गया है. साथ ही, यह भी बताया गया है कि आपने अपने Google Cloud प्रोजेक्ट में Developer Connect में इसे कैसे कॉन्फ़िगर किया है.INDEX_NAME
: इंडेक्स बनाने के लिए, पिछले चरण में बनाए गए इंडेक्स का नाम.ज़्यादा जानकारी के लिए,
gcloud gemini code-repository-indexes repository-groups set-iam-policy
देखें.
Terraform
data "google_iam_policy" "foo" {
binding {
role = "roles/cloudaicompanion.repositoryGroupsUser"
members = ["[email protected]"]
}
}
resource "google_gemini_repository_group_iam_policy" "foo" {
project = "PROJECT_ID"
location = "REGION"
code_repository_index_id = "INDEX_NAME"
repository_group_id = "GROUP_NAME"
policy_data = data.google_iam_policy.foo.policy_data
}
data "google_gemini_repository_group_iam_policy" "foo" {
project = "PROJECT_ID"
location = "REGION"
code_repository_index_id = "INDEX_NAME"
repository_group_id = "GROUP_NAME"
depends_on = [
google_gemini_repository_group_iam_policy.foo
]
}
बाइंडिंग भी बनाई जा सकती है:
resource "google_gemini_repository_group_iam_binding" "foo" {
project = "PROJECT_ID"
location = "REGION"
code_repository_index_id = "INDEX_NAME"
repository_group_id = "GROUP_NAME"
role = "roles/cloudaicompanion.repositoryGroupsUser"
members = ["[email protected]"]
}
इनकी जगह ये डालें:
GROUP_NAME
: रिपॉज़िटरी ग्रुप का इस्तेमाल करके, अपने इंडेक्स का ऐक्सेस कंट्रोल करने के लिए, पिछले चरण में बनाए गए रिपॉज़िटरी ग्रुप का नाम.REGION
: ऐसा क्षेत्र जहां यह सुविधा काम करती है. इस बारे में इस पेज के शुरू करने से पहले सेक्शन में बताया गया है. साथ ही, यह भी बताया गया है कि आपने अपने Google Cloud प्रोजेक्ट में Developer Connect में इसे कैसे कॉन्फ़िगर किया है.INDEX_NAME
: इंडेक्स बनाने के लिए, पिछले चरण में बनाए गए इंडेक्स का नाम.ज़्यादा जानकारी के लिए,
gcloud gemini code-repository-indexes repository-groups set-iam-policy
देखें.
इंडेक्स करने की स्थिति देखना
आपको जिन रिपॉज़िटरी को इंडेक्स करना है उनकी संख्या और साइज़ के आधार पर, कॉन्टेंट को इंडेक्स करने में 24 घंटे लग सकते हैं. बड़े डेटा स्टोर करने की जगहों को इंडेक्स करने में ज़्यादा समय लग सकता है. इंडेक्स करने की प्रोसेस हर 24 घंटे में एक बार होती है. इसमें, रिपॉज़िटरी में किए गए सभी बदलावों को शामिल किया जाता है.
indexing
लॉग खोजें. ज़्यादा जानकारी के लिए, क्वेरी लैंग्वेज को लॉग करना देखें.कंसोल
Google Cloud Console में, लॉग एक्सप्लोरर पर जाएं.
indexing
लॉग देखने के लिए, लॉग के नाम वाले फ़िल्टर का इस्तेमाल करें.
gcloud
इंडेक्सिंग लॉग खोजने के लिए, शेल एनवायरमेंट में
logging read
कमांड का इस्तेमाल करें:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
PROJECT_ID
की जगह उस प्रोजेक्ट आईडी को डालें जहां रिपॉज़िटरी ग्रुप मौजूद है.उदाहरण के लिए,
indexing
लॉग में गड़बड़ियां देखने के लिए, यह कमांड चलाएं:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
इंडेक्स करने से जुड़ी स्थितियों की समीक्षा करें. जैसे:
- रिपॉज़िटरी को इंडेक्स करने की शुरुआत-उदाहरण के लिए,
Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
- अलग-अलग रिपॉज़िटरी को इंडेक्स करने की प्रोसेस खत्म होना-उदाहरण के लिए:
- सफल हुआ:
Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
- गड़बड़ी:
Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
- सफल हुआ:
- रिपॉज़िटरी को इंडेक्स करने की प्रोसेस खत्म होने पर-उदाहरण के लिए:
- सफल हुआ:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
- गड़बड़ी:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 1. Repositories that were not successfully fetched will be retried in the next run.
- सफल हुआ:
इंडेक्स की स्थितियों में,
REPOSITORY_NAME
वह रिपॉज़िटरी है जिसकी आपको समीक्षा करनी है.- रिपॉज़िटरी को इंडेक्स करने की शुरुआत-उदाहरण के लिए,
इंडेक्स करने से जुड़ी गड़बड़ियों की समीक्षा करें. जैसे:
- रिपॉज़िटरी को फ़ेच नहीं किया जा सका.
- रिपॉज़िटरी फ़ाइलों की सूची नहीं बनाई जा सकी.
- इंडेक्स से रिपॉज़िटरी की जानकारी नहीं मिल सकी.
- इंडेक्स से फ़ाइलें वापस नहीं लाई जा सकीं.
- कोई अंदरूनी गड़बड़ी हुई.
कोड में पसंद के मुताबिक बदलाव करना
कोड को पसंद के मुताबिक बनाने की सुविधा सेट अप करने के बाद, आपको कोड पूरा करने और कोड जनरेट करने के सुझाव दिखने लगेंगे. ये सुझाव, पूरे कोडबेस के बारे में जानकारी के नतीजों के साथ-साथ, इंडेक्स किए गए निजी कोड पर आधारित हो सकते हैं.
कोड को पसंद के मुताबिक बनाने और सबसे सही तरीकों के बारे में ज़्यादा जानने के लिए, कोड को पसंद के मुताबिक बनाने का तरीका लेख पढ़ें.
कोड को पसंद के मुताबिक बनाने की सुविधा बंद करना
शेल एनवायरमेंट में, मौजूदा इंडेक्स के सभी रिपॉज़िटरी ग्रुप की सूची बनाने के लिए,
gemini code-repository-indexes repository-groups list
कमांड का इस्तेमाल करें:gcloud gemini code-repository-indexes repository-groups list --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME --uri
इनकी जगह ये डालें:
REGION
: ऐसा क्षेत्र जहां यह सुविधा काम करती है. इस बारे में इस पेज के शुरू करने से पहले सेक्शन में बताया गया है. साथ ही, यह भी बताया गया है कि आपने अपने Google Cloud प्रोजेक्ट में Developer Connect में इसे कैसे कॉन्फ़िगर किया है.PROJECT_ID
: आपका Google Cloud प्रोजेक्ट आईडी.INDEX_NAME
: इंडेक्स बनाने के लिए, पिछले चरण में बनाए गए इंडेक्स का नाम.
मौजूदा इंडेक्स से किसी रिपॉज़िटरी ग्रुप को मिटाने के लिए,
gemini code-repository-indexes repository-groups delete
कमांड का इस्तेमाल करें:gcloud gemini code-repository-indexes repository-groups delete REPOSITORY_GROUP \ --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME
हर रिपॉज़िटरी ग्रुप के लिए, तीसरा चरण तब तक दोहराएं, जब तक कि इंडेक्स से सभी रिपॉज़िटरी ग्रुप मिटा नहीं दिए जाते.
ज़रूरी नहीं: इंडेक्स मिटाने के लिए, शेल एनवायरमेंट में
gemini code-repository-indexes delete
कमांड का इस्तेमाल करें:gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
आगे क्या करना है
- Gemini Code Assist का इस्तेमाल शुरू करने के लिए:
- VS Code, IntelliJ, और काम करने वाले अन्य JetBrains IDE: Gemini Code Assist की मदद से कोडिंग करना
- Cloud Shell: Gemini Code Assist की मदद से कोड लिखना
- Cloud Workstations: Gemini Code Assist की मदद से कोडिंग करना
- कोड में पसंद के मुताबिक बदलाव करने और सबसे सही तरीके इस्तेमाल करने का तरीका जानें.
- ग्राहक की ओर से मैनेज की जाने वाली एन्क्रिप्शन कुंजियों (CMEK) की मदद से डेटा एन्क्रिप्ट करने का तरीका जानें.
- Developer Connect के बारे में ज़्यादा जानें.
- जानें कि Google Cloud के लिए Gemini आपके डेटा का इस्तेमाल कैसे और कब करता है.