Thông tin về lớp học lập trình này
1. Tổng quan
Trong lớp học lập trình này, bạn sẽ thiết lập quy trình CICD của GitLab và tích hợp quy trình này với Gemini để tự động hoá các bước xem xét mã.
Kiến thức bạn sẽ học được
Trong lớp học 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 đánh giá mã GenAI trong GitLab
- 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
- Học phần này giả định rằng bạn đã quen thuộc với môi trường Cloud Console và Cloud Shell.
2. Cách thiết lập và các yêu cầu
Thiết lập dự án trên Cloud
- Đă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ị cho người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn luôn có thể cập nhật thông tin này.
- Mã dự án là duy nhất trên tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi 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ã được 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ử dùng email của riêng mình để xem có thể sử dụng hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ được giữ nguyên trong suốt thời gian của dự án. - Xin lưu ý rằng có một giá trị thứ ba là Mã dự án mà một số API sử dụng. Tìm hiểu thêm về cả ba 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 tham gia lớp học lập trình này sẽ không tốn kém nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí sau khi hoàn tất 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í 300 USD.
Thiết lập môi trường
Mở cuộc trò chuyện trên 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
" 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 Cloud Run trong 5 điểm chính.
- Bạn là Nhà quản lý sản phẩm Cloud Run của Google, hãy giải thích về Cloud Run cho học viên trong 5 điểm chính ngắn gọn.
- Bạn là Nhà quản lý sản phẩm Cloud Run của Google, 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à Nhà quản lý sản phẩm Google Cloud Run, hãy giải thích cho một Nhà phát triển cấp cao về thời điểm bạn sẽ 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ư liên quan đến AI/ML. Cam kết này nêu rõ quan điểm 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 đặt cho 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 thành, được gọi là câu lệnh. Câu trả lời hoặc mã hoàn chỉnh mà bạn nhận được từ Gemini được gọi là phản hồ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 mình.
Mã hoá lời nhắc
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ữ liệu 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 được tạo từ Gemini
Gemini được huấn luyện dựa trên mã Google Cloud của bên thứ nhất cũng như mã bên thứ ba đã chọn. Bạn chịu trách nhiệm về tính bảo mật, hoạt động kiểm thử và hiệu quả của mã, bao gồm cả 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ý lời nhắc của bạn.
3. Các lựa chọn để kiểm thử lời nhắc
Nếu muốn thay đổi/mở rộng lời nhắc devai cli hiện có, bạn có một số lựa chọn.
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à đẩy nhanh quá trình phát triển cũng như sử dụng các mô hình AI tạo sinh.
AI Studio của Google là một công cụ dựa trên web để tạo nguyên mẫu và thử nghiệm kỹ thuật câu lệnh cũng như API Gemini.
- Ứ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 Google Gemini dành cho thiết bị di động 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 API Vertex AI và tính năng trò chuyện trên Gemini.
gcloud services enable \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
cloudresourcemanager.googleapis.com \
secretmanager.googleapis.com
Nếu bạn đượ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ẽ sử dụng tài khoản dịch vụ này để thực hiện các lệnh gọi API đến API Gemini của Vertex AI 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ữ GitLab
Truy cập vào https://gitlab.com/projects/new rồi chọn tuỳ chọn "Import project
" / "Repository by URL
":
URL của kho lưu trữ Git:
https://github.com/GoogleCloudPlatform/genai-for-developers.git
Trong phần URL dự án – hãy chọn mã nhận dạng người dùng gitlab của bạn
Đặt Visibility (Chế độ hiển thị) thành Public
.
Nhấp vào biểu tượng "Create Project
" để bắt đầu quá trình nhập.
Nếu bạn thấy lỗi về URL kho lưu trữ GitHub không hợp lệ, hãy tạo mã thông báo GitHub mới(chi tiết) với quyền chỉ có thể đọc đối với kho lưu trữ Công khai và thử nhập lại bằng mã thông báo và mã nhận dạng người dùng GitHub của bạn.
6. Thêm biến quy trình GitLab CICD
Tiếp theo, bạn sẽ bật quy trình CICD của GitLab để chạy quy trình xem xét mã khi các thay đổi được đẩy vào kho lưu trữ.
Mở kho lưu trữ GitLab trong trình duyệt rồi chuyển đến phần "Settings / CICD"
".
Mở rộng phần Variables
rồi nhấp vào "Add variable
".
Hãy nhớ bỏ đánh dấu tất cả các hộp đánh dấu khi bạn thêm biến mới.
Ví dụ:
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ụ được 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 CI/CD:
7. Chạy quy trình CICD của GitLab
Mở "Build / Pipelines
" trong giao diện người dùng GitLab rồi nhấp vào "Run Pipeline
".
8. Xem xét đầu ra của quy trình GitLab
Mở "Build / Jobs
" trong giao diện người dùng GitLab và xem lại đầu ra của quy trình.
Tổng quan về các lệnh trong quy trình
Cấu hình quy trình GitLab: .gitlab-ci.yml
Lệnh kiểm thử mức độ sử dụng:
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 với mã đó (nếu có) bằng cách sử dụng mô hình AI tạo sinh Gemini. Công cụ này đánh giá mức độ sử dụng mã 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ề mức độ bao phủ, bao gồm các chỉ số như dòng và nhánh/điều kiện được bao phủ. 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 độ sử dụng 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 kiểm thử hay nhất. Cuối cùng, công cụ này sẽ xuất ra phản hồi của mô hình Gemini, bao gồm các thông tin chi tiết như tệp thiếu phạm vi kiểm thử và đề 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.
Lệnh xem xét mã:
devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Lệnh devai review code
tiến hành xem xét mã toàn diện của một đoạn mã được cung cấp bằng cách sử dụng mô hình AI tạo sinh. Phương thức này lấy mã cần được xem xét làm dữ liệu đầu vào (ngữ cảnh) và một tuỳ chọn đị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 bảo trì, bảo mật và 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 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 đó ở đị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á.
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ác 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 trong một tệp cấu hình riêng (config
). Lệnh này tận dụng lời nhắc để hướng dẫn mô hình Gemini đóng vai trò là kỹ sư Kubernetes chuyên nghiệp và cung cấp báo cáo tuân thủ. Sau đó, công cụ này sẽ định dạng kết quả tìm thấy dưới dạng nội dung giải thích ngắn gọn, tập trung vào các mẫu mã 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 cho phé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ữ GitLab
Quay lại cửa sổ dòng lệnh Google Cloud Shell và sao chép kho lưu trữ.
cd ~
mkdir gitlab
cd gitlab
Thay thế bằng tên người dùng GitLab và URL kho lưu trữ bạn vừa tạo.
git clone https://gitlab.com:YOUR_GITLAB_USERID/genai-for-developers.git
Thay đổi thư mục và mở tệp .gitlab-ci.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 .gitlab-ci.yml
10. Giải thích đoạn mã bằng Gemini Code Assist
Nhấp chuột phải vào vị trí bất kỳ trong tệp .gitlab-ci.yml
rồi chọn Gemini Code Assist > Explain
.
Giải thích về bài đánh giá:
11. Phát triển CLI DevAI
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 ~/gitlab/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 xem xét mã để kiểm tra xem mọi thứ có hoạt động tốt không:
devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader > code-review.md
cloudshell edit code-review.md
Xem lại kết quả bằng tính năng xem trước Markdown trong Trình chỉnh sửa Cloud Shell.
Sử dụng Bảng lệnh và chọn "Markdown: Open Preview
".
12. Khám phá các lệnh devai cli
Lệnh xem xét mức độ bao phủ 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 xem xét 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 xem xét trình chặn
devai review blockers -c ~/gitlab/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/gitlab/genai-for-developers/sample-app/setup.md
Xem xét và tóm tắt hình ảnh/biểu đồ
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 ~/gitlab/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 - Securely retrieves account balances using JWT authentication. - Leverages a local cache for fast balance retrieval. - Asynchronously processes transactions from a central ledger. - Provides health check endpoints for Kubernetes liveness and readiness probes. ...
Xem lại các lệnh devai cli hiện có trong Trình chỉnh sửa Cloud Shell:
cloudshell edit ~/gitlab/genai-for-developers/devai-cli/README.md
Hoặc xem lại README.md trong kho lưu trữ GitHub.
13. 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ội dung chúng ta đã đề cập:
- Thêm các bước tự động hoá quy trình đánh giá mã GenAI trong GitLab
- Chạy devai cli cục bộ
Bước tiếp theo:
- Chúng tôi sẽ tổ chức thêm nhiều buổi thực hành khác!
Dọn dẹp
Để tránh bị tính 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ỏ tính năng thanh toán là xoá dự án mà bạn đã tạo cho hướng dẫn này.
©2024 Google LLC Mọi quyền được bảo lưu. 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.