سفارشی سازی کد با Gemini Code Assist Enterprise

۱. قبل از شروع

این آزمایشگاه کد نشان می‌دهد که چگونه Gemini Code Assist را برای ارائه پیشنهادهای سفارشی‌سازی کد متناسب با مخازن خصوصی شما آماده کنید. این می‌تواند نتایج Code Assist را به طور قابل توجهی مفیدتر کند، به خصوص برای تیم‌هایی که قراردادهای خاصی برای کارهای مشابه دارند که اغلب تکرار می‌شوند. مطمئن باشید که اجازه دادن به Gemini برای فهرست‌بندی پایگاه‌های کد خصوصی شما برای این ویژگی، Gemini را قادر به آموزش گسترده روی کد خصوصی شما نمی‌کند.

همچنین در مورد چگونگی حذف فایل‌های حساس یا نامربوط از بررسی برای سفارشی‌سازی کد با استفاده از فایل .aiexclude بحث خواهیم کرد.

پیش‌نیازها

آنچه یاد می‌گیرید

  • نحوه استفاده از سفارشی‌سازی کد در Gemini Code Assist Enterprise
  • یکی از موارد استفاده فراوان که در آن سفارشی‌سازی کد می‌تواند در زمان تیم شما صرفه‌جویی کند

آنچه شما نیاز دارید

  • یک پروژه گوگل کلود با قابلیت Gemini Code Assist
  • یک مخزن خصوصی برای فهرست‌بندی درخواست‌های سفارشی‌سازی
  • زمان لازم برای ایندکس کردن کد برای درخواست‌های سفارشی‌سازی. این کار می‌تواند تا ۲۴ ساعت طول بکشد.
  • یک IDE که Gemini Code Assist روی آن نصب شده باشد

۲. زمینه

برای امتحان کردن سفارشی‌سازی کد، دو چیز ضروری است:

  1. دسترسی به یک پروژه Google Cloud با فعال بودن Gemini
  2. و یک مخزن خصوصی برای اطلاع‌رسانی به پاسخ‌های Gemini.

فعال کردن جمینی

بهترین مخازن کاندید برای فهرست‌بندی Gemini، شامل کدی هستند که اغلب در سراسر سازمان شما دوباره استفاده می‌شوند. مخزن نمونه ارائه شده برای این آزمایشگاه کد شامل یک سرویس وب استاندارد Spring Boot به همراه پوشه‌ای از اشیاء انتقال داده است که این معیارها را برآورده می‌کنند، زیرا یک کلاس مشابه برای توصیف هر موجودیت در یک پایگاه داده هنگام انتقال به لایه ارائه ایجاد می‌شود.

۳. (اختیاری) تنظیم مخزن

اگر ترجیح می‌دهید از یک مخزن نمونه به جای مخزن خصوصی خودتان استفاده کنید، مراحل زیر را می‌توانید در ویرایشگر ترمینال مورد نظر خود یا 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;
}

این کافی خواهد بود تا نشان دهد که دسترسی‌هایی که سایر مشارکت‌کنندگان در این پایگاه کد انتظار استفاده از آنها را دارند، با فعال بودن قابلیت سفارشی‌سازی کد، به طور دقیق تولید می‌شوند.

یک مخزن جدید ایجاد کنید ، و مراقب باشید که آن را خصوصی (private) بگذارید. مراحل زیر را برای قرار دادن فایل آغازگر در مخزن جدید خود دنبال کنید:

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

۴. حذف فایل‌ها

قبل از اعطای دسترسی به مخازن خصوصی خود به 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

۵. پیکربندی اتصال توسعه‌دهندگان

Developer Connect سرویسی است که اتصال‌ها و پیوندها را به مخازن کد خصوصی شما در GitHub یا GitLab تسهیل می‌کند. این مکانیسمی است که به Gemini Code Assist اجازه می‌دهد تا به طور ایمن به مخازن خصوصی شما متصل شود و شاخصی را ایجاد کند که برای بهبود پاسخ‌ها استفاده خواهد شد.

این دو مفهوم در درک چگونگی دسترسی ایمن Developer Connect به کد شما مفید هستند:

اتصال

  • نمایانگر پلی بین گوگل و پلتفرم مدیریت کد منبع شخص ثالث است.

پیوند

  • نشان‌دهنده‌ی ارتباط با یک مخزن کد منبع مجزا است که شما در یک پلتفرم مدیریت کد منبع متصل انتخاب می‌کنید.

با در نظر گرفتن این مفاهیم، ​​با رفتن به صفحه Developer Connect شروع کنید تا API را برای پروژه خود فعال کنید.

فعال کردن اتصال توسعه‌دهنده

در مرحله بعد، مراحل مناسب را برای ایجاد یک اتصال و پیوند برای GitHub یا GitLab دنبال کنید. هر دو منبع در طول فرآیند ویزارد ایجاد می‌شوند.

ایجاد اتصال و پیوند

این مراحل را برای ایجاد یک لینک برای هر مخزنی که می‌خواهید ویژگی سفارشی‌سازی کد Gemini در پاسخ‌هایش در نظر بگیرد، تکرار کنید. اگر چندین مخزن از یک پلتفرم باشند، می‌توانید از اتصال موجود دوباره استفاده کنید.

۶. ایجاد و اتصال به فهرست

برای تجزیه و تحلیل سریع مخازن، سفارشی‌سازی کد به یک اندیس (Index) متکی است. INDEX_NAME مورد استفاده را یادداشت کنید، زیرا در مراحل بعدی به آن نیاز خواهید داشت.

برای ایجاد یک فهرست، دستور زیر را اجرا کنید:

gcloud gemini code-repository-indexes create <INDEX_NAME> \
    --project=<YOUR_PROJECT_ID> \
    --location=<REGION>

اگر با هرگونه خطای Invalid choice: ... مواجه شدید، با اجرای دستور زیر مطمئن شوید که رابط خط فرمان گوگل کلود شما به‌روز است:

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: نام اندیسی که در مرحله قبل برای ایجاد اندیس تعریف کرده‌اید.
  • منطقه: یک منطقه پشتیبانی‌شده از لیست موجود در مستندات ، که شما در Developer Connect در پروژه Google Cloud خود پیکربندی کرده‌اید.
  • INDEX_CONNECTION: اتصال اندیسی که در مرحله قبل برای ایجاد اندیس ایجاد کرده‌اید.
  • مخزن: مخزنی که می‌خواهید فهرست‌بندی کنید. شما باید حداقل یک مخزن را مشخص کنید و در صورت نیاز می‌توانید چندین مخزن را مشخص کنید.
  • BRANCH_NAMES: نام شاخه‌هایی که می‌خواهید ایندکس کنید، مانند main یا dev.

بسته به تعداد مخازنی که می‌خواهید ایندکس کنید و اندازه آنها، ایندکس کردن محتوا می‌تواند تا ۲۴ ساعت طول بکشد. ایندکس کردن هر ۲۴ ساعت یک بار انجام می‌شود و هرگونه تغییری که در مخزن ایجاد شده است را ثبت می‌کند. می‌توانید برای بررسی وضعیت تولید ایندکس خود به این مراحل مراجعه کنید:

جستجوی وضعیت نمایه‌سازی

و در نهایت، دسترسی اصلی مورد نظر را به گروه اعطا کنید:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='PRINCIPAL' \
    --role='roles/cloudaicompanion.repositoryGroupsUser'

۷. کد سفارشی تولید کنید

حالا که Gemini به کد موجود در مخزن خصوصی شما دسترسی دارد، می‌توانیم انتظار داشته باشیم که قطعه کدهای مربوطه در درخواست‌های تکمیل کد ما ظاهر شوند. در مخزن نمونه ما، می‌توانیم به پوشه DTO خود برویم و همانطور که یک کلاس جدید برای نمایش یک شیء جدید ایجاد می‌کنیم، می‌توانید حاشیه‌نویسی‌های مورد انتظار را هنگام تایپ کردن مشاهده کنید:

نمونه تولید شده

۸. نتیجه‌گیری

تبریک بابت تکمیل این Codelab! شما یاد گرفتید که چگونه از ویژگی سفارشی‌سازی کد Gemini Code Assist استفاده کنید. اکنون که پاسخ‌های شما می‌توانند متناسب با پایگاه‌های کد اختصاصی و خصوصی تیم‌های شما تنظیم شوند، هر درخواست و تکمیل کد برای توسعه‌دهندگان تیم‌های شما ارزشمندتر خواهد بود.

برای مطالعه بیشتر و پشتیبانی از مواردی مانند تنظیم نقش‌های IAM، می‌توانید این اسناد و مطالب دیگر را مرور کنید: