Định cấu hình tính năng tuỳ chỉnh mã của Gemini Code Assist

Tài liệu này mô tả cách thiết lập chế độ tuỳ chỉnh mã của Gemini Code Assist bằng cách kết nối Gemini Code Assist với các kho lưu trữ mã riêng tư của bạn. Tính năng này cho phép bạn nhận các đề xuất về mã, được lấy từ các thư viện nội bộ, API riêng tư và kiểu lập trình của tổ chức.

Trước khi bắt đầu

Chọn những kho lưu trữ riêng tư được kết nối

Tốt nhất là bạn nên kết nối các kho lưu trữ:

  • Có mã có kiểu hoặc cấu trúc tương tự như mã mà bạn muốn nhà phát triển viết.
  • Có các thư viện hoặc API riêng tư mà bạn muốn gọi từ cơ sở mã hiện tại.

(Không bắt buộc) Chọn những tệp không được lập chỉ mục

Theo mặc định, tính năng tuỳ chỉnh mã sẽ lập chỉ mục tất cả các tệp mã được hỗ trợ trong các kho lưu trữ mà bạn chỉ định.

Để ngăn việc lộ mã mà bạn không muốn lập chỉ mục, bạn có thể sử dụng các mẫu nhánh để kiểm soát quyền truy cập vào chỉ mục và sử dụng một nhánh ổn định, chẳng hạn như main.

Ngoài ra, bạn cũng có thể loại trừ các tệp khỏi chỉ mục bằng cách tạo tệp .aiexclude.

Tạo chỉ mục

Tính năng tuỳ chỉnh mã dựa vào một chỉ mục để phân tích và phân tích cú pháp kho lưu trữ của bạn nhằm đưa ra các đề xuất và tra cứu nhanh hơn về việc tạo mã.

gcloud

Để tạo chỉ mục, trong môi trường shell, hãy sử dụng lệnh 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"
}

Thay thế nội dung sau:

  • INDEX_NAME: tên chỉ mục của bạn. Quan trọng: Ghi lại tên chỉ mục của bạn. Bạn sẽ cần mã này cho một số bước trong tài liệu này.
  • PROJECT_ID: mã dự án của bạn trên Google Cloud.
  • REGION: một khu vực được hỗ trợ, như đã nêu trong phần Trước khi bắt đầu của trang này, mà bạn đã định cấu hình trong Developer Connect trong dự án Google Cloud của mình.

Quá trình tạo chỉ mục thường mất 30 phút để hoàn tất, nhưng cũng có thể mất đến 1 giờ.

Google giới hạn số lượng chỉ mục kho lưu trữ mã là một cho mỗi dự án và tổ chức.

Kiểm soát quyền truy cập vào chỉ mục bằng nhóm kho lưu trữ

Nhóm kho lưu trữ là một vùng chứa cho cấu hình lập chỉ mục, bao gồm các kho lưu trữ và mẫu nhánh của chúng. Nhóm kho lưu trữ được thiết kế để kiểm soát IAM chi tiết, cho phép nhà phát triển truy cập vào dữ liệu được lập chỉ mục từ các nhóm đó, nơi họ có quyền cloudaicompanion.repositoryGroups.use.

Nhóm kho lưu trữ chứa các kho lưu trữ Developer Connect hoặc các đường liên kết từ cùng một dự án và vị trí.

Quản trị viên thực hiện các thao tác sau:

  • Tạo tài nguyên Chỉ mục kho lưu trữ mã.
  • Trong cùng một dự án và vị trí, hãy định cấu hình một kết nối Developer Connect mới.
  • Liên kết các kho lưu trữ Git trong mối kết nối.
  • Lấy tên tài nguyên của đường liên kết, chọn mẫu nhánh để lập chỉ mục cho từng đường liên kết và đặt mẫu đó vào một hoặc nhiều nhóm kho lưu trữ.

gcloud

Để tạo một nhóm kho lưu trữ, trong môi trường shell, hãy sử dụng lệnh 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"
  }
}

Thay thế nội dung sau:

  • REPOSITORY_GROUP: tên của nhóm kho lưu trữ, chẳng hạn như default.
  • PROJECT_ID: mã dự án của bạn trên Google Cloud.
  • REGION: một khu vực được hỗ trợ, như đã nêu trong phần Trước khi bắt đầu của trang này, mà bạn đã định cấu hình trong Developer Connect trong dự án Google Cloud của mình.
  • INDEX_NAME: tên của chỉ mục mà bạn đã tạo trong bước trước để tạo chỉ mục.
  • REPOSITORY_RESOURCE_NAME: tên của kho lưu trữ trong kết nối Developer Connect. Để tìm tên của kho lưu trữ, hãy chuyển đến trang Developer Connect trong Google Cloud Console, rồi trong thẻ Kho lưu trữ, hãy tìm mã nhận dạng kết nối trong cột Kết nối của bảng. Để sao chép tên tài nguyên, hãy nhấp vào trình đơn more_vert để xem các lựa chọn khác, rồi chọn Sao chép đường dẫn tài nguyên.
  • BRANCH_NAMES: tên của các nhánh mà bạn muốn lập chỉ mục, chẳng hạn như main|dev.

Bạn cũng có thể tạo một nhóm kho lưu trữ với các kho lưu trữ được xác định trong một tệp JSON (hoặc YAML), được định dạng như sau:

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

Để tạo một nhóm kho lưu trữ dựa trên tệp JSON hoặc YAML, trong môi trường shell, hãy dùng lệnh 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

Nếu muốn, bạn có thể mã hoá và kiểm soát dữ liệu bằng khoá mã hoá do khách hàng quản lý (CMEK) thông qua Cloud Key Management Service. Để tìm hiểu thêm về cách sử dụng CMEK, hãy xem bài viết Mã hoá dữ liệu bằng khoá mã hoá do khách hàng quản lý.

Cấp vai trò IAM cho nhóm kho lưu trữ trong một dự án

Bạn chỉ nhận được đề xuất từ các kho lưu trữ trong chỉ mục. Mỗi kho lưu trữ thuộc về một hoặc nhiều nhóm kho lưu trữ. Để truy cập vào các đề xuất, bạn phải cấp vai trò IAM dành cho người dùng nhóm kho lưu trữ Cloud AI Companion (roles/cloudaicompanion.repositoryGroupsUser) (chứa quyền IAM cloudaicompanion.repositoryGroups.user bắt buộc) cho nhóm kho lưu trữ theo một trong những cách sau:

  • Cấp cho các chủ thể quyền truy cập vào toàn bộ chỉ mục.
  • Cấp cho các tài khoản chính quyền truy cập vào một tập hợp con của chỉ mục.

Cấp cho các chủ thể quyền truy cập vào toàn bộ chỉ mục

  1. Để liên kết một chính sách IAM cho một dự án, trong môi trường shell, hãy dùng lệnh projects add-iam-policy-binding:

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

    Thay thế nội dung sau:

    • PROJECT_ID: mã dự án nơi nhóm kho lưu trữ được đặt.
    • PRINCIPAL: địa chỉ email của người dùng chính cần có quyền truy cập – ví dụ: user:test-user@gmail.com cho một cá nhân hoặc group:admins@example.com cho một nhóm.

    Để biết thêm thông tin, hãy xem gcloud projects set-iam-policy.

  2. Khi được nhắc chỉ định một điều kiện, hãy nhập None.

Cấp cho các tài khoản chính quyền truy cập vào một tập hợp con của chỉ mục

Bạn có thể tạo nhiều nhóm kho lưu trữ và chỉ định vai trò IAM cho các nguyên tắc IAM khác nhau.

gcloud

Để thiết lập một chính sách IAM, bạn phải chuẩn bị tệp JSON hoặc YAML chính sách IAM. Tệp này sẽ chứa danh sách các nhóm IAM và vai trò được chỉ định. Ví dụ:

bindings:
- members:
  - group:my-group@example.com
  - user:test-user@example.com
  role: roles/cloudaicompanion.repositoryGroupsUser

Để biết thêm thông tin chi tiết và cú pháp, hãy xem phần Tìm hiểu về chính sách cho phép.

Để thiết lập chính sách IAM, trong môi trường shell, hãy sử dụng lệnh 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

Thay thế nội dung sau:

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

Bạn cũng có thể tạo một liên kết:

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

Thay thế nội dung sau:

Kiểm tra trạng thái lập chỉ mục

Tuỳ thuộc vào số lượng kho lưu trữ mà bạn muốn lập chỉ mục và kích thước của chúng, việc lập chỉ mục nội dung có thể mất đến 24 giờ. Đối với các kho lưu trữ lớn, quá trình lập chỉ mục có thể mất nhiều thời gian hơn. Quá trình lập chỉ mục diễn ra 24 giờ một lần, ghi nhận mọi thay đổi được thực hiện trong kho lưu trữ.

  1. Tìm nhật ký indexing. Để biết thêm thông tin, hãy xem phần Ghi nhật ký ngôn ngữ truy vấn.

    Giao diện dòng lệnh

    1. Trong Google API Console, hãy chuyển đến Trình khám phá nhật ký.

      Chuyển đến Trình khám phá nhật ký

    2. Sử dụng bộ lọc tên nhật ký để xem nhật ký indexing.

    gcloud

    Để tìm kiếm nhật ký lập chỉ mục, trong môi trường shell, hãy dùng lệnh logging read:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
    

    Thay PROJECT_ID bằng mã dự án nơi nhóm kho lưu trữ được đặt.

    Ví dụ: để xem lỗi trong nhật ký indexing, hãy chạy lệnh sau:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
    
  2. Xem xét các trạng thái lập chỉ mục liên quan, chẳng hạn như:

    • Bắt đầu lập chỉ mục kho lưu trữ – ví dụ: Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
    • Kết thúc quá trình lập chỉ mục kho lưu trữ riêng lẻ – ví dụ:
      • Thành công: Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
      • Không thành công: Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
    • Kết thúc lập chỉ mục kho lưu trữ – ví dụ:
      • Thành công: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
      • Không thành công: 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.

    Trong các trạng thái chỉ mục, REPOSITORY_NAME là kho lưu trữ mà bạn muốn xem xét.

  3. Xem xét các lỗi lập chỉ mục liên quan, chẳng hạn như:

    • Không tìm nạp được kho lưu trữ.
    • Không liệt kê được các tệp trong kho lưu trữ.
    • Không truy xuất được thông tin kho lưu trữ từ chỉ mục.
    • Không truy xuất được tệp từ chỉ mục.
    • Lỗi nội bộ.

Sử dụng tính năng tuỳ chỉnh mã

Sau khi thiết lập chế độ tuỳ chỉnh mã, bạn sẽ bắt đầu thấy các đề xuất hoàn thành mã và tạo mã. Các đề xuất này có thể dựa trên mã riêng tư mà bạn đã lập chỉ mục, ngoài các kết quả từ khả năng nhận biết toàn bộ cơ sở mã.

Để tìm hiểu thêm về cách sử dụng tính năng tuỳ chỉnh mã và các phương pháp hay nhất, hãy xem bài viết Sử dụng tính năng tuỳ chỉnh mã.

Tắt tính năng tuỳ chỉnh mã

  1. Để liệt kê tất cả các nhóm kho lưu trữ cho chỉ mục hiện tại, trong môi trường shell, hãy sử dụng lệnh 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
    

    Thay thế nội dung sau:

    • REGION: một khu vực được hỗ trợ, như đã nêu trong phần Trước khi bắt đầu của trang này, mà bạn đã định cấu hình trong Developer Connect trong dự án Google Cloud của mình.
    • PROJECT_ID: mã dự án của bạn trên Google Cloud.
    • INDEX_NAME: tên của chỉ mục mà bạn đã tạo trong bước trước để tạo chỉ mục.
  2. Để xoá một nhóm kho lưu trữ khỏi chỉ mục hiện tại, hãy sử dụng lệnh 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. Lặp lại bước 3 cho từng nhóm kho lưu trữ cho đến khi bạn xoá tất cả các nhóm kho lưu trữ khỏi chỉ mục.

  4. Không bắt buộc: Để xoá chỉ mục, trong môi trường shell, hãy sử dụng lệnh gemini code-repository-indexes delete:

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

Bước tiếp theo