Triển khai câu chuyện người dùng JIRA bằng GenAI

Triển khai câu chuyện người dùng JIRA bằng GenAI

Thông tin về lớp học lập trình này

subjectLần cập nhật gần đây nhất: thg 3 24, 2025
account_circleTác giả: Andrey Shakirov

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âu chuyện người dùng JIRA bằng GenAI.

a4ba5d8788dc40.png

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 Gemini API
  • Tạo và triển khai ứng dụng Atlassian Forge cho JIRA
  • Sử dụng Tác nhân phản ứng LangChain để tự động hoá tác vụ GitLab
  • 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

  1. Đă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.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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.

bc3c899ac8bcf488.png

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

e1e9ad314691368a.png

Bật Gemini cho API Google Cloud:

990a0ceea7d05531.png

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ử.

ed120d672468b412.png

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

Bạn có một số cách để kiểm thử lời nhắ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ế 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 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.

4. Đơn đăng ký xem xét

Tạo tài khoản dịch vụ

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.

3e0c761ca41f315e.png

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ụ.

PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME
='vertex-client'
DISPLAY_NAME
='Vertex Client'

gcloud iam service
-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID --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"

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"

Nếu bạn được nhắc uỷ quyền, hãy nhấp vào "Uỷ quyền" để tiếp tục.

6356559df3eccdda.png

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

Sao chép kho lưu trữ GitHub

Sao chép kho lưu trữ GitHub.

git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git

Mở Trình chỉnh sửa Cloud Shell

7e71f46b6c7b67ca.png

Sử dụng mục trình đơn "File / Open Folder", hãy mở "genai-for-developers".

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.

34054e1fad005ff8.png

Xem lại nội dung giải thích của Gemini về tệp đã chọn.

f73af988a723142.png

5. Cấu hình Kho lưu trữ và Bộ công cụ GitLab

Trong lớp học này, bạn sẽ sử dụng GitLabToolkit để tự động tạo yêu cầu hợp nhất trên GitLab.

Tổng quan về 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ả.

Tổng quan về Bộ công cụ 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ữ.

Thiết lập dự án GitLab

Mở GitLab, tạo một dự án 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

c205fd7524c456dc.png

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.

6. Chuẩn bị triển khai ứng dụng trên Cloud Run

Quay lại Trình chỉnh sửa Cloud Shell và sử dụng cửa sổ dòng lệnh hiện có hoặc mở một cửa sổ dòng lệnh mới.

941f0c1692037664.png

Đị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 GITLAB_PERSONAL_ACCESS_TOKEN. Đâ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. Bạn cũng cần xuất biến môi trường: export GITLAB_PERSONAL_ACCESS_TOKEN

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"

119489def27115c8.png

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"

Cấu hình theo dõi LLM LangSmith

Thiết lập tài khoản nếu bạn muốn xem thông tin theo dõi tác nhân trong LangSmith, nếu không, hãy thực thi các lệnh như hiện có.

Tạo tài khoản LangSmith và tạo khoá API dịch vụ trong phần Cài đặt. https://smith.langchain.com/settings

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

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

Tạo khoá API

Tạo khoá API mới trong phần Cloud Console (Bảng điều khiển Google Cloud)/API và dịch vụ / Thông tin xác thực.

Khoá này sẽ được dùng để xác thực các lệnh gọi API JIRA đến ứng dụng Cloud Run.

Đối với môi trường phát hành chính thức, bạn sẽ định cấu hình các quy tắc hạn chế đối với ứng dụng và API cho khoá API đã tạo. Các quy định hạn chế về ứng dụng giới hạn việc sử dụng khoá API ở một số trang web cụ thể(ví dụ: phiên bản JIRA của bạn).

Đặt các biến môi trường cần thiết để triển khai dịch vụ Cloud Run.

export DEVAI_API_KEY=your-api-key

Tạo khoá bí mật trong Trình quản lý khoá bí mật

Đố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, Khoá API và Khoá API LangChain trong Cloud Run.

Tạo và lưu trữ các bí mật bắt buộc trong Trình quản lý bí mật.

echo -n $DEVAI_API_KEY | \
 gcloud secrets create DEVAI_API_KEY
\
 
--data-file=-

echo
-n $JIRA_API_TOKEN | \
 gcloud secrets create JIRA_API_TOKEN
\
 
--data-file=-

echo
-n $GITLAB_PERSONAL_ACCESS_TOKEN | \
 gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN
\
 
--data-file=-

echo
-n $LANGCHAIN_API_KEY | \
 gcloud secrets create LANGCHAIN_API_KEY
\
 
--data-file=-

7. Triển khai Devai-API cho Cloud Run

Kiểm tra để đảm bảo bạn đang ở đúng thư mục.

cd ~/genai-for-developers/devai-api

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" \
  --update-secrets="DEVAI_API_KEY=DEVAI_API_KEY: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.

5c122a89dd11822e.png

Trong nền, lệnh này sử dụng buildpacksCloud 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 các 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ó lệnh gcloud builds submitgcloud 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).

Xem lại thông tin chi tiết về phiên bản Cloud Run trong Cloud Console.

Kiểm thử ứng dụng

Kiểm thử điểm cuối bằng cách chạy lệnh curl.

Cập nhật bằng URL dịch vụ Cloud Run trước khi chạy lệnh.

Ví dụ:

curl -H "X-devai-api-key: $DEVAI_API_KEY" https://devai-api-1110000001.us-central1.run.app/test

8. Tự động hoá việc triển khai story

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.

eda6f59ff15df25e.png

Cài đặt Forge CLI

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 lập trình này, chúng ta sẽ sử dụng biến môi trường để đăng nhập.

e4e4e59cf8622e3f.png

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 8654143154cb8665.png, sau đó chọn 47b253090a08932.png. 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.

5bab2a96e3b81383.png

Chọn JIRA Software.

785bc4d8bf920403.png

Tạo dự án mới.

8a6e7cdc8224ffa0.png

Tạo 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.

  1. Truy cập vào https://id.atlassian.com/manage/api-tokens.
  2. Nhấp vào Tạo mã thông báo API.
  3. Nhập nhãn để mô tả mã thông báo API. Ví dụ: forge-api-token.
  4. Nhấp vào Tạo.
  5. Nhấp vào Sao chép vào bảng nhớ tạm rồi đóng hộp thoại.

Định cấu hình chế độ cài đặt môi trường Forge

Quay lại Cloud Console và chạy các lệnh bên dưới trong dòng lệnh.

Đă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 "~/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

bc94e2da059f15cf.png

Thay đổi thành thư mục ứng dụng.

cd devai-jira-ui-qwiklabs/

Chạy lệnh để cài đặt các phần phụ thuộc.

npm install

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.

a64378e775125654.png

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.

10281496d8181597.png

Xem xét nhật ký – chuyển sang môi trường Development,

d5c3b1a18dee166e.png

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 cấu hình.

8710dc7cd343a6a4.png

Giải thích về bài đánh giá.

e4c9052a0337527d.png

Mở các tệp sau và yêu cầu tính năng Gemini Code Assist giải thích về các tệp đó:

  • devai-jira-ui-qwiklabs/src/frontend/index.jsx
  • devai-jira-ui-qwiklabs/src/resolvers/index.js

3283420f190cda21.png

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

Đặt khoá API DEVAI:

export DEVAI_API_KEY=api-key-that-you-created

forge variables set --encrypt DEVAI_API_KEY $DEVAI_API_KEY

Xác nhận bằng cách chạy lệnh bên dưới:

forge variables list

Kết quả mẫu

f63a751f0d6211ff.png

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/create-gitlab-mr # 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.DEVAI_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 devAIApiKey = 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 bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;

   
const generateRes = await api.fetch(devAIApiUrl+'/create-gitlab-mr,
     
{
       
body: bodyGenerateData,
       
method: 'post',
       
headers: {
         
'Content-Type': 'application/json',
         
'x-devai-api-key': devAIApiKey,
         
},
     
}
   
)

   
const resData = await generateRes.text();

   
// 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",

Chạy lệnh để cài đặt các 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

ef17c7da9b2962d8.png

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.

460503e8b2014b52.png

Kiểm tra bình luận trên Jira

Sau khi bạn nhận được phản hồi từ API DEVAI, một nhận xét sẽ được thêm vào vấn đề JIRA.

  • Đường liên kết đến yêu cầu hợp nhất trên GitLab

Chuyển đổi giữa các thẻ "History" và "Comments" để làm mới chế độ xem.

9539d2bd3cbdad28.png

Xác minh yêu cầu hợp nhất GitLab

Mở GitLab và kiểm tra các yêu cầu hợp nhất mới trong dự án của bạn.

4c2345a89bfe71ee.png

fa3a552923cd70f1.png

Dấu vết LLM LangSmith

Nếu bạn đã định cấu hình tính năng theo dõi LLM, hãy mở cổng thông tin LangSmith và xem lại dấu vết LLM cho lệnh gọi tạo yêu cầu hợp nhất GitLab.

Dấu vết LLM LangSmith mẫu.

1ae0f88ab885f69.png

9. Đẩy các thay đổi của bạn vào kho lưu trữ GitHub

(PHẦN KHÔNG BẮT BUỘC)

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 Cloud Console 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 ~/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

10. 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 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ụ 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.