इस दस्तावेज़ में, 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 पेज पर जाएं. इसके बाद, Repositories टैब में, टेबल के Connection कॉलम में मौजूद Connection ID ढूंढें. संसाधन का नाम कॉपी करने के लिए, ज़्यादा विकल्पों के लिए 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
अगर आपको पसंद है, तो Cloud Key Management Service के ज़रिए, ग्राहक की ओर से मैनेज की जाने वाली एन्क्रिप्शन कुंजी (सीएमईके) का इस्तेमाल करके, अपने डेटा को एन्क्रिप्ट (सुरक्षित) किया जा सकता है और उसे कंट्रोल किया जा सकता है. CMEK का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, ग्राहक की ओर से मैनेज की जाने वाली एन्क्रिप्शन कुंजियों की मदद से डेटा को एन्क्रिप्ट (सुरक्षित) करना लेख पढ़ें.
किसी प्रोजेक्ट पर, रिपॉज़िटरी ग्रुप को IAM भूमिका असाइन करना
आपको सिर्फ़ इंडेक्स में मौजूद रिपॉज़िटरी से सुझाव मिलते हैं. हर रिपॉज़िटरी, एक या उससे ज़्यादा रिपॉज़िटरी ग्रुप से जुड़ी होती है. सुझाव ऐक्सेस करने के लिए, आपको Cloud AI कंपैनियन के रिपॉज़िटरी ग्रुप के उपयोगकर्ता की IAM भूमिका (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:test-user@gmail.com
या किसी ग्रुप के लिएgroup:admins@example.com
.
ज़्यादा जानकारी के लिए,
gcloud projects set-iam-policy
देखें.जब आपसे कोई शर्त तय करने के लिए कहा जाए, तब
None
डालें.
मुख्य खातों को इंडेक्स के सबसेट का ऐक्सेस देना
एक से ज़्यादा रिपॉज़िटरी ग्रुप बनाए जा सकते हैं. साथ ही, अलग-अलग आईएएम प्रिंसिपल को आईएएम की भूमिकाएं असाइन की जा सकती हैं.
gcloud
आईएम नीति सेट अप करने के लिए, आपको आईएम नीति की JSON या YAML फ़ाइल तैयार करनी होगी. इसमें आईएम ग्रुप और असाइन की गई भूमिकाओं की सूची शामिल होगी. उदाहरण के लिए:
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
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 = ["test-user@example.com"]
}
}
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 = ["test-user@example.com"]
}
इनकी जगह ये डालें:
GROUP_NAME
: यह उस रिपॉज़िटरी ग्रुप का नाम है जिसे आपने रिपॉज़िटरी ग्रुप का इस्तेमाल करके अपने इंडेक्स के ऐक्सेस को कंट्रोल करने के लिए, पिछले चरण में बनाया था.REGION
: यह एक ऐसा देश/इलाका होना चाहिए जहां यह सुविधा काम करती है. इस पेज के शुरू करने से पहले सेक्शन में इसकी जानकारी दी गई है. साथ ही, आपने इसे अपने Google Cloud प्रोजेक्ट में Developer Connect में कॉन्फ़िगर किया हो.INDEX_NAME
: यह उस इंडेक्स का नाम है जिसे आपने इंडेक्स बनाने के लिए, पिछले चरण में बनाया था.ज़्यादा जानकारी के लिए,
gcloud gemini code-repository-indexes repository-groups set-iam-policy
देखें.
इंडेक्सिंग की स्थिति देखना
आपको जितनी रिपॉज़िटरी इंडेक्स करनी हैं और उनका साइज़ जितना है उसके हिसाब से, कॉन्टेंट को इंडेक्स करने में 24 घंटे तक लग सकते हैं. बड़ी रिपॉज़िटरी को इंडेक्स करने में ज़्यादा समय लग सकता है. इंडेक्सिंग हर 24 घंटे में एक बार होती है. इसमें रिपॉज़िटरी में किए गए सभी बदलाव शामिल होते हैं.
indexing
लॉग खोजें. ज़्यादा जानकारी के लिए, क्वेरी की भाषा को लॉग करना लेख पढ़ें.कंसोल
Google API 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 के अन्य आईडीई: Gemini Code Assist की मदद से कोड लिखना
- Cloud Shell: Gemini Code Assist की मदद से कोड लिखना
- Cloud Workstations: Gemini Code Assist की मदद से कोड लिखना
- कोड को पसंद के मुताबिक बनाने की सुविधा और सबसे सही तरीकों के बारे में जानें.
- ग्राहक की ओर से मैनेज की जाने वाली एन्क्रिप्शन कुंजियों (सीएमईके) की मदद से डेटा को एन्क्रिप्ट करने का तरीका जानें.
- Developer Connect के बारे में ज़्यादा जानें.
- जानें कि Gemini for Google Cloud, आपके डेटा का इस्तेमाल कब और कैसे करता है.