1. Tổng quan
Trong phòng thí nghiệm này, bạn sẽ thiết lập quy trình Bitbucket và tích hợp quy trình này với Gemini để tự động hoá các bước đánh giá mã.

Kiến thức bạn sẽ học được
Trong phòng thí nghiệm này, bạn sẽ tìm hiểu cách thực hiện những việc sau:
- Cách thêm các bước tự động hoá quy trình đánh giá mã bằng AI tạo sinh trong Bitbucket
- Cách chạy devai cli cục bộ để tự động hoá quy trình đánh giá mã
Điều kiện tiên quyết
- Phòng thí nghiệm này giả định rằng bạn đã quen thuộc với môi trường Cloud Console và Cloud Shell.
2. Thiết lập và yêu cầu
Thiết lập dự án trên đám mây
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.



- Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
- Mã dự án là mã duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi tên này sau bước này và tên này sẽ tồn tại trong suốt thời gian của dự án. - Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.
Thiết lập môi trường
Mở cuộc trò chuyện với Gemini.

Hoặc nhập "Hỏi Gemini" vào thanh tìm kiếm.

Bật Gemini for Google Cloud API:

Nhấp vào "Start chatting" rồi làm theo một trong các câu hỏi mẫu hoặc nhập câu lệnh của riêng bạn để dùng thử.

Các câu lệnh bạn có thể thử:
- Giải thích về Cloud Run trong 5 điểm chính.
- Bạn là nhà quản lý sản phẩm của Google Cloud Run, hãy giải thích về Cloud Run cho một học viên bằng 5 điểm chính ngắn gọn.
- Bạn là Quản lý sản phẩm của Google Cloud Run, hãy giải thích về Cloud Run cho một Nhà phát triển Kubernetes được chứng nhận trong 5 điểm chính ngắn gọn.
- Bạn là Quản lý sản phẩm Cloud Run của Google Cloud, hãy giải thích cho một Nhà phát triển cấp cao về thời điểm bạn nên sử dụng Cloud Run so với GKE trong 5 điểm chính ngắn gọn.
Hãy xem Hướng dẫn về câu lệnh để tìm hiểu thêm về cách viết câu lệnh hiệu quả hơn.
Cách Gemini cho Google Cloud sử dụng dữ liệu của bạn
Cam kết của Google về quyền riêng tư
Google là một trong những công ty đầu tiên trong ngành công bố cam kết về quyền riêng tư đối với AI/ML. Cam kết này nêu rõ niềm tin của chúng tôi rằng khách hàng phải có mức độ bảo mật và quyền kiểm soát cao nhất đối với dữ liệu của họ được lưu trữ trên đám mây.
Dữ liệu bạn gửi và nhận
Những câu hỏi mà bạn hỏi Gemini, bao gồm cả mọi thông tin đầu vào hoặc mã mà bạn gửi cho Gemini để phân tích hoặc hoàn thành, được gọi là câu lệnh. Câu trả lời hoặc đoạn mã hoàn chỉnh mà bạn nhận được từ Gemini được gọi là câu trả lời. Gemini không dùng câu lệnh của bạn hoặc câu trả lời của Gemini làm dữ liệu để huấn luyện các mô hình của Gemini.
Mã hoá câu lệnh
Khi bạn gửi câu lệnh cho Gemini, dữ liệu của bạn sẽ được mã hoá trong quá trình truyền dưới dạng dữ liệu đầu vào cho mô hình cơ bản trong Gemini.
Dữ liệu chương trình do Gemini tạo
Gemini được huấn luyện dựa trên mã Google Cloud của bên thứ nhất cũng như mã chọn lọc của bên thứ ba. Bạn chịu trách nhiệm về tính bảo mật, khả năng kiểm thử và hiệu quả của mã, bao gồm cả mọi tính năng hoàn thành, tạo hoặc phân tích mã mà Gemini cung cấp cho bạn.
Tìm hiểu thêm về cách Google xử lý câu lệnh của bạn.
3. Các lựa chọn để kiểm thử câu lệnh
Nếu muốn thay đổi/mở rộng các câu lệnh devai cli hiện có, bạn có thể làm theo một số cách.
Vertex AI Studio là một phần của nền tảng Vertex AI của Google Cloud, được thiết kế riêng để đơn giản hoá và tăng tốc quá trình phát triển cũng như sử dụng các mô hình AI tạo sinh.
Google AI Studio là một công cụ dựa trên web để tạo nguyên mẫu và thử nghiệm thiết kế câu lệnh cũng như Gemini API.
- Ứng dụng web Gemini (gemini.google.com)
Ứng dụng web Google Gemini (gemini.google.com) là một công cụ dựa trên web được thiết kế để giúp bạn khám phá và khai thác sức mạnh của các mô hình AI Gemini của Google.
- Ứng dụng di động Google Gemini dành cho Android và ứng dụng Google trên iOS
4. Tạo tài khoản dịch vụ
Kích hoạt Cloud Shell bằng cách nhấp vào biểu tượng ở bên phải thanh tìm kiếm.

Trong thiết bị đầu cuối đã mở, hãy bật các dịch vụ bắt buộc để sử dụng Vertex AI API và cuộc trò chuyện với Gemini.
gcloud services enable \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
cloudresourcemanager.googleapis.com \
secretmanager.googleapis.com
Nếu được nhắc uỷ quyền, hãy nhấp vào "Uỷ quyền" để tiếp tục.

Chạy các lệnh sau để tạo tài khoản dịch vụ và khoá mới.
Bạn sẽ dùng tài khoản dịch vụ này để thực hiện các lệnh gọi API đến Vertex AI Gemini API từ quy trình CICD.
PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME='vertex-client'
DISPLAY_NAME='Vertex Client'
KEY_FILE_NAME='vertex-client-key'
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --display-name "$DISPLAY_NAME"
Cấp vai trò.
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin" --condition None
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor" --condition None
gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
5. Nhập kho lưu trữ GitHub vào kho lưu trữ Bitbucket
Đăng nhập vào https://bitbucket.org/ rồi chọn mục "Create" / Repository / Import repository".

URL của kho lưu trữ Git:
https://github.com/GoogleCloudPlatform/genai-for-developers.git
Chọn không gian làm việc và dự án của bạn, rồi đặt tên cho kho lưu trữ mới.

Nhấp vào "Import repository" để bắt đầu quá trình nhập.
6. Thêm các biến quy trình Bitbucket
Tiếp theo, bạn sẽ bật quy trình CICD của Bitbucket để chạy quy trình đánh giá mã khi các thay đổi được chuyển đến kho lưu trữ.
Mở kho lưu trữ Bitbucket trong trình duyệt rồi chuyển đến phần "Repository settings / PIPELINES / Settings". Bật quy trình cho kho lưu trữ này.

Chuyển đến phần "Repository settings / PIPELINES / Repository variables".
Thêm 3 biến:
PROJECT_ID– mã dự án qwiklabs của bạnLOCATION– us-central1GOOGLE_CLOUD_CREDENTIALS
Đối với giá trị biến GOOGLE_CLOUD_CREDENTIALS, hãy sử dụng khoá tài khoản dịch vụ đã tạo trong phần trên. Chạy lệnh này trong Google Cloud Shell rồi sao chép/dán giá trị.
cat ~/vertex-client-key.json
Chế độ xem biến kho lưu trữ:

7. Chạy quy trình Bitbucket
Mở phần "Pipelines" rồi nhấp vào "Run initial pipeline".

Chọn nhánh "main" và quy trình "default", rồi nhấp vào "Run".

8. Xem xét kết quả đầu ra của quy trình Bitbucket
Mở/làm mới phần "Pipelines" rồi xem xét đầu ra của quy trình.


Kết quả của lệnh về mức độ kiểm thử:
devai review testcoverage -c ./sample-app/src
Lệnh devai review testcoverage này phân tích mã và bộ kiểm thử liên kết (nếu có) bằng mô hình AI tạo sinh Gemini. Công cụ này đánh giá mức độ kiểm thử của mã được cung cấp, xác định các tệp và phương thức có và không có kiểm thử đơn vị. Sau đó, lệnh này sẽ tận dụng mô hình để cung cấp thông tin tóm tắt về phạm vi, bao gồm cả các chỉ số như số dòng và số nhánh/điều kiện được đề cập. Dựa trên kết quả phân tích, công cụ này đưa ra các đề xuất để cải thiện mức độ kiểm thử, đề xuất các kiểm thử cụ thể cần thêm và đưa ra lời khuyên chung về các phương pháp hay nhất để kiểm thử. Cuối cùng, công cụ này sẽ xuất câu trả lời của mô hình Gemini, bao gồm các thông tin chi tiết như những tệp thiếu độ bao phủ và các đề xuất để cải thiện các bài kiểm thử hiện có cho người dùng thông qua dòng lệnh.
Kết quả của lệnh đánh giá mã:
devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Lệnh devai review code tiến hành đánh giá mã toàn diện cho một đoạn mã được cung cấp bằng cách sử dụng một mô hình AI tạo sinh. Công cụ này lấy mã cần được xem xét làm dữ liệu đầu vào (ngữ cảnh) và lựa chọn ưu tiên về định dạng đầu ra (đầu ra). Công cụ này tận dụng một mô hình ngôn ngữ lớn để phân tích mã về tính chính xác, hiệu quả, khả năng duy trì, tính bảo mật và việc tuân thủ các phương pháp hay nhất. Lệnh này tạo ra một câu lệnh chi tiết hướng dẫn Gemini cách tiến hành quy trình xem xét, sau đó gửi câu lệnh đó đến mô hình để đánh giá mã được cung cấp. Cuối cùng, công cụ này sẽ xử lý câu trả lời của Gemini, định dạng câu trả lời đó ở dạng markdown, JSON hoặc bảng theo lựa chọn ưu tiên của người dùng và xuất kết quả đánh giá.
Kết quả của lệnh đánh giá việc tuân thủ:
devai review compliance --context ./sample-app/k8s --config ./devai-cli/gemini/styleguide.md
Lệnh devai review compliance phân tích mã dựa trên một bộ các phương pháp hay nhất, thường là cho cấu hình Kubernetes. Lệnh này sử dụng một mô hình Gemini để xem xét mã được cung cấp (context) và so sánh mã đó với các tiêu chuẩn được chỉ định trong một tệp cấu hình riêng biệt (config). Lệnh này tận dụng một câu lệnh để hướng dẫn mô hình Gemini đóng vai trò là một kỹ sư Kubernetes chuyên nghiệp và cung cấp báo cáo tuân thủ. Sau đó, công cụ này định dạng các kết quả tìm được thành một lời giải thích ngắn gọn, tập trung vào các mã mẫu minh hoạ cách giải quyết mọi vấn đề đã xác định. Cuối cùng, lệnh này sẽ in kết quả đánh giá việc tuân thủ của Gemini vào bảng điều khiển. Điều này giúp người dùng dễ dàng kiểm tra mã của họ để đảm bảo tuân thủ.
9. Sao chép kho lưu trữ Bitbucket và thiết lập khoá SSH
Quay lại thiết bị đầu cuối Google Cloud Shell và thiết lập một khoá SSH mới.
Hãy cập nhật email của bạn trước khi chạy các lệnh.
ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
Thêm khoá truy cập vào kho lưu trữ Bitbucket.
Mở "Repository settings / SECURITY / Access keys" rồi nhấp vào "Thêm khoá".
Đối với khoá giá trị, hãy sao chép/dán đầu ra của lệnh cuối cùng.

Trong mục "Source", hãy nhấp vào "Clone" rồi sao chép URL.


Quay lại Terminal và sao chép kho lưu trữ.
cd ~
mkdir bitbucket
cd bitbucket
Thay thế bằng URL dự án và kho lưu trữ của bạn trên Bitbucket.
git clone git@bitbucket.org:YOUR_PROJECT/genai-for-developers.git
Thay đổi thư mục và mở tệp bitbucket-pipelines.yml. Nếu bạn đã thay đổi tên kho lưu trữ trong quá trình nhập, hãy cập nhật tên thư mục trước khi chạy các lệnh sau.
cd genai-for-developers
cloudshell edit bitbucket-pipelines.yml
10. Giải thích mã bằng Gemini Code Assist
Nhấp chuột phải vào vị trí bất kỳ trong tệp bitbucket-pipelines.yml rồi chọn Gemini Code Assist > Explain.

Giải thích về việc xem xét:

11. Phát triển DevAI CLI
Trong phần này, bạn sẽ thực hiện các thay đổi đối với devai cli.
Để bắt đầu, hãy thiết lập virtualenv của Python, cài đặt các yêu cầu và chạy lệnh mẫu.
cd ~/bitbucket/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo
Đặt các biến môi trường bắt buộc.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
Chạy lệnh đánh giá mã để kiểm tra xem mọi thứ có hoạt động bình thường hay không:
devai review code -c ~/bitbucket/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader > code-review.md
cloudshell edit code-review.md
Xem xét kết quả bằng tính năng xem trước Markdown trong Cloud Shell Editor.
Sau đó, hãy dùng Bảng lệnh và chọn "Markdown: Open Preview".



Lệnh xem xét mức độ bao phủ kiểm thử
devai review testcoverage -c ~/bitbucket/genai-for-developers/sample-app/src > testcoverage.md
cloudshell edit testcoverage.md
Lệnh đánh giá việc tuân thủ
devai review compliance --context ~/bitbucket/genai-for-developers/sample-app/k8s --config ~/genai-for-developers/devai-cli/.gemini/styleguide.md > k8s-review.md
cloudshell edit k8s-review.md
Lệnh đánh giá hiệu suất
devai review performance -c ~/bitbucket/genai-for-developers/sample-app/src/main/java > performance-review.md
cloudshell edit performance-review.md
Lệnh đánh giá bảo mật
devai review security -c ~/bitbucket/genai-for-developers/sample-app/src/main/java > security-review.md
cloudshell edit security-review.md
Lệnh xem xét các yêu cầu chặn
devai review blockers -c ~/bitbucket/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/bitbucket/genai-for-developers/sample-app/setup.md
Xem xét và tóm tắt hình ảnh/sơ đồ
Sơ đồ đầu vào [~/bitbucket/genai-for-developers/images/extension-diagram.png]:

Lệnh xem xét:
devai review image \
-f ~/bitbucket/genai-for-developers/images/extension-diagram.png \
-p "Review and summarize this diagram" > image-review.md
cloudshell edit image-review.md
Kết quả:
The diagram outlines a process for conducting local code reviews using a VS Code extension or CLI, leveraging Google Cloud's Vertex AI (Gemini Pro) for generating review prompts.
**Process Flow:**
1. **Code Style Check:** Developers initiate the process by checking their code for adherence to pre-defined style guidelines.
2. **Prompt Generation:** The VS Code extension/CLI sends the code to Vertex AI (Gemini Pro) on Google Cloud.
3. **Vertex AI Review:** Vertex AI analyzes the code and generates relevant review prompts.
4. **Local Review:** The prompts are sent back to the developer's IDE for their consideration.
5. **Optional Actions:** Developers can optionally:
- Create new JIRA issues directly from the IDE based on the review prompts.
- Generate new issues in a GitLab repository.
**Key Components:**
* **VS Code Extension/CLI:** Tools facilitating the interaction with Vertex AI and potential integrations with JIRA and GitLab.
* **Vertex AI (Gemini Pro):** Google Cloud's generative AI service responsible for understanding the code and generating meaningful review prompts.
* **Google Cloud Secret Manager:** Securely stores API keys and access tokens required to authenticate and interact with Google Cloud services.
* **JIRA/GitLab (Optional):** Issue tracking and project management tools that can be integrated for a streamlined workflow.
**Benefits:**
* **Automated Review Assistance:** Leveraging AI to generate review prompts saves time and improves the consistency and quality of code reviews.
* **Local Development:** The process empowers developers to conduct reviews locally within their familiar IDE.
* **Integration Options:** The flexibility to integrate with project management tools like JIRA and GitLab streamlines workflow and issue tracking.
Phân tích sự khác biệt về hình ảnh
devai review imgdiff \
-c ~/bitbucket/genai-for-developers/images/devai-api.png \
-t ~/bitbucket/genai-for-developers/images/devai-api-slack.png > image-diff-review.md
cloudshell edit image-diff-review.md
Kết quả:
The following UI elements are missing in the "AFTER UPGRADE STATE" image compared to the "BEFORE UPGRADE STATE" image: 1. **Slack:** The entire Slack element, including the icon, "Team channel" label, and the arrow indicating interaction, is absent in the AFTER UPGRADE image. 2. **Storage Bucket:** The "Storage Bucket" element with its icon and "PDFs" label is missing in the AFTER UPGRADE image. 3. **"GenAI Agents" label in Vertex AI block:** The BEFORE UPGRADE image has "Vertex AI Agents" and "GenAI Agent" labels within the Vertex AI block, while the AFTER UPGRADE image only has "Vertex AI." 4. **"Open JIRA Issue" and "Team Project" labels:** In the BEFORE UPGRADE image, these labels are connected to the JIRA block with an arrow. These are missing in the AFTER UPGRADE image. **Decision Explanation:** The analysis is based on a direct visual comparison of the two provided images, noting the presence and absence of specific UI elements and their associated labels. The elements listed above are present in the BEFORE UPGRADE image but absent in the AFTER UPGRADE image.
Phân tích tệp video:
devai review video \
-f "/tmp/video.mp4" \
-p "Review user journey video and create unit tests using jest framework"
Lệnh tạo tài liệu
devai document readme -c ~/bitbucket/genai-for-developers/sample-app/src/main/
Kết quả:
# Bank of Anthos - Balance Reader Service ## Description The Balance Reader service is a component of the Bank of Anthos sample application. It provides a REST endpoint for retrieving the current balance of a user account. This service demonstrates key concepts for building microservices with Spring Boot and deploying them to a Kubernetes cluster. ## Features ...
Xem các lệnh devai cli hiện có trong Trình chỉnh sửa Cloud Shell:
cloudshell edit ~/bitbucket/genai-for-developers/devai-cli/README.md
Hoặc xem tệp README.md trong kho lưu trữ GitHub.
12. Xin chúc mừng!
Xin chúc mừng, bạn đã hoàn tất lớp học lập trình này!
Nội dung đã đề cập:
- Thêm các bước tự động hoá quy trình đánh giá mã bằng AI tạo sinh trong Bitbucket
- Chạy cli devai cục bộ
Bước tiếp theo:
- Sắp có thêm nhiều buổi thực hành!
Dọn dẹp
Để tránh bị tính phí vào tài khoản Google Cloud của bạn cho các tài nguyên được dùng trong hướng dẫn này, hãy xoá dự án chứa các tài nguyên đó hoặc giữ lại dự án rồi xoá từng tài nguyên.
Xoá dự án
Cách dễ nhất để loại bỏ phí thanh toán là xoá dự án mà bạn đã tạo cho hướng dẫn này.
©2024 Google LLC Bảo lưu mọi quyền. Google và biểu trưng Google là các nhãn hiệu của Google LLC. Tất cả các tên công ty và sản phẩm khác có thể là nhãn hiệu của công ty liên quan tương ứng.