1. לפני שמתחילים
בשיעור הזה תלמדו איך להכין את Gemini Code Assist כדי לספק הצעות להתאמה אישית של קוד שמותאמות למאגרים הפרטיים שלכם. דבר זה יכול להפוך את התוצאות מ-Code Assist למועילות יותר באופן משמעותי, במיוחד לצוותים עם מוסכמות ספציפיות לעבודה דומה שחוזרת על עצמה לעיתים קרובות. חשוב לדעת: מתן הרשאה ל-Gemini להוסיף לאינדקס את בסיס הקוד הפרטי שלכם לצורך התכונה הזו לא מאפשר ל-Gemini להתאמן באופן נרחב על הקוד הפרטי שלכם.
בנוסף, נדון בדרכים להחריג קבצים רגישים או לא רלוונטיים מההתאמה האישית של הקוד באמצעות קובץ .aiexclude
.
דרישות מוקדמות
- הבנה בסיסית של Gemini Code Assist וגישה לפרויקט שבו הוא מופעל
- היכרות עם שפת תכנות נתמכת לצורך התאמה אישית של קוד
- יכולת ליצור משאבים ב-
us-central1
או ב-europe-west1
, כי התאמה אישית של קוד דורשת חיבורים ל-Developer Connect במיקומים האלה. - גרסה עדכנית ומאומתת של Google Cloud CLI
מה תלמדו
- איך משתמשים בהתאמה אישית של הקוד ב-Gemini Code Assist Enterprise
- אחד מהתרחישים לדוגמה הרבים שבהם התאמה אישית של קוד יכולה לחסוך זמן לצוותיכם
מה צריך
- פרויקט ב-Google Cloud הופעל, Gemini Code Assist
- מאגר פרטי ליצירת אינדקס לבקשות התאמה אישית
- הגיע הזמן להוסיף את הקוד לאינדקס כדי לקבל בקשות להתאמה אישית. התהליך עשוי להימשך עד 24 שעות.
- סביבת פיתוח משולבת (IDE) עם Gemini Code Assist מותקן
2. הקשר
כדי לנסות התאמה אישית של קוד, נדרשים שני דברים:
- גישה לפרויקט ב-Google Cloud שבו 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;
}
זה מספיק כדי להראות שהגישות (accessors) שתורמים אחרים לקוד הבסיסי הזה צפויים להשתמש בהן יופקו בצורה מדויקת כשהתאמה אישית של קוד מופעלת.
יוצרים מאגר חדש, ומוודאים שהוא פרטי. כדי לדחוף את ערכת ה-starter למאגר החדש:
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 ולהפעיל את ה-API בפרויקט.
לאחר מכן פועלים לפי השלבים המתאימים כדי ליצור חיבור וקישור עבור 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: אזור נתמך מהרשימה במסמכים, שהגדרתם ב-Developer Connect בפרויקט שלכם ב-Google Cloud.
- 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. סיכום
מזל טוב, השלמת את ה-Codelab הזה! למדת איך להשתמש בתכונה התאמה אישית של קוד ב-Gemini Code Assist. עכשיו אפשר להתאים אישית את התשובות לקוד הבסיסי הפרטי והספציפי של הצוותים, כך שכל הנחיה והשלמת קוד יהיו מועילות יותר למפתחים בצוותים שלכם.
אתם מוזמנים לעיין במסמכים ובחומרים הבאים כדי לקרוא מידע נוסף, כולל תמיכה בדברים כמו הגדרת תפקידי IAM: