1. Tổng quan
Trong lớp học này, bạn sẽ xây dựng một giải pháp để tự động hoá việc triển khai các câu chuyện sử dụng JIRA bằng GenAI.
Kiến thức bạn sẽ học được
Lớp học lập trình này có một số phần chính:
- Triển khai ứng dụng Cloud Run để tích hợp với các API Gemini
- Tạo và triển khai ứng dụng Atlassian Forge cho JIRA
- Tác nhân ReAct của LangChain để tự động hoá các tác vụ trong GitLab
Đ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à 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 diễn ra 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 Cloud AI Companion 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 để 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 Google Cloud Run, 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
Bạn có một số cách để kiểm thử câu lệnh.
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 Gemini trên web (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. (MỤC KHÔNG BẮT BUỘC) Tạo tài khoản dịch vụ
Các bước này đã được thực thi trong quá trình thiết lập lớp học – bạn không cần chạy các bước này.
Các bước này được đưa vào để hướng dẫn cách thiết lập tài khoản dịch vụ và vai trò IAM.
Quay lại Google Cloud Console 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 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ừ ứng dụng Cloud Run.
Định cấu hình thông tin dự án bằng thông tin dự án Qwiklabs.
Ví dụ: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR_QWIKLABS_PROJECT_ID
Tạo tài khoản dịch vụ và cấp vai trò.
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 --project $PROJECT_ID --display-name "$DISPLAY_NAME"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/cloudbuild.builds.editor"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/storage.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/run.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor"
gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
Nếu bạn được nhắc uỷ quyền, hãy nhấp vào "Uỷ quyền" để tiếp tục.
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 \
generativelanguage.googleapis.com \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
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 \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
runapps.googleapis.com \
workstations.googleapis.com \
servicemanagement.googleapis.com \
secretmanager.googleapis.com \
containerscanning.googleapis.com
(KẾT THÚC PHẦN KHÔNG BẮT BUỘC)
5. Cấp quyền truy cập vào Cloud Workstation
Mở Cloud Workstations trong Cloud Console.
Cấp quyền truy cập vào Cloud Workstation cho học viên Qwiklabs đã được cấp quyền.
Sao chép tên người dùng/email Qwiklabs đã tạo cho dự án này rồi sử dụng để thêm một nguyên tắc. Chọn máy trạm rồi nhấp vào "PERMISSIONS
".
Xem chi tiết bên dưới.
Nhấp vào nút "ADD PRINCIPAL
".
Dán email của học viên Qwiklabs rồi chọn vai trò "Cloud Workstations User
".
Nhấp vào "Start
" rồi nhấp vào "Launch
" để mở máy trạm và tiếp tục các bước sau bằng cách sử dụng dòng lệnh tích hợp.
Sao chép kho lưu trữ GitHub
Tạo một thư mục và nhân bản kho lưu trữ GitHub.
mkdir github
cd github
git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git
Sử dụng mục trình đơn "File / Open Folder
", hãy mở "github/genai-for-developers
".
6. Bật tính năng Gemini Code Assist
Nhấp vào biểu tượng "Gemini", ở góc dưới bên phải, hãy nhấp vào "Login to Google Cloud
".
Nhấp vào đường liên kết trong dòng lệnh để bắt đầu quy trình uỷ quyền.
Nhấp vào "Mở" để truy cập vào đường liên kết.
Chọn tài khoản học viên của bạn trên Qwiklabs rồi nhấp vào "Đăng nhập" trên màn hình tiếp theo.
Sao chép mã xác minh:
Quay lại cửa sổ dòng lệnh và dán mã.
Chờ quá trình xác thực hoàn tất rồi nhấp vào "Chọn một dự án trên Google".
Trong cửa sổ bật lên, hãy chọn dự án Qwiklabs của bạn.
Ví dụ:
Mở tệp "devai-api/app/routes.py
", sau đó nhấp chuột phải vào vị trí bất kỳ trong tệp rồi chọn "Gemini > Explain
this"
trên trình đơn theo bối cảnh.
Xem nội dung giải thích của Gemini về tệp đã chọn.
7. Bộ công cụ LangChain
Bộ công cụ LangChain là các bộ công cụ được thiết kế để đơn giản hoá và nâng cao quá trình phát triển ứng dụng bằng LangChain. Các công cụ này cung cấp nhiều chức năng tuỳ thuộc vào bộ công cụ cụ thể, nhưng nhìn chung, các công cụ này giúp:
- Kết nối với các nguồn dữ liệu bên ngoài: Truy cập và kết hợp thông tin từ các API, cơ sở dữ liệu và các nguồn bên ngoài khác vào ứng dụng LangChain.
- Kỹ thuật nhắc nâng cao: Sử dụng các câu lệnh được tạo sẵn hoặc tạo câu lệnh tuỳ chỉnh để tối ưu hoá hoạt động tương tác với các mô hình ngôn ngữ.
- Tạo và quản lý chuỗi: Dễ dàng tạo và quản lý các chuỗi phức tạp.
- Đánh giá và theo dõi: Phân tích hiệu suất của các ứng dụng và chuỗi LangChain.
Một số Bộ công cụ LangChain phổ biến bao gồm:
- Bộ công cụ thực thi tác nhân: Các công cụ để phát triển tác nhân có thể tương tác với thế giới thực thông qua các hành động như duyệt web hoặc thực thi mã.
- Bộ công cụ thiết kế câu lệnh: Tập hợp tài nguyên để tạo câu lệnh hiệu quả.
Bộ công cụ GitLab
Trong lớp học này, bạn sẽ sử dụng Bộ công cụ GitLab để tự động tạo yêu cầu hợp nhất trên GitLab.
Bộ công cụ Gitlab chứa các công cụ cho phép tác nhân LLM tương tác với kho lưu trữ gitlab. Công cụ này là một trình bao bọc cho thư viện python-gitlab
.
Bộ công cụ GitLab có thể thực hiện các nhiệm vụ sau:
- Tạo tệp – tạo một tệp mới trong kho lưu trữ.
- Read File (Đọc tệp) – đọc một tệp từ kho lưu trữ.
- Cập nhật tệp – cập nhật một tệp trong kho lưu trữ.
- Tạo yêu cầu kéo – tạo yêu cầu kéo từ nhánh đang hoạt động của bot đến nhánh cơ sở.
- Get Issue (Lấy vấn đề) – tìm nạp các vấn đề từ kho lưu trữ.
- Get Issue (Nhận vấn đề) – tìm nạp thông tin chi tiết về một vấn đề cụ thể.
- Comment on Issue (Bình luận về vấn đề) – đăng bình luận về một vấn đề cụ thể.
- Delete File (Xoá tệp) – xoá một tệp khỏi kho lưu trữ.
8. Cấu hình Kho lưu trữ GitLab và Bộ công cụ
Mở GitLab, tạo một dự án công khai mới và thiết lập Mã truy cập dự án trong "Settings / Access Tokens
".
Sử dụng các thông tin sau:
- Tên mã thông báo:
devai-api-qwiklabs
- Vai trò:
Maintainer
- Chọn phạm vi:
api
Sao chép và dán giá trị Mã thông báo truy cập vào một tệp tạm thời trên máy tính xách tay. Giá trị này sẽ được sử dụng trong các bước tiếp theo.
9. Chuẩn bị triển khai ứng dụng trên Cloud Run
Quay lại thực thể Máy trạm trên đám mây và sử dụng hoặc mở một thiết bị đầu cuối mới.
Lấy thông tin xác thực quyền truy cập cho tài khoản người dùng của bạn thông qua quy trình uỷ quyền dựa trên web.
Nhấp vào đường liên kết đó rồi làm theo các bước để tạo mã xác minh.
gcloud auth login
Định cấu hình thông tin dự án bằng thông tin dự án Qwiklabs.
Ví dụ: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR-QWIKLABS-PROJECT-ID
Thiết lập phần còn lại của các biến môi trường:
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api
Đặt các biến môi trường cần thiết để tích hợp GitLab.
export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-token
Để tránh tiết lộ thông tin nhạy cảm trong thiết bị đầu cuối, tốt nhất bạn nên sử dụng read -s
. Đây là cách an toàn để đặt các biến môi trường mà không cần giá trị xuất hiện trong nhật ký lệnh của bảng điều khiển. Sau khi chạy, bạn phải dán giá trị và nhấn enter.
Lệnh này yêu cầu bạn cập nhật tên người dùng và tên kho lưu trữ GitLab.
Ví dụ: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"
export GITLAB_REPOSITORY="USERID/REPOSITORY"
Thiết lập phần còn lại của các biến môi trường:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
10. Cấu hình theo dõi LLM LangSmith
Tạo tài khoản LangSmith và tạo khoá API dịch vụ trong mục Cài đặt. https://docs.smith.langchain.com/
Thiết lập các biến môi trường cần thiết để tích hợp LangSmith.
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY=langchain-service-api-key
11. Cấu hình JIRA
Các giá trị này không được sử dụng trong lớp học này, vì vậy, bạn không cần cập nhật giá trị này thành các giá trị dự án JIRA cụ thể trước khi thực thi các lệnh.
Đặt các biến môi trường cần thiết để triển khai dịch vụ Cloud Run.
export JIRA_API_TOKEN=jira-token
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true
12. Triển khai Devai-API cho Cloud Run
Kiểm tra để đảm bảo bạn đang ở đúng thư mục.
cd ~/github/genai-for-developers/devai-api
Đối với lớp học này, chúng ta sẽ làm theo các phương pháp hay nhất và sử dụng Trình quản lý bí mật để lưu trữ và tham chiếu các giá trị Mã thông báo truy cập và Khoá API LangChain trong Cloud Run.
Lưu trữ Mã truy cập JIRA trong Trình quản lý bí mật.
echo -n $JIRA_API_TOKEN | \
gcloud secrets create JIRA_API_TOKEN \
--data-file=-
Lưu trữ mã truy cập GitLab trong Trình quản lý bí mật.
echo -n $GITLAB_PERSONAL_ACCESS_TOKEN | \
gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN \
--data-file=-
Lưu trữ Khoá API LangChain trong Trình quản lý khoá.
echo -n $LANGCHAIN_API_KEY | \
gcloud secrets create LANGCHAIN_API_KEY \
--data-file=-
Triển khai ứng dụng lên Cloud Run.
gcloud run deploy "$SERVICE_NAME" \
--source=. \
--region="$LOCATION" \
--allow-unauthenticated \
--service-account vertex-client \
--set-env-vars PROJECT_ID="$PROJECT_ID" \
--set-env-vars LOCATION="$LOCATION" \
--set-env-vars GITLAB_URL="$GITLAB_URL" \
--set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
--set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
--set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
--set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
--set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
--set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
--set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
--set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
--update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
--update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
--update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
--min-instances=1 \
--max-instances=3
Trả lời Y
để tạo kho lưu trữ Docker của Artifact Registry.
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in
region [us-central1] will be created.
Do you want to continue (Y/n)? y
Xem lại quy trình gcloud run deploy SERVICE_NAME --source=.
bên dưới. Tìm hiểu thêm.
Trong nền, lệnh này sử dụng buildpacks
và Cloud Build
của Google Cloud để tự động tạo hình ảnh vùng chứa từ mã nguồn của bạn mà không cần cài đặt Docker trên máy hoặc thiết lập gói bản dựng hoặc Cloud Build. Tức là một lệnh duy nhất được mô tả ở trên sẽ thực hiện những việc mà trước đây cần có các lệnh gcloud builds submit
và gcloud run deploy
.
Nếu bạn đã cung cấp Dockerfile(như chúng tôi đã làm trong kho lưu trữ này), thì Cloud Build sẽ sử dụng tệp này để tạo hình ảnh vùng chứa thay vì dựa vào các gói bản dựng để tự động phát hiện và tạo hình ảnh vùng chứa. Để tìm hiểu thêm về gói xây dựng, hãy xem tài liệu.
Xem lại nhật ký Cloud Build trong Console.
Xem lại hình ảnh Docker đã tạo trong Artifact Registry (Cơ sở lưu trữ cấu phần phần mềm).
Mở cloud-run-source-deploy/devai-api
và xem xét các lỗ hổng được phát hiện tự động. Kiểm tra những lỗi có cách khắc phục và xem cách khắc phục dựa trên nội dung mô tả.
Xem lại thông tin chi tiết về phiên bản Cloud Run trong Cloud Console.
Kiểm thử điểm cuối bằng cách chạy lệnh curl.
curl -X POST \
-H "Content-Type: application/json" \
-d '{"prompt": "Create HTML, CSS and JavaScript using React.js framework to implement Login page with username and password fields, validation and documentation. Provide complete implementation, do not omit anything."}' \
$(gcloud run services list --filter="(devai-api)" --format="value(URL)")/generate
(MỤC KHÔNG BẮT BUỘC) Thiết lập Cloud Workstation
Máy trạm trên đám mây cung cấp môi trường phát triển được quản lý trên Google Cloud với khả năng bảo mật tích hợp và môi trường phát triển được định cấu hình sẵn nhưng có thể tuỳ chỉnh. Thay vì yêu cầu nhà phát triển cài đặt phần mềm và chạy tập lệnh thiết lập, bạn có thể tạo cấu hình máy trạm chỉ định môi trường của mình theo cách có thể tái tạo. Mọi nội dung cập nhật đối với cấu hình máy trạm sẽ tự động áp dụng cho máy trạm trong lần khởi động tiếp theo. Nhà phát triển truy cập vào máy trạm thông qua một IDE dựa trên trình duyệt, từ nhiều trình soạn thảo mã cục bộ (chẳng hạn như VSCode hoặc IDE JetBrains như IntelliJ IDEA Ultimate và PyCharm Professional) hoặc thông qua SSH.
Máy trạm trên đám mây sử dụng các tài nguyên sau của Google Cloud để quản lý môi trường phát triển của bạn:
- Nhóm máy trạm xác định một nhóm máy trạm ở một khu vực cụ thể và mạng VPC mà các máy trạm đó được đính kèm. Các cụm máy trạm không liên quan đến các cụm Google Kubernetes Engine (GKE).
- Cấu hình máy trạm đóng vai trò là mẫu cho máy trạm. Cấu hình máy trạm xác định các chi tiết như loại thực thể máy ảo (VM) của máy trạm, bộ nhớ cố định, môi trường xác định hình ảnh vùng chứa, IDE hoặc Trình soạn thảo mã cần sử dụng, v.v. Quản trị viên và nhóm nền tảng cũng có thể sử dụng các quy tắc Quản lý danh tính và quyền truy cập (IAM) để cấp quyền truy cập cho các nhóm hoặc cho từng nhà phát triển.
- Workstations (Máy trạm) là các môi trường phát triển được định cấu hình sẵn, cung cấp IDE trên đám mây, công cụ ngôn ngữ, thư viện và nhiều tính năng khác. Bạn có thể khởi động hoặc dừng máy trạm theo yêu cầu và chạy trên máy ảo Compute Engine trong dự án của mình, với một ổ đĩa cố định được đính kèm để lưu trữ dữ liệu giữa các phiên.
Quản trị viên và nhóm nền tảng tạo cấu hình máy trạm để chia sẻ với nhóm phát triển. Mỗi nhà phát triển tạo một máy trạm dựa trên cấu hình máy trạm.
Trong lớp học này, bạn đang sử dụng IDE dựa trên trình duyệt, nhưng Máy trạm trên đám mây cũng hỗ trợ các giao diện phát triển phổ biến khác:
- Bạn có thể sử dụng IDE JetBrains cục bộ của riêng mình thông qua JetBrains Gateway
- Nếu sử dụng VSCode cục bộ, bạn cũng có thể truy cập vào máy trạm để phát triển từ xa thông qua SSH.
- Bạn cũng có thể thiết lập SSH và thậm chí là đường hầm TCP đến Workstation từ máy cục bộ
(MỤC KHÔNG BẮT BUỘC) Tạo cụm Workstations
Các bước này đã được thực thi trong quá trình thiết lập lớp học – bạn không cần chạy các bước này.
Các bước này được đưa vào để hướng dẫn cách thiết lập cụm, cấu hình và máy trạm của Cloud Workstations.
Xem lại phần này rồi chuyển sang phần Nền tảng Forge.
Tạo cụm Workstations:
gcloud workstations clusters create ws-cluster --region=us-central1
Tạo cấu hình Workstation
gcloud workstations configs create devai-config \
--cluster=ws-cluster \
--machine-type=e2-standard-8 \
--region=us-central1 \
--running-timeout=21600 \
--idle-timeout=1800 \
--container-predefined-image=codeoss \
--pd-disk-size=200 \
--pd-disk-type=pd-standard \
--service-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com \
--pool-size=1
Tạo máy trạm
gcloud workstations create devai-workstation \
--cluster=ws-cluster \
--config=devai-config \
--region=us-central1
Xem các máy trạm có sẵn trong Cloud Console. Khởi động và chạy "devai-workstation
".
Bật "Gemini
" ở góc dưới bên phải, làm theo quy trình đăng nhập trong thẻ trình duyệt mới và sao chép mã đã tạo trở lại bảng điều khiển để hoàn tất quy trình đăng nhập.
Mở cuộc trò chuyện "Gemini
" trên bảng điều khiển bên trái rồi hỏi Gemini:
"You are a Cloud Workstations Product Manager, tell me about Cloud Workstations
".
"You are Cloud Workstations Product Manager, Can I create my custom Cloud Workstations image with my company tools so new developers can onboard in minutes?
".
(KẾT THÚC PHẦN KHÔNG BẮT BUỘC)
13. Nền tảng Forge
Forge là một nền tảng cho phép nhà phát triển xây dựng các ứng dụng tích hợp với các sản phẩm của Atlassian, chẳng hạn như Jira, Confluence, Compass và Bitbucket.
Cài đặt Forge CLI
Chạy các lệnh bên dưới trong dòng lệnh.
Tải Trình quản lý phiên bản nút ( nvm) xuống và cung cấp trình quản lý này trên đường dẫn trong phiên thiết bị đầu cuối hiện tại.
cd ~/github/genai-for-developers
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Cài đặt nvm.
Chọn bản phát hành LTS Node.js mới nhất bằng cách chạy lệnh sau trong dòng lệnh:
nvm install --lts
nvm use --lts
Cài đặt Forge CLI trên toàn hệ thống bằng cách chạy:
npm install -g @forge/cli
Trong lớp học này, chúng ta sẽ sử dụng các biến môi trường để đăng nhập.
Thiết lập dự án JIRA
Sử dụng tài khoản cá nhân để tạo/xem dự án JIRA.
Xem lại các dự án JIRA hiện có: https://admin.atlassian.com/
Tạo một dự án JIRA mới bằng tài khoản cá nhân của bạn.
Truy cập vào https://team.atlassian.com/your-work rồi nhấp vào , sau đó chọn
. Sau đó, hãy chọn "JIRA Software" (Phần mềm JIRA) – "Thử ngay". Làm theo lời nhắc để hoàn tất việc tạo dự án/trang web.
Chọn JIRA Software.
Tạo dự án mới.
14. Mã thông báo API Atlassian
Tạo hoặc sử dụng mã thông báo API Atlassian hiện có để đăng nhập vào CLI.
CLI sử dụng mã thông báo của bạn khi chạy các lệnh.
- Truy cập vào https://id.atlassian.com/manage/api-tokens.
- Nhấp vào Tạo mã thông báo API.
- Nhập nhãn để mô tả mã thông báo API. Ví dụ: forge-api-token.
- Nhấp vào Tạo.
- Nhấp vào Sao chép vào bảng nhớ tạm rồi đóng hộp thoại.
Chạy lệnh dưới đây trong dòng lệnh của Cloud Workstations.
Đăng nhập vào Forge CLI để bắt đầu sử dụng các lệnh Forge.
Đặt địa chỉ email JIRA/FORGE. Thay thế bằng địa chỉ email của bạn.
export FORGE_EMAIL=your-email
Đặt mã thông báo API Forge. Thay thế bằng mã thông báo API JIRA của bạn.
export FORGE_API_TOKEN=your-jira-api-token
Kiểm thử forge cli bằng cách chạy lệnh bên dưới. Trả lời "No
" khi được yêu cầu thu thập số liệu phân tích.
forge settings set usage-analytics false
Kiểm tra xem bạn đã đăng nhập hay chưa.
forge whoami
Kết quả mẫu.
Logged in as John Green (johngreen@email.com) Account ID: 123090:aaabbcc-076a-455c-99d0-d1aavvccdd
Tạo ứng dụng Forge
Kiểm tra để đảm bảo bạn đang ở thư mục "~/github/genai-for-developers
".
Chạy lệnh để tạo ứng dụng Forge.
forge create
Sử dụng các giá trị sau khi được nhắc:
- Tên ứng dụng:
devai-jira-ui-qwiklabs
- Chọn danh mục:
UI Kit
- Chọn một sản phẩm:
Jira
- Chọn một mẫu:
jira-issue-panel
Thay đổi thành thư mục ứng dụng.
cd devai-jira-ui-qwiklabs/
Chạy lệnh triển khai.
forge deploy
Kết quả mẫu:
Deploying your app to the development environment. Press Ctrl+C to cancel. Running forge lint... No issues found. ✔ Deploying devai-jira-ui-qwiklabs to development... ℹ Packaging app files ℹ Uploading app ℹ Validating manifest ℹ Snapshotting functions ℹ Deploying to environment ✔ Deployed Deployed devai-jira-ui-qwiklabs to the development environment.
Cài đặt ứng dụng.
forge install
Sử dụng các giá trị sau khi được nhắc:
- Chọn một sản phẩm:
Jira
- Nhập URL của trang web:
your-domain.atlassian.net
Kết quả mẫu:
Select the product your app uses. ? Select a product: Jira Enter your site. For example, your-domain.atlassian.net ? Enter the site URL: genai-for-developers.atlassian.net Installing your app onto an Atlassian site. Press Ctrl+C to cancel. ? Do you want to continue? Yes ✔ Install complete! Your app in the development environment is now installed in Jira on genai-for-developers.atlassian.net
Mở trang web JIRA và tạo một tác vụ JIRA mới có nội dung mô tả sau:
Create HTML, CSS and JavaScript using React.js framework to implement Login page with username and password fields, validation and documentation. Provide complete implementation, do not omit anything.
Khi mở tác vụ, bạn sẽ thấy nút "devai-jira-ui-qwiklabs
".
Nhấp vào nút này rồi xem lại các thay đổi trong giao diện người dùng.
Xem nhật ký phụ trợ của Forge.
forge logs
Atlassian Developer Console
Bạn cũng có thể xem và quản lý các ứng dụng đã triển khai trong Atlassian Developer Console.
Xem lại nhật ký – chuyển sang môi trường Development
,
Xem lại tệp kê khai và mã nguồn của ứng dụng Forge
Mở tệp "devai-jira-ui-qwiklabs/manifest.yml
" và sử dụng tính năng Hỗ trợ mã Gemini để giải thích tệp này.
Giải thích về bài đánh giá.
Mở các tệp sau và yêu cầu Gemini Code Assist giải thích:
devai-jira-ui-qwiklabs/src/frontend/index.jsx
devai-jira-ui-qwiklabs/src/resolvers/index.js
Cập nhật ứng dụng Forge bằng điểm cuối Cloud Run của API DevAI
Kiểm tra xem bạn đã đặt GCP PROJECT ID hay chưa:
gcloud config get project
Nếu không, hãy thiết lập dự án GCP bằng mã dự án trên trang phòng thí nghiệm Qwiklabs:
Ví dụ: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR_QWIKLABS_PROJECT_ID
Đặt URL dịch vụ Cloud Run:
export DEVAI_API_URL=$(gcloud run services list --filter="(devai-api)" --format="value(URL)")
forge variables set DEVAI_API_URL $DEVAI_API_URL
Xác nhận bằng cách chạy lệnh bên dưới:
forge variables list
Kết quả mẫu
Cập nhật tệp kê khai và mã ứng dụng Forge
Bạn có thể tìm thấy các đoạn mã này trong kho lưu trữ trong thư mục sample-devai-jira-ui
.
Mở tệp kê khai trong trình chỉnh sửa: devai-jira-ui-qwiklabs/manifest.yml
Thêm các dòng bên dưới vào cuối tệp – thay thế điểm cuối Cloud Run bằng điểm cuối mà bạn đã triển khai.
permissions:
scopes:
- read:jira-work
- write:jira-work
external:
fetch:
client:
- devai-api-gjerpi6qqq-uc.a.run.app/generate # replace with YOUR CLOUD RUN URL
Mở trình phân giải/tệp chỉ mục trong trình chỉnh sửa: devai-jira-ui-qwiklabs/src/resolvers/index.js
Thêm các dòng bên dưới sau hàm getText
hiện có.
resolver.define('getApiKey', (req) => {
return process.env.LLM_API_KEY;
});
resolver.define('getDevAIApiUrl', (req) => {
return process.env.DEVAI_API_URL;
});
Mở tệp giao diện người dùng/tệp chỉ mục trong trình chỉnh sửa: devai-jira-ui-qwiklabs/src/frontend/index.jsx
Thay thế index.jsx
bằng nội dung bên dưới. Cập nhật đường liên kết đến tên người dùng/kho lưu trữ GitLab của bạn.
Bạn cần cập nhật YOUR-GIT-USERID và YOUR-GIT-REPO ở hai vị trí.
Tìm dòng này trong tệp và thực hiện các thay đổi:
https://gitlab.com/
YOUR-GIT-USERID/YOUR-GIT-REPO
/-/merge_requests
import React from 'react';
import ForgeReconciler, { Text, Link, useProductContext } from '@forge/react';
import { requestJira } from '@forge/bridge';
import { invoke } from '@forge/bridge';
import api, { route, assumeTrustedRoute } from '@forge/api';
// const apiKey = await invoke("getApiKey")
const devAIApiUrl = await invoke("getDevAIApiUrl")
const App = () => {
const context = useProductContext();
const [description, setDescription] = React.useState();
const fetchDescriptionForIssue = async () => {
const issueId = context?.extension.issue.id;
const res = await requestJira(`/rest/api/2/issue/${issueId}`);
const data = await res.json();
// const genAI = new GoogleGenerativeAI(apiKey);
// const model = genAI.getGenerativeModel({ model: "gemini-pro"});
// const prompt = `You are principal software engineer at Google and given requirements below to implement.\nPlease provide implementation details and documentation.\n\nREQUIREMENTS:\n\n${data.fields.description}`
// const result = await model.generateContent(prompt);
// const text = result.response.text();
// const jsonText = JSON.stringify(text);
const bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;
const generateRes = await api.fetch(devAIApiUrl+'/generate',
{
body: bodyGenerateData,
method: 'post',
headers: { 'Content-Type': 'application/json' },
}
)
const resData = await generateRes.text();
const jsonText = JSON.stringify(resData);
const bodyData = `{
"body": ${jsonText}
}`;
console.log("bodyData", bodyData)
// Add Gemini response as a comment on the JIRA issue
await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: bodyData
});
// Add link to the GitLab merge request page as a comment
await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: `{"body": "[GitLab Merge Request|https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests]"}`
});
return "Response will be added as a comment. Please refresh in a few moments.";
};
React.useEffect(() => {
if (context) {
fetchDescriptionForIssue().then(setDescription);
}
}, [context]);
return (
<>
<Text>{description}</Text>
<Link href='https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests' openNewTab={true}>GitLab Merge Request</Link>
</>
);
};
ForgeReconciler.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
Triển khai lại ứng dụng Forge
Thêm phần phụ thuộc trong tệp package.json
:
"@forge/api": "4.0.0",
Cài đặt phần phụ thuộc:
npm install
Triển khai ứng dụng đã cập nhật:
forge deploy
Kết quả mẫu:
ℹ Uploading app ℹ Validating manifest ℹ Snapshotting functions ℹ Deploying to environment ✔ Deployed Deployed devai-jira-ui-qwiklabs to the development environment. We've detected new scopes or egress URLs in your app. Run forge install --upgrade and restart your tunnel to put them into effect.
Cài đặt ứng dụng đã cập nhật:
forge install --upgrade
Kết quả mẫu:
Upgrading your app on the Atlassian site. Your app will be upgraded with the following additional scopes: - read:jira-work - write:jira-work Your app will exchange data with the following urls: - devai-api-7su2ctuqpq-uc.a.run.app ? Do you want to continue? Yes ✔ Upgrade complete! Your app in the development environment is now the latest in Jira on genai-for-developers.atlassian.net.
Kiểm thử ứng dụng Forge
Mở hoặc tạo một việc cần làm JIRA mới trong dự án JIRA.
Bạn sẽ cần xoá bảng điều khiển trước đó nếu đã thêm bảng điều khiển đó.
Nhấp vào "...
" rồi chọn xoá khỏi trình đơn. Sau đó, bạn có thể nhấp lại vào nút này.
Kiểm tra bình luận trên Jira
Sau khi bạn nhận được phản hồi từ API DEVAI, hai nhận xét sẽ được thêm vào vấn đề JIRA.
- Yêu cầu hợp nhất trên GitLab
- Thông tin chi tiết về việc triển khai câu chuyện người dùng Gemini
Chuyển đổi giữa các thẻ "History
" và "Comments
" để làm mới chế độ xem.
Bật tính năng tạo Yêu cầu hợp nhất trên GitLab
Mở tệp devai-api/app/routes.py
và bỏ ghi chú các dòng bên dưới trong phương thức generate_handler
:
print(f"{response.text}\n")
# resp_text = response.candidates[0].content.parts[0].text
# pr_prompt = f"""Create GitLab merge request using provided details below.
# Create new files, commit them and push them to opened merge request.
# When creating new files, remove the lines that start with ``` before saving the files.
# DETAILS:
# {resp_text}
# """
# print(pr_prompt)
# agent.invoke(pr_prompt)
Triển khai lại ứng dụng Cloud Run
Kiểm tra để đảm bảo bạn đang ở đúng thư mục.
cd ~/github/genai-for-developers/devai-api
Nếu đang sử dụng cùng một phiên dòng lệnh, bạn có thể vẫn đặt tất cả các biến môi trường.
Kiểm tra bằng cách chạy "echo $GITLAB_REPOSITORY
" trong thiết bị đầu cuối.
Hãy làm theo các bước sau để đặt lại các biến này nếu bạn đã mở một phiên dòng lệnh mới.
Hãy nhớ đặt lại các biến môi trường bắt buộc trước khi triển khai lại ứng dụng.
Lệnh này yêu cầu bạn cập nhật tên người dùng và tên kho lưu trữ GitLab.
export GITLAB_REPOSITORY="USERID/REPOSITORY"
Thiết lập phần còn lại của các biến môi trường:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api
export PROJECT_ID=$(gcloud config get-value project)
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true
Bộ công cụ GitLab sẽ sử dụng nhánh "devai
" để đẩy các thay đổi cho yêu cầu hợp nhất.
Xác minh rằng bạn đã tạo nhánh đó.
Triển khai ứng dụng lên Cloud Run.
gcloud run deploy "$SERVICE_NAME" \
--source=. \
--region="$LOCATION" \
--allow-unauthenticated \
--service-account vertex-client \
--set-env-vars PROJECT_ID="$PROJECT_ID" \
--set-env-vars LOCATION="$LOCATION" \
--set-env-vars GITLAB_URL="$GITLAB_URL" \
--set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
--set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
--set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
--set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
--set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
--set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
--set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
--set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
--update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
--update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
--update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
--min-instances=1 \
--max-instances=3
Xác minh quy trình tích hợp toàn diện
Bắt đầu quy trình từ tác vụ JIRA bằng cách nhấp lại vào nút này và xác minh kết quả trong kho lưu trữ GitLab, trong phần Yêu cầu hợp nhất và LangSmith.
Thông tin chi tiết về yêu cầu hợp nhất trên GitLab.
Dấu vết LLM LangSmith
Mở cổng LangSmith và xem lại dấu vết LLM cho lệnh gọi tạo vấn đề JIRA.
Dấu vết LLM LangSmith mẫu.
(MỤC KHÔNG BẮT BUỘC) Đẩy các thay đổi của bạn vào kho lưu trữ GitHub
Truy cập vào trang web GitHub và tạo một kho lưu trữ mới để đẩy các thay đổi cho lớp học này vào kho lưu trữ cá nhân của bạn.
Quay lại phiên bản máy trạm trên đám mây và đặt tên người dùng và email Git trong thiết bị đầu cuối.
Cập nhật các giá trị trước khi chạy các lệnh.
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
Tạo khoá SSH và thêm khoá đó vào kho lưu trữ GitHub.
Cập nhật email của bạn trước khi chạy các lệnh.
Không nhập cụm mật khẩu và nhấn Enter nhiều lần để hoàn tất quá trình tạo khoá.
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á công khai đã tạo vào tài khoản GitHub của bạn.
Mở https://github.com/settings/keys rồi nhấp vào "New SSH key
".
Đối với tên khoá, hãy sử dụng "qwiklabs-key
" và sao chép/dán kết quả từ lệnh cuối cùng.
Quay lại cửa sổ dòng lệnh, xác nhận và đẩy các thay đổi.
cd ~/github/genai-for-developers
git remote rm origin
Đặt nguồn gốc từ xa bằng kho lưu trữ đã tạo ở trên.
Thay thế bằng URL kho lưu trữ của bạn.
git remote add origin git@github.com:YOUR-GITHUB-USERID/YOUR-GITHUB-REPO.git
Thêm, xác nhận và đẩy các thay đổi.
git add .
git commit -m "lab changes"
git push -u origin main
15. 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ội dung chúng ta đã đề cập:
- Cách triển khai ứng dụng Cloud Run để tích hợp với các API Gemini.
- Cách tạo và triển khai ứng dụng Atlassian Forge cho JIRA.
- Cách sử dụng Tác nhân phản ứng LangChain để tự động hoá các tác vụ trong GitLab.
- Cách xem lại dấu vết LLM trong LangSmith.
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.