Tuỳ chỉnh mã bằng Gemini Code Assist Enterprise

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ả của tính năng Trợ giúp mã hữu ích hơn đáng kể, đặc biệt là đối với các nhóm có quy ước cụ thể cho công việc tương tự thường xuyên lặp lại. Bạn cứ yên tâm vì việc cho phép Gemini lập chỉ mục cơ sở mã riêng tư của bạn cho tính năng này không cho phép Gemini đào tạo rộng rãi trên mã riêng tư của bạn.

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ề tính năng Hỗ trợ viết mã của Gemini và truy cập vào một dự án đã bật tính năng này
  • Quen thuộc với ngôn ngữ lập trình được hỗ trợ để tuỳ chỉnh mã
  • Khả năng tạo tài nguyên trong us-central1 hoặc europe-west1, vì việc tuỳ chỉnh mã yêu cầu 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 sử 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à tính năng tuỳ chỉnh mã có thể giúp nhóm của bạn tiết kiệm thời gian

Bạn cần có

  • Đã bật tính năng Gemini Code Assist cho một dự án trên Google Cloud
  • Kho lưu trữ riêng để lập chỉ mục cho các yêu cầu tuỳ chỉnh
  • Đã đến lúc 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ờ
  • IDE đã cài đặt Gemini Code Assist

2. Ngữ cảnh

Để thử tuỳ chỉnh mã, bạn cần có hai điều sau:

  1. Quyền truy cập vào một dự án trên Google Cloud đã bật Gemini
  2. và Kho lưu trữ riêng tư để thông báo cho câu trả lời của Gemini.

Bật Gemini

Những kho lưu trữ phù hợp nhất để Gemini lập chỉ mục sẽ chứa mã thường được sử dụng lại trong toàn bộ tổ chức. 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 chứa 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 thực thể đó được chuyển đến lớp hiển thị.

3. (Không bắt buộc) Thiết lập kho lưu trữ

Nếu bạn muốn sử dụng kho lưu trữ mẫu thay vì kho lưu trữ riêng của mình, bạn có thể làm theo các bước sau trên trình chỉnh sửa dòng lệnh 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 cách 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 đủ để chứng minh rằng các phương thức 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à đảm bảo rằng kho lưu trữ đó ở chế độ riêng tư. Hãy làm theo các bước bên dưới để đẩy trình khởi động vào 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, bạn cần hiểu cách loại trừ những tệp không liên quan hoặc nhạy cảm mà nhóm của bạn không muốn Google lập chỉ mục. Tệp .aiexclude được dùng để thực hiện việc này, tương tự như .gitignore nhưng có một số điểm khác biệt chính:

  • Tệp .aiexclude trống sẽ chặn mọi tệp trong thư mục và mọi thư mục con.
    • Tệp này giống với tệp chứa **/*.
  • Tệp .aiexclude không hỗ trợ phủ định (đặt tiền tố cho mẫu bằng !).

Vì vậy, hãy cố gắng xem xét các loại tệp hoặc thư mục mà nhóm của bạn muốn loại trừ khỏi xem xét và liệt kê chúng trên từng dòng riêng:

#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ốiLiên kết đến 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 một cách an toàn với các kho lưu trữ riêng tư của bạn, nhằm tạo ra chỉ mục sẽ được dùng để cải thiện câu trả lời.

Hai khái niệm này hữu ích trong việc hiểu cách thức 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

  • Biểu thị 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 đã kết nối.

Với những khái niệm đó, hãy bắt đầu bằng cách điều hướng đến trang Kết nối nhà phát triển để bật API cho dự án của bạn.

Bật Developer Connect

Tiếp theo, hãy làm theo các bước thích hợp để tạo Kết nốiĐườ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 của trình hướng dẫn.

Tạo kết nối và đường liên kết

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ác câu trả lời. Bạn có thể sử dụng lạ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 kho lưu trữ của bạn một cách nhanh chóng, việc tuỳ chỉnh mã dựa vào Chỉ mục. Ghi lại INDEX_NAME mà bạn sử dụng vì bạn sẽ cần INDEX_NAME đó trong bước tiếp theo.

Để tạo 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 bất kỳ lỗi Invalid choice: ... nào, hãy đảm bảo rằng Google Cloud CLI của bạn đã được cập 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 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 của bạn trên Google Cloud.
  • INDEX_NAME: tên của chỉ mục mà bạn đã xác định ở 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ữ 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ữ 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ờ. 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ữ. 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:

Tìm kiếm trạng thái lập chỉ mục

Cuối cùng, hãy cấp quyền truy cập chính mong muốn cho 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, khi Gemini có quyền truy cập vào mã trong kho lưu trữ riêng của bạn, chúng ta có thể thấy các đoạn mã liên quan xuất hiện trong các yêu cầu hoàn thành mã. Trong kho lưu trữ mẫu, chúng ta có thể điều hướng đến thư mục DTO và 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:

Mẫu đã tạo

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 tính năng Hỗ trợ mã Gemini. Giờ đây, bạn có thể điều chỉnh câu trả lời cho phù hợp với cơ sở mã riêng tư, cụ thể của nhóm. Do đó, mỗi câu lệnh và nội dung 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ể tham khảo các tài liệu và tài liệu khác này để đọc thêm và được hỗ trợ về những việc như thiết lập vai trò IAM: