1. Trước khi bắt đầu
Lớp học lập trình này hướng dẫn cách chuẩn bị Gemini Code Assist để đưa ra các đề xuất tuỳ chỉnh mã phù hợp với kho lưu trữ riêng tư của bạn. Điều này có thể giúp kết quả từ Trợ lý mã hữu ích hơn đáng kể, đặc biệt là đối với những nhóm có quy ước cụ thể cho công việc tương tự thường được lặp lại. Hãy yên tâm rằng việc cho phép Gemini lập chỉ mục các cơ sở mã riêng tư của bạn cho tính năng này không cho phép Gemini huấn luyện trên mã riêng tư của bạn một cách rộng rãi.
Chúng ta cũng sẽ thảo luận về cách loại trừ các tệp nhạy cảm hoặc không liên quan khỏi việc xem xét tuỳ chỉnh mã bằng tệp .aiexclude.
Điều kiện tiên quyết
- Hiểu biết cơ bản về Gemini Code Assist và có quyền truy cập vào một dự án đã bật tính năng này
- Quen thuộc với một ngôn ngữ lập trình được hỗ trợ để tuỳ chỉnh mã
- Có thể tạo tài nguyên trong
us-central1hoặceurope-west1, vì hoạt động tuỳ chỉnh mã yêu cầu các kết nối Developer Connect ở những vị trí đó. - Google Cloud CLI đã được xác thực và cập nhật
Kiến thức bạn sẽ học được
- Cách tận dụng tính năng tuỳ chỉnh mã trong Gemini Code Assist Enterprise
- Một trong nhiều trường hợp sử dụng mà việc tuỳ chỉnh mã có thể giúp các nhóm của bạn tiết kiệm thời gian
Bạn cần có
- Một dự án trên đám mây của Google Cloud đã bật Gemini Code Assist
- Kho lưu trữ riêng để lập chỉ mục cho các yêu cầu tuỳ chỉnh
- Thời gian lập chỉ mục mã cho các yêu cầu tuỳ chỉnh. Quá trình này có thể mất đến 24 giờ
- Một IDE đã cài đặt Gemini Code Assist
2. Ngữ cảnh
Để dùng thử tính năng tuỳ chỉnh mã, bạn cần có 2 thứ:
- Quyền truy cập vào một dự án trên đám mây của Google Cloud có Gemini được bật
- và Kho lưu trữ riêng tư để cung cấp thông tin cho câu trả lời của Gemini.

Kho lưu trữ ứng cử viên tốt nhất để Gemini lập chỉ mục sẽ chứa mã thường được dùng lại trong toàn bộ tổ chức của bạn. Kho lưu trữ mẫu được cung cấp cho lớp học lập trình này chứa một dịch vụ web Spring Boot tiêu chuẩn, với một thư mục gồm các Đối tượng chuyển dữ liệu đáp ứng tiêu chí này, vì một lớp tương tự sẽ được tạo để mô tả từng thực thể trong cơ sở dữ liệu khi được chuyển đến lớp trình bày.
3. (Không bắt buộc) Thiết lập kho lưu trữ
Nếu bạn muốn sử dụng một kho lưu trữ mẫu thay vì một kho lưu trữ riêng tư của riêng mình, bạn có thể làm theo các bước sau trên trình chỉnh sửa thiết bị đầu cuối mà bạn chọn hoặc Cloud Shell. Bắt đầu bằng cách tạo một kho lưu trữ riêng tư để giúp chúng ta xem hoạt động tuỳ chỉnh mã:
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
Thêm nội dung sau vào tệp 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;
}
Điều này sẽ đủ để minh hoạ rằng các đối tượng truy cập mà những người đóng góp khác cho cơ sở mã này dự kiến sẽ sử dụng sẽ được tạo chính xác khi bật tính năng tuỳ chỉnh mã.
Tạo một kho lưu trữ mới và nhớ đặt kho lưu trữ đó ở chế độ riêng tư. Hãy làm theo các bước bên dưới để chuyển mã khởi động sang kho lưu trữ mới:
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
4. Loại trừ tệp
Trước khi cấp cho Gemini quyền truy cập vào các kho lưu trữ riêng tư của bạn, điều quan trọng là bạn phải hiểu cách loại trừ các tệp không liên quan hoặc nhạy cảm mà nhóm của bạn không muốn được lập chỉ mục. Tệp .aiexclude được dùng để đạt được mục tiêu này, tương tự như .gitignore nhưng có một số điểm khác biệt chính:
- Tệp
.aiexcludetrống sẽ chặn tất cả các tệp trong thư mục và tất cả các thư mục con của thư mục đó.- Điều này cũng giống như một tệp chứa
**/*.
- Điều này cũng giống như một tệp chứa
- Tệp
.aiexcludekhông hỗ trợ phủ định (thêm tiền tố!vào mẫu).
Hãy cân nhắc những loại tệp hoặc thư mục mà nhóm của bạn muốn loại trừ và liệt kê từng loại trên các dòng riêng biệt:
#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
5. Định cấu hình Developer Connect
Developer Connect là dịch vụ hỗ trợ Kết nối và Liên kết đến các kho lưu trữ mã riêng tư của bạn trong GitHub hoặc GitLab. Đây là cơ chế cho phép Gemini Code Assist kết nối an toàn với các kho lưu trữ riêng tư của bạn để tạo chỉ mục sẽ được dùng để cải thiện câu trả lời.
Hai khái niệm này rất hữu ích trong việc tìm hiểu cách Developer Connect cung cấp quyền truy cập vào mã của bạn một cách an toàn:
Kết nối
- Đại diện cho cầu nối giữa Google và nền tảng quản lý mã nguồn của bên thứ ba.
Đường liên kết
- Đại diện cho mối liên kết với một kho lưu trữ mã nguồn riêng lẻ mà bạn chọn trong một nền tảng quản lý mã nguồn được kết nối.
Khi đã nắm được những khái niệm đó, hãy bắt đầu bằng cách chuyển đến trang Developer Connect để bật API cho dự án của bạn.

Tiếp theo, hãy làm theo các bước thích hợp để tạo Connection (Kết nối) và Link (Đường liên kết) cho GitHub hoặc GitLab. Cả hai tài nguyên này sẽ được tạo trong quá trình chạy trình hướng dẫn.

Lặp lại các bước này để tạo Đường liên kết cho từng kho lưu trữ mà bạn muốn tính năng tuỳ chỉnh mã của Gemini xem xét trong câu trả lời. Bạn có thể sử dụng lại mối kết nối hiện có nếu nhiều kho lưu trữ đến từ cùng một nền tảng.
6. Tạo và kết nối với chỉ mục
Để phân tích cú pháp và phân tích nhanh các kho lưu trữ, hoạt động tuỳ chỉnh mã dựa vào một Chỉ mục. Ghi lại INDEX_NAME mà bạn sử dụng, vì bạn sẽ cần tên này trong bước tiếp theo.
Để tạo một chỉ mục, hãy chạy lệnh sau:
gcloud gemini code-repository-indexes create <INDEX_NAME> \
--project=<YOUR_PROJECT_ID> \
--location=<REGION>
Nếu bạn gặp phải lỗi Invalid choice: ..., hãy đảm bảo rằng Google Cloud CLI của bạn đang ở phiên bản mới nhất bằng cách chạy lệnh sau:
gcloud components update
Tiếp theo, hãy cho phép truy cập vào chỉ mục của bạn bằng cách tạo một nhóm kho lưu trữ:
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"}]'
Thay thế các giá trị sau:
- REPOSITORY_GROUP: tên của nhóm kho lưu trữ mà bạn sắp tạo
- PROJECT_ID: mã dự án trên đám mây của bạn.
- INDEX_NAME: tên của chỉ mục mà bạn đã xác định trong một bước trước đó để tạo chỉ mục.
- REGION: một khu vực được hỗ trợ trong danh sách trong tài liệu mà bạn đã định cấu hình trong Developer Connect trong dự án Google Cloud.
- INDEX_CONNECTION: kết nối của chỉ mục mà bạn đã tạo ở bước trước để tạo chỉ mục.
- REPOSITORY: kho lưu trữ mà bạn muốn lập chỉ mục. Bạn phải chỉ định ít nhất một kho lưu trữ và có thể chỉ định nhiều kho lưu trữ nếu cầ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 hoặc dev.
Tuỳ thuộc vào số lượng kho lưu trữ bạn muốn lập chỉ mục và kích thước của chúng, quá trình lập chỉ mục nội dung có thể mất đến 24 giờ. 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ữ. Bạn có thể tham khảo các bước này để kiểm tra trạng thái tạo chỉ mục:

Cuối cùng, cấp cho đối tượng chính mà bạn muốn quyền truy cập vào nhóm:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/cloudaicompanion.repositoryGroupsUser'
7. Tạo mã tuỳ chỉnh
Giờ đây, Gemini đã có quyền truy cập vào mã trong kho lưu trữ riêng tư của bạn, nên chúng ta có thể mong đợi thấy các đoạn mã có liên quan xuất hiện trong các yêu cầu hoàn tất mã của mình. Trong kho lưu trữ mẫu, chúng ta có thể chuyển đến thư mục DTO. Khi tạo một lớp mới để biểu thị một đối tượng mới, bạn có thể thấy các chú thích dự kiến xuất hiện khi chúng ta nhập:

8. Kết luận
Chúc mừng bạn đã hoàn thành Lớp học lập trình này! Bạn đã tìm hiểu cách sử dụng tính năng Tuỳ chỉnh mã của Gemini Code Assist. Giờ đây, câu trả lời của bạn có thể được điều chỉnh cho phù hợp với cơ sở mã riêng, cụ thể của nhóm. Nhờ đó, mỗi câu lệnh và tính năng hoàn thành mã sẽ có giá trị hơn đối với các nhà phát triển trong nhóm của bạn.
Bạn có thể xem các tài liệu và tài liệu khác này để đọc thêm, cũng như được hỗ trợ về những việc như thiết lập vai trò IAM: