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
- Thiết lập Gemini Code Assist bằng gói thuê bao Enterprise.
- Tạo hoặc định cấu hình tài khoản người dùng cuối. Mỗi nhà phát triển trong tổ chức của bạn đang sử dụng Gemini Code Assist phải có danh tính người dùng trong Google Cloud và có quyền truy cập vào dự án Google Cloud của bạn. Để biết thêm thông tin, hãy xem bài viết Cấp vai trò trong bảng điều khiển Google Cloud. Đảm bảo mỗi người dùng có các vai trò sau:
Định cấu hình Developer Connect (Kết nối nhà phát triển), sau đó kết nối với kho lưu trữ GitHub.com, GitLab.com hoặc Bitbucket.org của bạn:
GitHub
GitLab
Bitbucket
Ngoài ra, xin lưu ý rằng tính năng tuỳ chỉnh mã chỉ hỗ trợ các kết nối Developer Connect ở những vị trí (khu vực) sau:
us-central1
europe-west1
asia-southeast1
Trong môi trường shell, hãy chạy lệnh
gcloud components update
để đảm bảo bạn đã cập nhật tất cả các thành phần đã cài đặt của gcloud lên phiên bản mới nhất. Đối với bước này, bạn có thể cài đặt và khởi động gcloud hoặc sử dụng Cloud Shell Editor.gcloud components update
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
Để 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ặcgroup:admins@example.com
cho một nhóm.
Để biết thêm thông tin, hãy xem
gcloud projects set-iam-policy
.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:
GROUP_NAME
: tên nhóm kho lưu trữ mà bạn đã tạo ở bước trước để kiểm soát quyền truy cập vào chỉ mục bằng nhóm kho lưu trữ.POLICY_FILE
: chính sách IAM.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.Để biết thêm thông tin, hãy xem
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
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:
GROUP_NAME
: tên nhóm kho lưu trữ mà bạn đã tạo ở bước trước để kiểm soát quyền truy cập vào chỉ mục bằng nhóm kho lưu trữ.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.Để biết thêm thông tin, hãy xem
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
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ữ.
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
Trong Google API Console, hãy chuyển đến Trình khám phá nhật ký.
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"
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.
- Thành công:
- 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.
- Thành công:
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.- Bắt đầu lập chỉ mục kho lưu trữ – ví dụ:
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ã
Để 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.
Để 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
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.
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
- Bắt đầu sử dụng Gemini Code Assist:
- VS Code, IntelliJ và các IDE khác được JetBrains hỗ trợ: Lập trình bằng Gemini Code Assist
- Cloud Shell: Viết mã bằng Gemini Code Assist
- Máy trạm trên đám mây: Lập trình bằng Gemini Code Assist
- Tìm hiểu cách sử dụng tính năng tuỳ chỉnh mã và các phương pháp hay nhất.
- Tìm hiểu cách mã hoá dữ liệu bằng khoá mã hoá do khách hàng quản lý (CMEK).
- Tìm hiểu thêm về Developer Connect.
- Tìm hiểu cách thức và thời điểm Gemini cho Google Cloud sử dụng dữ liệu của bạn.