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 شامل کدهایی است که اغلب در سراسر سازمان شما مجددا استفاده می شود. مخزن نمونه ارائه شده برای این codelab حاوی یک سرویس وب استاندارد 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 را پیکربندی کنید
Developer Connect سرویسی است که اتصال و پیوند به مخازن کد خصوصی شما در GitHub یا GitLab را تسهیل می کند. این مکانیزمی است که به Gemini Code Assist اجازه می دهد تا به طور ایمن به مخازن خصوصی شما متصل شود تا شاخصی را ایجاد کند که برای بهبود پاسخ ها استفاده می شود.
این دو مفهوم برای درک نحوه دسترسی ایمن Developer Connect به کد شما مفید هستند:
اتصال
- نشان دهنده پل بین Google و پلتفرم مدیریت کد منبع شخص ثالث است.
پیوند
- نشان دهنده ارتباط با یک مخزن کد منبع فردی است که شما در یک پلت فرم مدیریت کد منبع متصل انتخاب می کنید.
با در نظر گرفتن این مفاهیم، با رفتن به صفحه Developer Connect برای فعال کردن API برای پروژه خود شروع کنید.
در مرحله بعد، مراحل مناسب را برای ایجاد یک اتصال و پیوند برای GitHub یا GitLab دنبال کنید. هر دو منبع در طی فرآیند جادوگر ایجاد خواهند شد.
این مراحل را تکرار کنید تا برای هر مخزنی که میخواهید ویژگی سفارشیسازی کد Gemini در پاسخهای آن در نظر گرفته شود، پیوند ایجاد کنید. اگر چندین مخزن از یک پلتفرم آمده باشند، می توانید از اتصال موجود مجددا استفاده کنید.
6. ایجاد و اتصال به فهرست
برای تجزیه و تحلیل سریع مخازن خود، سفارشیسازی کد به یک Index متکی است. 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، می توانید این اسناد و مطالب دیگر را مرور کنید:
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 شامل کدهایی است که اغلب در سراسر سازمان شما مجددا استفاده می شود. مخزن نمونه ارائه شده برای این codelab حاوی یک سرویس وب استاندارد 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 را پیکربندی کنید
Developer Connect سرویسی است که اتصال و پیوند به مخازن کد خصوصی شما در GitHub یا GitLab را تسهیل می کند. این مکانیزمی است که به Gemini Code Assist اجازه می دهد تا به طور ایمن به مخازن خصوصی شما متصل شود تا شاخصی را ایجاد کند که برای بهبود پاسخ ها استفاده می شود.
این دو مفهوم برای درک نحوه دسترسی ایمن Developer Connect به کد شما مفید هستند:
اتصال
- نشان دهنده پل بین Google و پلتفرم مدیریت کد منبع شخص ثالث است.
پیوند
- نشان دهنده ارتباط با یک مخزن کد منبع فردی است که شما در یک پلت فرم مدیریت کد منبع متصل انتخاب می کنید.
با در نظر گرفتن این مفاهیم، با رفتن به صفحه Developer Connect برای فعال کردن API برای پروژه خود شروع کنید.
در مرحله بعد، مراحل مناسب را برای ایجاد یک اتصال و پیوند برای GitHub یا GitLab دنبال کنید. هر دو منبع در طی فرآیند جادوگر ایجاد خواهند شد.
این مراحل را تکرار کنید تا برای هر مخزنی که میخواهید ویژگی سفارشیسازی کد Gemini در پاسخهای آن در نظر گرفته شود، پیوند ایجاد کنید. اگر چندین مخزن از یک پلتفرم آمده باشند، می توانید از اتصال موجود مجددا استفاده کنید.
6. ایجاد و اتصال به فهرست
برای تجزیه و تحلیل سریع مخازن خود، سفارشیسازی کد به یک Index متکی است. 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، می توانید این اسناد و مطالب دیگر را مرور کنید: