سفارشی سازی کد Gemini Code Assist را پیکربندی و استفاده کنید

این سند نحوه تنظیم سفارشی سازی کد Gemini Code Assist را با اتصال Gemini Code Assist به مخازن کد خصوصی خود توضیح می دهد. این ویژگی به شما امکان می دهد توصیه های کد را دریافت کنید که از کتابخانه های داخلی، API های خصوصی و سبک کدنویسی سازمان شما استخراج می شود.

قبل از شروع

انتخاب کنید که کدام مخازن خصوصی متصل هستند

به عنوان بهترین روش، اطمینان حاصل کنید که مخازنی را که:

  • کدی داشته باشید که سبک یا ساختاری مشابه آنچه که می خواهید توسعه دهندگان شما بنویسند داشته باشد.
  • کتابخانه های خصوصی یا API هایی داشته باشید که می خواهید از پایگاه کد فعلی خود با آنها تماس بگیرید.

(اختیاری) انتخاب کنید کدام فایل ایندکس نشده باشد

به‌طور پیش‌فرض، سفارشی‌سازی کد، همه فایل‌های کد پشتیبانی‌شده را در مخازن مشخص‌شده شما نمایه می‌کند.

در بسیاری از سناریوها، ممکن است فایل‌ها یا زیردرخت‌های خاصی داشته باشید که نمی‌خواهید ایندکس شوند. به عنوان مثال:

  • اطلاعات بسیار حساس با دسترسی محدود در داخل سازمان شما
  • کد قدیمی یا منسوخ شده
  • کد تولید خودکار یا موقت

برای جلوگیری از قرار گرفتن در معرض کدهایی که نمی خواهید ایندکس شوند، می توانید از الگوهای شاخه برای کنترل دسترسی به فهرست خود استفاده کنید و از یک شاخه پایدار مانند main استفاده کنید.

همچنین، می‌توانید با ایجاد یک فایل .aiexclude فایل‌ها را از فهرست حذف کنید.

یک شاخص ایجاد کنید

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

برای ایجاد ایندکس، در محیط پوسته، از دستور gemini code-repository-indexes create استفاده کنید:

gcloud gemini code-repository-indexes create INDEX_NAME \
    --project=PROJECT_ID \
    --location=REGION
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 دقیقه طول می کشد، اما ممکن است تا یک ساعت طول بکشد.

گوگل تعداد ایندکس های مخزن کد را به یک برای هر پروژه و سازمان محدود می کند.

با استفاده از گروه های مخزن دسترسی به فهرست خود را کنترل کنید

گروه مخزن محفظه ای برای پیکربندی نمایه سازی است که شامل مخازن و الگوهای شاخه آنها می شود. گروه‌های مخزن برای کنترل گرانول IAM طراحی شده‌اند و به توسعه‌دهندگان اجازه دسترسی به داده‌های نمایه‌شده از آن گروه‌ها را می‌دهند، جایی که آنها مجوز cloudaicompanion.repositoryGroups.use را دارند.

گروه های مخزن شامل مخازن Developer Connect یا پیوندهایی از همان پروژه و مکان هستند.

مدیران اقدامات زیر را انجام می دهند:

  • منبع فهرست مخزن کد ایجاد کنید.
  • در همان پروژه و مکان، یک اتصال Developer Connect جدید را پیکربندی کنید.
  • مخازن Git را در اتصال پیوند دهید.
  • نام منابع پیوندها را دریافت کنید، الگوی شاخه را انتخاب کنید تا برای هر پیوند فهرست شود و آن را در یک یا چند گروه مخزن قرار دهید.

برای ایجاد یک گروه مخزن، در یک محیط پوسته، از دستور 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"}]'
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 در جدول به دنبال Connection ID بگردید. برای کپی کردن نام منبع، روی منوی more_vert برای گزینه‌های بیشتر کلیک کنید و مسیر منبع را کپی کنید.
  • BRANCH_NAMES : نام شاخه‌هایی که می‌خواهید ایندکس کنید، مانند main|dev .

همچنین می توانید یک گروه مخزن با مخازن تعریف شده در یک فایل JSON (یا YAML) با فرمت زیر ایجاد کنید:

JSON YAML
[
  {
      "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "main|dev"
  },
  {
      "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "dev"
  }
]
- resource: REPOSITORY_RESOURCE_NAME
  branchPattern: main|dev

- resource: REPOSITORY_RESOURCE_NAME
  branchPattern: dev

برای ایجاد یک گروه مخزن بر اساس یک فایل JSON یا YAML، در یک محیط پوسته، از دستور gemini code-repository-indexes repository-groups create استفاده کنید:

JSON YAML
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
    --project=PROJECT_ID \
    --location=REGION \
    --code-repository-index=INDEX_NAME \
    --repositories=FILEPATH.json
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
    --project=PROJECT_ID \
    --location=REGION \
    --code-repository-index=INDEX_NAME \
    --repositories=FILEPATH.yaml

در صورت ترجیح، می توانید داده های خود را با یک کلید رمزگذاری مدیریت شده توسط مشتری (CMEK) از طریق سرویس مدیریت کلید ابری رمزگذاری و کنترل کنید. برای کسب اطلاعات بیشتر در مورد استفاده از CMEK، به رمزگذاری داده ها با کلیدهای رمزگذاری مدیریت شده توسط مشتری مراجعه کنید.

نقش IAM را به گروه مخزن در یک پروژه اعطا کنید

شما فقط پیشنهادات را از مخازن موجود در فهرست دریافت می کنید. هر مخزن متعلق به یک یا چند گروه مخزن است. برای دسترسی به پیشنهادها، باید نقش IAM کاربر Cloud AI Companion Repository Groups ( roles/cloudaicompanion.repositoryGroupsUser ) - که شامل مجوز cloudaicompanion.repositoryGroups.user مورد نیاز IAM است - را به یکی از روش های زیر به گروه مخزن بدهید:

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

به مدیران اجازه دسترسی به کل فهرست را بدهید

  1. برای اتصال یک خط مشی 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 ببینید.

  2. وقتی از شما خواسته شد که یک شرط را مشخص کنید، None وارد کنید.

اعطای دسترسی به زیرمجموعه‌ای از فهرست به مدیران اصلی

می توانید چندین گروه مخزن ایجاد کنید و نقش های IAM را به اصول مختلف IAM اختصاص دهید.

برای تنظیم یک خط‌مشی 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

موارد زیر را جایگزین کنید:

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"]
}

موارد زیر را جایگزین کنید:

وضعیت نمایه سازی را بررسی کنید

بسته به تعداد مخازنی که می خواهید ایندکس کنید و اندازه آنها، نمایه سازی محتوا می تواند تا 24 ساعت طول بکشد. برای مخازن بزرگ، نمایه سازی ممکن است بیشتر طول بکشد. نمایه سازی هر 24 ساعت یکبار انجام می شود و هر تغییری که در مخزن ایجاد شده است را جمع آوری می کند.

  1. لاگ های indexing را جستجو کنید. برای اطلاعات بیشتر، به ثبت زبان درخواست مراجعه کنید.

    کنسول gcloud
    1. در کنسول Google Cloud، به Logs Explorer بروید.

      به Logs Explorer بروید

    2. از فیلتر نام های گزارش برای مشاهده گزارش های indexing استفاده کنید.

    برای جستجوی گزارش های نمایه سازی، در محیط پوسته، از دستور 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"
    
  2. وضعیت های نمایه سازی مرتبط را مرور کنید، مانند موارد زیر:

    • شروع نمایه سازی مخزن - برای مثال، 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 مخزنی است که می‌خواهید بررسی کنید.

  3. خطاهای نمایه سازی مرتبط را مرور کنید، مانند موارد زیر:

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

از سفارشی سازی کد استفاده کنید

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

سفارشی سازی کد را خاموش کنید

  1. برای فهرست کردن همه گروه‌های مخزن برای نمایه فعلی، در یک محیط پوسته، از دستور 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 : نام نمایه ای که در مرحله قبل برای ایجاد نمایه ایجاد کردید.
  2. برای حذف یک گروه مخزن از فهرست فعلی، از دستور 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. مرحله 3 را برای هر گروه مخزن تکرار کنید تا زمانی که همه گروه های مخزن را از فهرست حذف کنید.

  4. اختیاری: برای حذف فهرست، در محیط پوسته، از دستور gemini code-repository-indexes delete استفاده کنید:

    gcloud gemini code-repository-indexes delete INDEX_NAME \
        --location=REGION \
        --project=PROJECT_ID
    

بعدش چی