Tài liệu này mô tả cách thiết lập tính năng tuỳ chỉnh mã của Gemini Code Assist bằng cách kết nối Gemini Code Assist với 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 mã dựa trên 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 tính năng 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 tính năng Trợ giúp mã Gemini 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 Google Cloud Console. Đảm bảo mỗi người dùng có các vai trò sau:
Định cấu hình Developer Connect, sau đó kết nối với kho lưu trữ GitHub.com, GitLab.com hoặc Bitbucket.org:
- Kết nối với GitHub.
- Kết nối với GitHub Enterprise Cloud.
- Kết nối với GitHub Enterprise.
- Kết nối với GitLab.
- Kết nối với GitLab Enterprise.
- Kết nối với Bitbucket Cloud.
- Kết nối với Trung tâm dữ liệu 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 rằng 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 chạy gcloud hoặc sử dụng Trình chỉnh sửa Cloud Shell.gcloud components update
Chọn 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ã 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ả tệp mã được hỗ trợ trong các kho lưu trữ bạn chỉ định.Trong nhiều trường hợp, bạn có thể có các tệp hoặc cây con cụ thể mà bạn không muốn được lập chỉ mục. Ví dụ:
- Thông tin cực kỳ nhạy cảm có quyền truy cập hạn chế trong tổ chức của bạn
- Mã cũ hoặc không dùng nữa
- Mã được tạo tự động hoặc mã tạm thời
Để ngăn việc hiển thị mã mà bạn không muốn lập chỉ mục, bạn có thể sử dụng 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 tạo mã nhanh hơn.
Để 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
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. Lưu ý quan trọng: Ghi lại tên chỉ mục. 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.
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 một giờ.
Google giới hạn số lượng chỉ mục kho lưu trữ mã ở mức 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ác kho lưu trữ và mẫu nhánh của chúng. Các 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 đó, trong đó 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 đườ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 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 mỗi đường liên kết và đặt tên đó vào một hoặc nhiều nhóm kho lưu trữ.
Để 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 "}]'
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.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ữ bên trong kết nối Developer Connect. Để tìm tên của kho lưu trữ, hãy truy cập vào trang Developer Connect trong Google Cloud Console, rồi trong thẻ Kho lưu trữ, hãy tìm mã kết nối trong cột Kết nối trong bảng. Để sao chép tên tài nguyên, hãy nhấp vào trình đơn more_vert để xem thêm tuỳ chọn 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ữ có các kho lưu trữ được xác định trong tệp JSON (hoặc YAML), được định dạng như sau:
[
{
"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
Để 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 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=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
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 Dịch vụ quản lý khoá trên đám mây. Để 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ữ trên 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 Người dùng nhóm kho lưu trữ đồng hành của AI trên đám mây (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 thực thể chính quyền truy cập vào toàn bộ chỉ mục.
- Cấp cho các thực thể 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 nguyên tắc quyền truy cập vào toàn bộ chỉ mục
Để liên kết chính sách IAM cho một dự án, trong môi trường shell, hãy sử 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 chứa nhóm kho lưu trữ.PRINCIPAL
: địa chỉ email của người dùng chính cần quyền truy cập, ví dụ:user:test-user@gmail.com
đối với một cá nhân hoặcgroup:admins@example.com
đối với 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 thực thể 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 nhiều thực thể chính IAM.
Để thiết lập chính sách IAM, bạn phải chuẩn bị tệp JSON hoặc YAML của 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 bài viết Tìm hiểu về chính sách cho phép.
Để đặt 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_NAME POLICY_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 các 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.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
.
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 các 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.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 các kho lưu trữ đó, quá trình 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. Việc lập chỉ mục diễn ra một lần mỗi 24 giờ, thu thập mọi thay đổi đã 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.Trong Google Cloud 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
.
Để tìm nhật ký lập chỉ mục, trong môi trường shell, hãy sử dụng lệnh
logging read
:gcloud logging read "logName="projects/
PROJECT_ID /logs/indexing""Thay thế
PROJECT_ID
bằng mã dự án chứa nhóm kho lưu trữ.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 lại 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 quá trình 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 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 lại các lỗi liên quan đến việc lập chỉ mục, 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 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 bạn thiết lập tính năng tuỳ chỉnh mã, người dùng sẽ bắt đầu thấy các đề xuất hoàn thành mã và tạo mã có thể dựa trên mã riêng tư mà bạn đã lập chỉ mục, ngoài kết quả từ việc nhận biết toàn bộ cơ sở 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 --uriThay 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.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 tính năng Trợ giúp mã Gemini:
- VS Code, IntelliJ và các IDE JetBrains được hỗ trợ khác: Lập trình bằng tính năng Hỗ trợ mã Gemini
- Cloud Shell: Mã bằng tính năng Hỗ trợ mã Gemini
- Máy trạm trên đám mây: Lập trình bằng tính năng Hỗ trợ mã Gemini
- 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 và thời điểm Gemini cho Google Cloud sử dụng dữ liệu của bạn.