במאמר הזה מוסבר איך להגדיר התאמה אישית של קוד ב-Gemini Code Assist על ידי חיבור Gemini Code Assist למאגרי הקוד הפרטיים שלכם. התכונה הזו מאפשרת לקבל המלצות לקוד, שמבוססות על הספריות הפנימיות, ממשקי ה-API הפרטיים וסגנון התכנות של הארגון.
לפני שמתחילים
- מגדירים את Gemini Code Assist עם מינוי Enterprise.
- ליצור או להגדיר חשבונות של משתמשי קצה. לכל מפתח בארגון שמשתמש ב-Gemini Code Assist צריכה להיות זהות משתמש ב-Google Cloud עם הרשאה לגשת לפרויקט שלכם ב-Google Cloud. מידע נוסף זמין במאמר הקצאת תפקידים במסוף Google Cloud. מוודאים שלכל משתמש יש את התפקידים הבאים:
מגדירים את 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
בחירת המאגרים הפרטיים שאליהם רוצים להתחבר
מומלץ לחבר מאגרים:
- קוד בסגנון או במבנה דומים לסגנון או למבנה שרוצים שהמפתחים יכתבו.
- יש לכם ספריות פרטיות או ממשקי API שתרצו לבצע קריאה אליהם ממסד הקוד הנוכחי.
(אופציונלי) בוחרים אילו קבצים לא יתווספו לאינדקס
כברירת מחדל, התאמה אישית של קוד יוצרת אינדקס של כל קובצי הקוד הנתמכים במאגרים שציינתם.בתרחישים רבים, יכול להיות שיש לכם קבצים ספציפיים או עצים משניים שאתם לא רוצים להוסיף לאינדקס. לדוגמה:
- מידע רגיש מאוד עם גישה מוגבלת בתוך הארגון
- קוד ישן או קוד שהוצא משימוש
- קוד שנוצר באופן אוטומטי או קוד זמני
כדי למנוע חשיפת קוד שאתם לא רוצים להוסיף לאינדקס, תוכלו להשתמש בדפוסי ההסתעפות כדי לשלוט בגישה לאינדקס ולהשתמש בהסתעפות יציבה, כמו 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
: אזור נתמך, כפי שמפורט בקטע לפני שמתחילים בדף הזה, שהגדרתם ב-Developer Connect בפרויקט שלכם ב-Google Cloud.
בדרך כלל, יצירת האינדקס נמשכת 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
: אזור נתמך, כפי שמפורט בקטע לפני שמתחילים בדף הזה, שהגדרתם ב-Developer Connect בפרויקט שלכם ב-Google Cloud.INDEX_NAME
: השם של האינדקס שיצרתם בשלב הקודם כדי ליצור אינדקס.REPOSITORY_RESOURCE_NAME
: השם של המאגר בתוך החיבור ל-Developer Connect. כדי למצוא את שם המאגר, עוברים אל הדף Developer Connect במסוף Google Cloud, ובכרטיסייה Repositories מחפשים את מזהה החיבור בעמודה Connection בטבלה. כדי להעתיק את שם המשאב, לוחצים על התפריט 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) דרך Cloud Key Management Service. למידע נוסף על שימוש ב-CMEK, קראו את המאמר הצפנת נתונים באמצעות מפתחות הצפנה בניהול הלקוח.
הקצאת תפקיד IAM לקבוצת המאגר בפרויקט
אתם מקבלים הצעות רק ממאגרים שמופיעים במדד. כל מאגר שייך לקבוצת מאגרים אחת או יותר. כדי לגשת להצעות, צריך להקצות לקבוצת המאגר את תפקיד ה-IAM 'משתמש בקבוצות של מאגרי Cloud AI Companion' (roles/cloudaicompanion.repositoryGroupsUser
) – שכולל את ההרשאה הנדרשת cloudaicompanion.repositoryGroups.user
ב-IAM – באחת מהדרכים הבאות:
- מעניקים לחשבונות המשתמשים הרשאה לגשת לכל האינדקס.
- הענקת גישה לחשבונות משתמשים לקבוצת משנה של האינדקס.
מתן הרשאה לחשבונות משתמשים לגשת לכל האינדקס
כדי לקשר מדיניות 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
.
הענקת גישה לחשבונות משתמשים לקבוצת משנה של האינדקס
אפשר ליצור כמה קבוצות של מאגרים ולהקצות תפקידים ב-IAM לחשבונות משתמשים שונים ב-IAM.
gcloud
כדי להגדיר מדיניות IAM, צריך להכין את קובץ ה-JSON או ה-YAML של מדיניות IAM, שיכיל רשימה של קבוצות IAM ותפקידים שהוקצו. לדוגמה:
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
פרטים נוספים ותחביר מופיעים במאמר הסבר על מדיניות ההרשאות.
כדי להגדיר את מדיניות ה-IAM, בסביבת מעטפת משתמשים בפקודה 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
: מדיניות IAM.REGION
: אזור נתמך, כפי שמפורט בקטע לפני שמתחילים בדף הזה, שהגדרתם ב-Developer Connect בפרויקט שלכם ב-Google Cloud.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
: אזור נתמך, כפי שמפורט בקטע לפני שמתחילים בדף הזה, שהגדרתם ב-Developer Connect בפרויקט שלכם ב-Google Cloud.INDEX_NAME
: השם של האינדקס שיצרתם בשלב הקודם כדי ליצור אינדקס.מידע נוסף זמין במאמר
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
בדיקת סטטוס ההוספה לאינדקס
תהליך ההוספה לאינדקס עשוי להימשך עד 24 שעות, בהתאם למספר המאגרים שרוצים להוסיף לאינדקס ולגודל שלהם. הוספה לאינדקס של מאגרים גדולים יכולה להימשך זמן רב יותר. ההוספה לאינדקס מתבצעת פעם ב-24 שעות, והיא כוללת את כל השינויים שבוצעו במאגר.
מחפשים את היומנים
indexing
. למידע נוסף, ראו שפת השאילתות של יומנים.המסוף
נכנסים לדף Logs Explorer במסוף Google API.
משתמשים במסנן שמות היומנים כדי להציג יומני
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
: אזור נתמך, כפי שמפורט בקטע לפני שמתחילים בדף הזה, שהגדרתם ב-Developer Connect בפרויקט שלכם ב-Google Cloud.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
חוזרים על שלב 3 לכל קבוצת מאגרים עד שמוחקים את כל קבוצות המאגרים מהאינדקס.
אופציונלי: כדי למחוק את האינדקס, בסביבת מעטפת משתמשים בפקודה
gemini code-repository-indexes delete
:gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
המאמרים הבאים
- התחלת השימוש ב-Gemini Code Assist:
- VS Code, IntelliJ וסביבות פיתוח משולבות (IDE) נתמכות אחרות של JetBrains: כתיבה בקוד באמצעות Gemini Code Assist
- Cloud Shell: כתיבה של קוד באמצעות Gemini Code Assist
- Cloud Workstations: כתיבה של קוד באמצעות Gemini Code Assist
- איך משתמשים בהתאמה אישית של קוד ושיטות מומלצות
- איך מצפינים נתונים באמצעות מפתחות הצפנה בניהול הלקוח (CMEK)
- מידע נוסף על Developer Connect
- איך Gemini for Google Cloud משתמש בנתונים שלכם, ובאילו מקרים