1. Tổng quan
Trong phòng thí nghiệm này, bạn sẽ thiết lập quy trình công việc của GitHub Actions 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ẽ học 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 GitHub
- 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 tên này.
- Mã dự án là mã duy nhất trên tất cả các dự án của Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console 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ã đã tạo, bạn có thể tạo một mã ngẫu nhiên khác. Ngoài ra, bạn có thể thử mã của riêng mình và xem mã đó có dùng được hay không. Bạn không thể thay đổi mã này sau bước này và mã này sẽ tồn tại trong suốt thời gian diễn ra dự án. - Để bạn tham khảo, 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 API/tài nguyên trên đám mây. 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í, thậm chí là không tốn chi phí nào. Để tắt các tài nguyên nhằm tránh phát sinh chi phí thanh toán ngoài 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 cho API Google Cloud:

Nhấp vào "Start chatting" (Bắt đầu trò chuyện) 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 Google Cloud Run, hãy giải thích về Cloud Run cho một học viên trong 5 điểm chính ngắn gọn.
- Bạn là Quản lý sản phẩm 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 Google Cloud Run, hãy giải thích thời điểm bạn sẽ sử dụng Cloud Run so với GKE cho một Nhà phát triển cấp cao 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 về quyền riêng tư của Google
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 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 tất, được gọi là câu lệnh. Câu trả lời hoặc mã hoàn tất mà bạn nhận được từ Gemini được gọi là câu trả lời. Gemini không sử dụng câu lệnh hoặc câu trả lời của bạn làm dữ liệu để huấn luyện các mô hình của mình.
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 tải 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 trên mã Google Cloud của bên thứ nhất cũng như mã của bên thứ ba được chọn. 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 mọi hoạt động hoàn tất, 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ó một số lựa chọn để thực hiện việc đó.
Vertex AI Studio là một phần của nền tảng Vertex AI của Google Cloud, được thiết kế đặc biệt để đơn giản hoá và tăng tốc quá trình phát triển và 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 nền tảng web để tạo nguyên mẫu và thử nghiệm thiết kế câu lệnh và 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à tận dụng sức mạnh của các mô hình AI Gemini của Google.
- Ứng dụng di động Google Gemini 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 cửa sổ dòng lệnh đã mở, hãy bật các dịch vụ bắt buộc để sử dụng các API Vertex AI 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 cho phép, hãy nhấp vào "Authorize" (Cho phép) để 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ẽ 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ừ các 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. Phát triển nhánh kho lưu trữ GitHub vào kho lưu trữ GitHub cá nhân
Chuyển đến https://github.com/GoogleCloudPlatform/genai-for-developers/fork rồi chọn mã nhận dạng người dùng GitHub của bạn làm chủ sở hữu.
Nhấp vào "Create fork" (Tạo bản sao).
6. Bật quy trình công việc GitHub Actions
Mở kho lưu trữ GitHub đã tạo bản sao trong trình duyệt rồi chuyển sang thẻ "Actions" (Hành động) để bật quy trình công việc.

7. Thêm khoá bí mật của kho lưu trữ
Tạo một khoá bí mật của kho lưu trữ trong phần "Settings / Secrets and variables / Actions" (Cài đặt/Khoá bí mật và biến/Hành động) trong kho lưu trữ GitHub đã tạo bản sao.
Thêm khoá bí mật của kho lưu trữ có tên là "GOOGLE_API_CREDENTIALS".

Chuyển sang cửa sổ/thẻ Google Cloud Shell rồi chạy lệnh bên dưới trong cửa sổ dòng lệnh Cloud Shell.
cat ~/vertex-client-key.json
Sao chép nội dung tệp rồi dán nội dung đó làm giá trị cho khoá bí mật.

Thêm khoá bí mật PROJECT_ID có mã dự án Qwiklabs làm giá trị:

8. Chạy quy trình công việc GitHub Actions
Chuyển đến kho lưu trữ GitHub của bạn trong trình duyệt rồi chạy quy trình công việc.
Quy trình công việc được định cấu hình để chạy theo yêu cầu.

9. Xem xét kết quả đầu ra của quy trình làm việc

Tổng quan về các lệnh của quy trình
Cấu hình quy trình công việc GitHub Actions: devai-review.yml
Kết quả của lệnh phạm vi kiểm thử:
devai review testcoverage -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Lệnh devai review testcoverage này phân tích mã và bộ kiểm thử được liên kết (nếu có) bằng mô hình AI tạo sinh, Gemini. Lệnh này đánh giá phạm vi 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 tận dụng mô hình để cung cấp bản tóm tắt về phạm vi, bao gồm các chỉ số như dòng và nhánh/điều kiện được kiểm thử. Dựa trên phân tích của mình, lệnh này đưa ra các đề xuất để cải thiện phạm vi kiểm thử, đề xuất thêm các bài kiểm thử cụ thể 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, lệnh này 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ư các tệp thiếu phạm vi 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 ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Lệnh devai review code thực hiện đánh giá mã toàn diện về một đoạn mã được cung cấp bằng mô hình AI tạo sinh. Lệnh này lấy mã cần đánh giá làm dữ liệu đầu vào (ngữ cảnh) và một lựa chọn ưu tiên về định dạng đầu ra (đầu ra). Lệnh 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 bảo 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 một câu lệnh chi tiết hướng dẫn Gemini cách tiến hành đánh giá, sau đó gửi câu lệnh đó đến mô hình để đánh giá mã được cung cấp. Cuối cùng, lệnh này xử lý câu trả lời của Gemini, định dạng câu trả lời đó ở định 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 -c ${{ github.workspace }}/sample-app/k8s --config ${{ github.workspace }}/devai-cli/gemini/styleguide.md
Lệnh devai review compliance phân tích mã dựa trên một tập hợp 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ô 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 được xác định trong một tệp cấu hình riêng (config). Lệnh này tận dụng một câu lệnh để hướng dẫn mô hình Gemini hoạt động như một kỹ sư Kubernetes chuyên gia và cung cấp báo cáo tuân thủ. Sau đó, lệnh này định dạng các phát hiện dưới dạng 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 đề được xác định. Cuối cùng, lệnh này 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 cho phép người dùng dễ dàng kiểm tra mã của họ để đảm bảo tuân thủ.

10. Nhân bản kho lưu trữ
Quay lại cửa sổ dòng lệnh Cloud Shell rồi sao chép kho lưu trữ.
Thay đổi YOUR-GITHUB-USERID thành mã nhận dạng người dùng GitHub của bạn trước khi chạy các lệnh.
git clone https://github.com/YOUR-GITHUB-USERID/genai-for-developers.git
Thay đổi thư mục và mở tệp quy trình công việc trong Cloud Shell Editor.
cd genai-for-developers
cloudshell edit .github/workflows/devai-review.yml
Chờ cho đến khi tệp cấu hình xuất hiện trong IDE.
11. 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 devai-review.yml rồi chọn Gemini Code Assist > Explain mục này.

Xem xét phần giải thích:

12. 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 python virtualenv, cài đặt các yêu cầu và chạy lệnh mẫu.
cd ~/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 ~/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 bản xem trước Markdown trong Cloud Shell Editor.
Sử dụng Bảng lệnh rồi chọn "Markdown: Open Preview".



13. Khám phá các lệnh devai cli
Lệnh xem xét phạm vi kiểm thử
devai review testcoverage -c ~/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 ~/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 ~/genai-for-developers/sample-app/src/main/java > performance-review.md
cloudshell edit performance-review.md
Lệnh đánh giá tính bảo mật
devai review security -c ~/genai-for-developers/sample-app/src/main/java > security-review.md
cloudshell edit security-review.md
Lệnh đánh giá các vấn đề gây cản trở
devai review blockers -c ~/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/genai-for-developers/sample-app/setup.md
Xem xét và tóm tắt hình ảnh/sơ đồ
Sơ đồ đầu vào[~/genai-for-developers/images/extension-diagram.png]:

Lệnh xem xét:
devai review image \
-f ~/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 ~/genai-for-developers/images/devai-api.png \
-t ~/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 ~/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 xét các lệnh devai cli có sẵn trong Cloud Shell Editor:
cloudshell edit ~/genai-for-developers/devai-cli/README.md
Hoặc xem xét README.md trong kho lưu trữ GitHub.
14. Xin chúc mừng!
Xin chúc mừng, bạn đã hoàn thành lớp học lập trình này!
Nội dung chúng ta đã đề cập:
- Thêm các bước tự động hoá quy trình đánh giá mã bằng AI tạo sinh trong GitHub
- Chạy devai cli cục bộ
Bước tiếp theo:
- Sắp có thêm nhiều phiên thực hành!
Dọn dẹp
Để tránh phát sinh phí cho tài khoản Google Cloud của bạn đối với các tài nguyên được sử 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 và xoá từng tài nguyên.
Xoá dự án
Cách dễ nhất để loại bỏ chi 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.