การติดตั้งใช้งาน User Story ของ JIRA ด้วย GenAI

1. ภาพรวม

ในชั้นเรียนนี้ คุณจะได้สร้างโซลูชันเพื่อทำให้การติดตั้งใช้งานเรื่องราวใน JIRA เป็นระบบอัตโนมัติด้วย GenAI

5351e028356cd3ac.png

สิ่งที่คุณจะได้เรียนรู้

ห้องทดลองประกอบด้วยส่วนหลักๆ หลายส่วนดังนี้

  • ติดตั้งใช้งานแอปพลิเคชัน Cloud Run เพื่อผสานรวมกับ Gemini API
  • สร้างและทำให้แอป Atlassian Forge สำหรับ JIRA ใช้งานได้
  • LangChain ReAct Agent สำหรับการทำงานอัตโนมัติของ GitLab

ข้อกำหนดเบื้องต้น

  • แล็บนี้ถือว่าคุณคุ้นเคยกับสภาพแวดล้อม Cloud Console และ Cloud Shell

2. การตั้งค่าและข้อกำหนด

การตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์

  1. ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณจะอัปเดตได้ทุกเมื่อ
  • รหัสโปรเจ็กต์จะต้องไม่ซ้ำกันสำหรับโปรเจ็กต์ Google Cloud ทั้งหมดและจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) คอนโซล Cloud จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นจะเป็นอะไร ในโค้ดแล็บส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (ปกติจะระบุเป็น PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสอื่นแบบสุ่มได้ หรือจะลองใช้อุปกรณ์ของคุณเองเพื่อดูว่าอุปกรณ์พร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงชื่อหลังจากขั้นตอนนี้ไม่ได้ และชื่อนี้จะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์
  • โปรดทราบว่ามีค่าที่ 3 ซึ่งเป็นหมายเลขโปรเจ็กต์ที่ API บางรายการใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 รายการนี้ได้ในเอกสารประกอบ
  1. ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตามโค้ดแล็บนี้จะไม่เสียค่าใช้จ่ายมากนัก หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินหลังจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างไว้หรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

การตั้งค่าสภาพแวดล้อม

เปิดแชท Gemini

bc3c899ac8bcf488.png

หรือพิมพ์ "ถาม Gemini" ในแถบค้นหา

e1e9ad314691368a.png

เปิดใช้ Cloud AI Companion API

66cb6e561e384bbf.png

คลิก "Start chatting" แล้วทำตามคำถามตัวอย่างหรือพิมพ์พรอมต์ของคุณเองเพื่อลองใช้

5482c153eef23126.png

พรอมต์ให้ลองใช้

  • อธิบาย Cloud Run ใน 5 ประเด็นสำคัญ
  • คุณเป็นผู้จัดการผลิตภัณฑ์ Google Cloud Run ให้อธิบาย Cloud Run แก่นักเรียนเป็นประเด็นสำคัญสั้นๆ 5 ข้อ
  • คุณเป็นผู้จัดการผลิตภัณฑ์ Google Cloud Run อธิบาย Cloud Run ให้แก่นักพัฒนาซอฟต์แวร์ Kubernetes ที่ได้รับการรับรองใน 5 ประเด็นสำคัญสั้นๆ
  • คุณเป็นผู้จัดการผลิตภัณฑ์ Google Cloud Run อธิบายให้นักพัฒนาซอฟต์แวร์อาวุโสทราบถึงกรณีที่ควรใช้ Cloud Run กับ GKE โดยใช้ประเด็นสำคัญสั้นๆ 5 ข้อ

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเขียนพรอมต์ที่ดีขึ้นได้ในคู่มือการใช้พรอมต์

วิธีที่ Gemini สำหรับ Google Cloud ใช้ข้อมูลของคุณ

ความมุ่งมั่นด้านความเป็นส่วนตัวของ Google

Google เป็นหนึ่งในบริษัทแรกๆ ในอุตสาหกรรมที่เผยแพร่ความมุ่งมั่นด้านความเป็นส่วนตัวเกี่ยวกับ AI/ML ซึ่งระบุความเชื่อของเราว่าลูกค้าควรมีความปลอดภัยและการควบคุมข้อมูลของตนเองในระดับสูงสุดที่จัดเก็บไว้ในระบบคลาวด์

ข้อมูลที่คุณส่งและได้รับ

คําถามที่คุณถาม Gemini รวมถึงข้อมูลหรือโค้ดที่ป้อนซึ่งส่งให้ Gemini เพื่อวิเคราะห์หรือดำเนินการให้เสร็จสมบูรณ์เรียกว่าพรอมต์ คำตอบหรือการเติมโค้ดที่คุณได้รับจาก Gemini เรียกว่า "คำตอบ" Gemini จะไม่ใช้พรอมต์หรือคำตอบของคุณเป็นข้อมูลในการฝึกโมเดล

การเข้ารหัสพรอมต์

เมื่อคุณส่งพรอมต์ไปยัง Gemini ระบบจะเข้ารหัสข้อมูลของคุณระหว่างการส่งเป็นอินพุตให้กับโมเดลพื้นฐานใน Gemini

ข้อมูลโปรแกรมที่สร้างขึ้นจาก Gemini

Gemini ได้รับการฝึกด้วยโค้ด Google Cloud ของบุคคลที่หนึ่งและโค้ดของบุคคลที่สามที่เลือก คุณมีหน้าที่รับผิดชอบต่อความปลอดภัย การทดสอบ และประสิทธิภาพของโค้ด รวมถึงการเติมโค้ด การสร้าง หรือการวิเคราะห์ที่ Gemini มีให้คุณ

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ Google จัดการพรอมต์ของคุณ

3. ตัวเลือกในการทดสอบพรอมต์

คุณทดสอบพรอมต์ได้หลายวิธี

Vertex AI Studio เป็นส่วนหนึ่งของแพลตฟอร์ม Vertex AI ของ Google Cloud ซึ่งออกแบบมาเพื่อลดความซับซ้อนและเร่งการพัฒนาและการใช้โมเดล Generative AI โดยเฉพาะ

Google AI Studio เป็นเครื่องมือบนเว็บสำหรับการสร้างต้นแบบและทดสอบการสร้างพรอมต์และ Gemini API

เว็บแอป Google Gemini (gemini.google.com) เป็นเครื่องมือบนเว็บที่ออกแบบมาเพื่อช่วยให้คุณสำรวจและใช้ประโยชน์จากความสามารถของโมเดล AI ของ Gemini ของ Google

4. (ส่วนที่ไม่บังคับ) สร้างบัญชีบริการ

ระบบได้ดําเนินการตามขั้นตอนเหล่านี้ในระหว่างการตั้งค่าห้องทดลองแล้ว คุณจึงไม่ต้องดําเนินการใดๆ

ขั้นตอนเหล่านี้มีไว้เพื่อแสดงวิธีตั้งค่าบัญชีบริการและบทบาท IAM

กลับไปที่ Google Cloud Console และเปิดใช้งาน Cloud Shell โดยคลิกไอคอนทางด้านขวาของแถบค้นหา

3e0c761ca41f315e.png

ในเทอร์มินัลที่เปิดอยู่ ให้เรียกใช้คําสั่งต่อไปนี้เพื่อสร้างบัญชีบริการและคีย์ใหม่

คุณจะใช้บัญชีบริการนี้เพื่อเรียก API ไปยัง Vertex AI Gemini API จากแอปพลิเคชัน Cloud Run

กำหนดค่ารายละเอียดโปรเจ็กต์โดยใช้รายละเอียดโปรเจ็กต์ Qwiklabs

ตัวอย่าง: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

สร้างบัญชีบริการและมอบหมายบทบาท

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

หากได้รับข้อความแจ้งให้ให้สิทธิ์ ให้คลิก "ให้สิทธิ์" เพื่อดำเนินการต่อ

6356559df3eccdda.png

เปิดใช้บริการที่จำเป็นเพื่อใช้ Vertex AI API และ Gemini Chat

gcloud services enable \
    generativelanguage.googleapis.com \
    aiplatform.googleapis.com \
    cloudaicompanion.googleapis.com \
    run.googleapis.com \
    cloudresourcemanager.googleapis.com
 

เปิดใช้บริการที่จำเป็นเพื่อใช้ Vertex AI API และ Gemini Chat

gcloud services enable \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    runapps.googleapis.com \
    workstations.googleapis.com \
    servicemanagement.googleapis.com \
    secretmanager.googleapis.com \
    containerscanning.googleapis.com

(END OF OPTIONAL SECTION)

5. ให้สิทธิ์เข้าถึง Cloud Workstations

เปิด Cloud Workstations ใน Cloud Console

ให้สิทธิ์เข้าถึง Cloud Workstation แก่นักเรียน Qwiklabs ที่พร้อมใช้งาน

คัดลอกชื่อผู้ใช้/อีเมล Qwiklabs ที่สร้างขึ้นสำหรับโปรเจ็กต์นี้ แล้วใช้เพื่อเพิ่มผู้ใช้หลัก เลือกเวิร์กสเตชันแล้วคลิก "PERMISSIONS"

ดูรายละเอียดด้านล่าง

5cbb861e4f272f7.png

คลิกปุ่ม "ADD PRINCIPAL"

วางอีเมลของนักเรียน Qwiklabs แล้วเลือกบทบาท "Cloud Workstations User"

dfe53b74453d80b1.png

คลิก "Start" แล้วคลิก "Launch" เพื่อเปิดเวิร์กสเตชัน แล้วทำตามขั้นตอนต่อไปนี้โดยใช้เทอร์มินัลในตัว

62dccf5c78880ed9.png

โคลนที่เก็บ GitHub

สร้างโฟลเดอร์และโคลนที่เก็บ GitHub

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

ใช้รายการเมนู "File / Open Folder" เพื่อเปิด "github/genai-for-developers"

6. เปิดใช้ฟีเจอร์ช่วยเขียนโค้ดของ Gemini

คลิกไอคอน "Gemini" แล้วคลิก "Login to Google Cloud" ที่มุมขวาล่าง

4a7f4640f66037f.png

8d31b61e23ebeea2.png

คลิกลิงก์ในเทอร์มินัลเพื่อเริ่มขั้นตอนการให้สิทธิ์

d8575b4066f67745.png

คลิก "เปิด" เพื่อไปยังลิงก์

3a7272fcb985ff5.png

เลือกบัญชีนักเรียน Qwiklabs แล้วคลิก "ลงชื่อเข้าใช้" ในหน้าจอถัดไป

79dc63009ce0ed49.png

คัดลอกรหัสยืนยัน

403845a5abc53635.png

กลับไปที่เทอร์มินัลและวางรหัส

5931f639fe69f5cb.png

รอให้การตรวจสอบสิทธิ์เสร็จสมบูรณ์ แล้วคลิก "เลือกโปรเจ็กต์ Google"

614beb055f7aa5e8.png

เลือกโปรเจ็กต์ Qwiklabs จากหน้าต่างป๊อปอัป

ตัวอย่าง

70ae6837db397e2a.png

เปิดไฟล์ "devai-api/app/routes.py" แล้วคลิกขวาที่ใดก็ได้ในไฟล์ แล้วเลือก "Gemini > Explain this" จากเมนูบริบท

32b902134440b7c3.png

ตรวจสอบคำอธิบายของ Gemini สำหรับไฟล์ที่เลือก

f78bfee770f6be93.png

7. ชุดเครื่องมือ LangChain

ชุดเครื่องมือ LangChain คือชุดเครื่องมือที่ออกแบบมาเพื่อปรับปรุงและเพิ่มประสิทธิภาพการพัฒนาแอปพลิเคชันด้วย LangChain ซึ่งจะมอบฟังก์ชันการทำงานที่หลากหลายโดยขึ้นอยู่กับชุดเครื่องมือแต่ละชุด แต่โดยทั่วไปแล้วจะช่วยในเรื่องต่อไปนี้

  • การเชื่อมต่อกับแหล่งข้อมูลภายนอก: เข้าถึงและรวมข้อมูลจาก API, ฐานข้อมูล และแหล่งที่มาภายนอกอื่นๆ ไว้ในแอปพลิเคชัน LangChain
  • เทคนิคพรอมต์ขั้นสูง: ใช้พรอมต์ที่สร้างไว้ล่วงหน้าหรือสร้างพรอมต์ที่กำหนดเองเพื่อเพิ่มประสิทธิภาพการโต้ตอบกับโมเดลภาษา
  • การสร้างและการจัดการเชน: สร้างเชนที่ซับซ้อนได้อย่างง่ายดายและจัดการเชนอย่างมีประสิทธิภาพ
  • การประเมินและการตรวจสอบ: วิเคราะห์ประสิทธิภาพของแอปพลิเคชันและเชนของ LangChain

เครื่องมือ LangChain ยอดนิยมบางรายการ ได้แก่

  • ชุดเครื่องมือของโปรแกรมที่ใช้เรียกใช้เอเจนต์: เครื่องมือสําหรับพัฒนาเอเจนต์ที่โต้ตอบกับโลกแห่งความเป็นจริงได้ผ่านการดำเนินการต่างๆ เช่น การท่องเว็บหรือการดำเนินการโค้ด
  • ชุดเครื่องมือการสร้างพรอมต์: คอลเล็กชันแหล่งข้อมูลสำหรับสร้างพรอมต์ที่มีประสิทธิภาพ

ชุดเครื่องมือ GitLab

ในบทแนะนำนี้ คุณจะใช้ Toolkit ของ GitLab เพื่อสร้างคำขอผสาน GitLab โดยอัตโนมัติ

เครื่องมือของ Gitlab มีเครื่องมือที่ช่วยให้ตัวแทน LLM โต้ตอบกับที่เก็บ Gitlab ได้ เครื่องมือนี้เป็น Wrapper สําหรับไลบรารี python-gitlab

เครื่องมือของ GitLab สามารถทำสิ่งต่อไปนี้

  • สร้างไฟล์ - สร้างไฟล์ใหม่ในที่เก็บ
  • อ่านไฟล์ - อ่านไฟล์จากที่เก็บ
  • อัปเดตไฟล์ - อัปเดตไฟล์ในที่เก็บ
  • สร้างคำขอดึงข้อมูล - สร้างคำขอดึงข้อมูลจากสาขาที่ทำงานของบอทไปยังสาขาฐาน
  • รับปัญหา - ดึงข้อมูลปัญหาจากที่เก็บ
  • รับปัญหา - ดึงข้อมูลรายละเอียดเกี่ยวกับปัญหาที่เฉพาะเจาะจง
  • แสดงความคิดเห็นเกี่ยวกับปัญหา - โพสต์ความคิดเห็นเกี่ยวกับปัญหาที่เฉพาะเจาะจง
  • ลบไฟล์ - ลบไฟล์ออกจากที่เก็บ

8. การกําหนดค่าที่เก็บและ Toolkit ของ GitLab

เปิด GitLab สร้างโปรเจ็กต์สาธารณะใหม่ และตั้งค่าโทเค็นการเข้าถึงโปรเจ็กต์ในส่วน "Settings / Access Tokens"

ใช้รายละเอียดต่อไปนี้

  • ชื่อโทเค็น: devai-api-qwiklabs
  • บทบาท: Maintainer
  • เลือกขอบเขต: api

112008c7894c3a19.png

คัดลอกและวางค่า Access Token ลงในไฟล์ชั่วคราวบนแล็ปท็อป ซึ่งจะใช้ในขั้นตอนถัดไป

9. เตรียมพร้อมเพื่อทำให้แอปพลิเคชันใช้งานได้ใน Cloud Run

กลับไปที่อินสแตนซ์ Cloud Workstations และใช้เทอร์มินัลที่มีอยู่หรือเปิดเทอร์มินัลใหม่

9f9682d2b7317e66.png

รับข้อมูลเข้าสู่ระบบสำหรับการเข้าถึงบัญชีผู้ใช้ผ่านขั้นตอนการให้สิทธิ์บนเว็บ

คลิกลิงก์แล้วทำตามขั้นตอนเพื่อสร้างรหัสยืนยัน

gcloud auth login

กำหนดค่ารายละเอียดโปรเจ็กต์โดยใช้รายละเอียดโปรเจ็กต์ Qwiklabs

ตัวอย่าง: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR-QWIKLABS-PROJECT-ID

ตั้งค่าตัวแปรสภาพแวดล้อมที่เหลือ

export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api

ตั้งค่าตัวแปรสภาพแวดล้อมที่จําเป็นสําหรับการผสานรวม GitLab

export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-token

แนวทางปฏิบัติแนะนำคือการใช้ read -s เพื่อหลีกเลี่ยงการแสดงข้อมูลที่ละเอียดอ่อนในเทอร์มินัล ซึ่งเป็นวิธีที่ปลอดภัยในการตั้งค่าตัวแปรสภาพแวดล้อมโดยไม่มีค่าแสดงในประวัติคำสั่งของคอนโซล หลังจากเรียกใช้แล้ว คุณต้องวางค่าแล้วกด Enter

คำสั่งนี้กำหนดให้คุณอัปเดตรหัสผู้ใช้และชื่อที่เก็บ GitLab

ตัวอย่าง: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"

119489def27115c8.png

export GITLAB_REPOSITORY="USERID/REPOSITORY"

ตั้งค่าตัวแปรสภาพแวดล้อมที่เหลือ

export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"

10. การกำหนดค่าการติดตาม LLM ของ LangSmith

สร้างบัญชี LangSmith และสร้างคีย์ Service API ในส่วนการตั้งค่า https://docs.smith.langchain.com/

ตั้งค่าตัวแปรสภาพแวดล้อมที่จําเป็นสําหรับการผสานรวม LangSmith

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"

export LANGCHAIN_API_KEY=langchain-service-api-key

11. การกำหนดค่า JIRA

ค่าเหล่านี้ไม่ได้ใช้ในห้องทดลองนี้ คุณจึงไม่จำเป็นต้องอัปเดตค่าเป็นค่าโปรเจ็กต์ JIRA ที่เฉพาะเจาะจงก่อนเรียกใช้คำสั่ง

ตั้งค่าตัวแปรสภาพแวดล้อมที่จําเป็นสําหรับการทําให้บริการ 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. ติดตั้งใช้งาน Devai-API ไปยัง Cloud Run

ตรวจสอบว่าคุณอยู่ในโฟลเดอร์ที่ถูกต้อง

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

ในแล็บนี้ เราจะทําตามแนวทางปฏิบัติแนะนําและใช้ Secret Manager เพื่อจัดเก็บและอ้างอิงค่าโทเค็นการเข้าถึงและคีย์ API ของ LangChain ใน Cloud Run

จัดเก็บโทเค็นการเข้าถึง JIRA ใน Secret Manager

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

จัดเก็บโทเค็นการเข้าถึง GitLab ใน Secret Manager

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

จัดเก็บคีย์ LangChain API ใน Secret Manager

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

ทำให้แอปพลิเคชันใช้งานได้ใน 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

ตอบ Y เพื่อสร้างที่เก็บ Artifact Registry Docker

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

โปรดดูขั้นตอนการดำเนินการ gcloud run deploy SERVICE_NAME --source=. ด้านล่าง ดูข้อมูลเพิ่มเติม

5c122a89dd11822e.png

เบื้องหลัง คำสั่งนี้ใช้ buildpacks และ Cloud Build ของ Google Cloud เพื่อสร้างอิมเมจคอนเทนเนอร์จากซอร์สโค้ดโดยอัตโนมัติโดยไม่ต้องติดตั้ง Docker ในเครื่องหรือตั้งค่า Buildpack หรือ Cloud Build กล่าวคือ คำสั่งเดียวที่อธิบายไว้ข้างต้นจะทําสิ่งที่ต้องใช้คําสั่ง gcloud builds submit และ gcloud run deploy

หากคุณระบุ Dockerfile(ซึ่งเราได้ระบุไว้ในที่เก็บนี้) แล้ว Cloud Build จะใช้ไฟล์ดังกล่าวเพื่อสร้างอิมเมจคอนเทนเนอร์แทนที่จะใช้ Buildpack เพื่อตรวจหาและสร้างอิมเมจคอนเทนเนอร์โดยอัตโนมัติ ดูข้อมูลเพิ่มเติมเกี่ยวกับบิลด์แพ็กได้จากเอกสารประกอบ

ตรวจสอบบันทึก Cloud Build ในคอนโซล

ตรวจสอบอิมเมจ Docker ที่สร้างขึ้นใน Artifact Registry

เปิด cloud-run-source-deploy/devai-api และตรวจสอบช่องโหว่ที่ตรวจพบโดยอัตโนมัติ ตรวจสอบรายการที่มีวิธีแก้ไขและดูวิธีแก้ไขตามคำอธิบาย

d00c9434b511be44.png

ตรวจสอบรายละเอียดอินสแตนซ์ Cloud Run ใน Cloud Console

ทดสอบปลายทางโดยเรียกใช้คําสั่ง 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

(ส่วนที่ไม่บังคับ) ตั้งค่า Cloud Workstation

Cloud Workstations มีสภาพแวดล้อมการพัฒนาที่มีการจัดการใน Google Cloud พร้อมการรักษาความปลอดภัยในตัวและสภาพแวดล้อมการพัฒนาที่กำหนดค่าไว้ล่วงหน้าแต่ปรับแต่งได้ คุณสามารถสร้างการกำหนดค่าเวิร์กสเตชันที่ระบุสภาพแวดล้อมของคุณในลักษณะที่ทําซ้ำได้ แทนที่จะกำหนดให้นักพัฒนาซอฟต์แวร์ต้องติดตั้งซอฟต์แวร์และเรียกใช้สคริปต์การตั้งค่า การอัปเดตการกำหนดค่าเวิร์กสเตชันจะมีผลกับเวิร์กสเตชันโดยอัตโนมัติในครั้งถัดไปที่เวิร์กสเตชันเริ่มทำงาน นักพัฒนาซอฟต์แวร์เข้าถึงเวิร์กสเตชันผ่าน IDE ที่ใช้เบราว์เซอร์ จากเครื่องมือแก้ไขโค้ดในเครื่องหลายรายการ (เช่น VSCode หรือ IDE ของ JetBrains เช่น IntelliJ IDEA Ultimate และ PyCharm Professional) หรือผ่าน SSH

Cloud Workstations ใช้ทรัพยากร Google Cloud ต่อไปนี้เพื่อจัดการสภาพแวดล้อมการพัฒนา

  • คลัสเตอร์เวิร์กสเตชันจะกำหนดกลุ่มเวิร์กสเตชันในภูมิภาคหนึ่งๆ และเครือข่าย VPC ที่เชื่อมต่ออยู่ คลัสเตอร์เวิร์กสเตชันไม่เกี่ยวข้องกับคลัสเตอร์ Google Kubernetes Engine (GKE)
  • การกำหนดค่าเวิร์กสเตชันจะทำหน้าที่เป็นเทมเพลตสำหรับเวิร์กสเตชัน การกําหนดค่าเวิร์กสเตชันจะกําหนดรายละเอียดต่างๆ เช่น ประเภทอินสแตนซ์เครื่องเสมือน (VM) ของเวิร์กสเตชัน พื้นที่เก็บข้อมูลถาวร สภาพแวดล้อมที่กําหนดอิมเมจคอนเทนเนอร์ IDE หรือเครื่องมือแก้ไขโค้ดที่จะใช้ และอื่นๆ นอกจากนี้ ผู้ดูแลระบบและทีมแพลตฟอร์มยังใช้กฎ Identity and Access Management (IAM) เพื่อมอบสิทธิ์เข้าถึงให้กับทีมหรือนักพัฒนาแอปแต่ละรายได้ด้วย
  • เวิร์กสเตชันคือสภาพแวดล้อมการพัฒนาที่กำหนดค่าไว้ล่วงหน้าซึ่งมี IDE บนระบบคลาวด์ เครื่องมือภาษา ไลบรารี และอื่นๆ คุณสามารถเริ่มหรือหยุดเวิร์กสเตชันได้ตามต้องการ และเรียกใช้เวิร์กสเตชันบน VM ของ Compute Engine ในโปรเจ็กต์ของคุณได้ โดยมีดิสก์ถาวรที่แนบไว้เพื่อจัดเก็บข้อมูลระหว่างเซสชัน

ผู้ดูแลระบบและทีมแพลตฟอร์มจะสร้างการกำหนดค่าเวิร์กสเตชันเพื่อแชร์กับทีมพัฒนา นักพัฒนาซอฟต์แวร์แต่ละคนจะสร้างเวิร์กสเตชันตามการกำหนดค่าเวิร์กสเตชัน

810ae08acb671f4c.png

ในโปรแกรมทดสอบนี้ คุณกำลังใช้ IDE ที่ใช้เบราว์เซอร์ แต่ Cloud Workstation ยังรองรับอินเทอร์เฟซการพัฒนาทั่วไปอื่นๆ ต่อไปนี้ด้วย

  • คุณใช้ IDE ของ JetBrains ในเครื่องได้ผ่าน JetBrains Gateway
  • หากใช้ VSCode ในเครื่อง คุณจะเข้าถึงเวิร์กสเตชันเพื่อการพัฒนาจากระยะไกลผ่าน SSH ได้ด้วย
  • นอกจากนี้ คุณยังตั้งค่า SSH และแม้แต่อุโมงค์ TCP ไปยัง Workstation จากเครื่องของคุณได้อีกด้วย

fc95816682f1e3b0.png

(ส่วนที่ไม่บังคับ) สร้างคลัสเตอร์เวิร์กสเตชัน

ระบบได้ดําเนินการตามขั้นตอนเหล่านี้ในระหว่างการตั้งค่าห้องทดลองแล้ว คุณจึงไม่ต้องดําเนินการใดๆ

ขั้นตอนเหล่านี้มีไว้เพื่อแสดงวิธีตั้งค่าคลัสเตอร์ การกำหนดค่า และเวิร์กสเตชันของ Cloud Workstations

อ่านส่วนนี้และไปที่ส่วนแพลตฟอร์ม Forge

วิธีสร้างคลัสเตอร์เวิร์กสเตชัน

gcloud workstations clusters create ws-cluster --region=us-central1

สร้างการกำหนดค่าเวิร์กสเตชัน

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

สร้างเวิร์กสเตชัน

gcloud workstations create devai-workstation \
--cluster=ws-cluster \
--config=devai-config \
--region=us-central1

ดูเวิร์กสเตชันที่ใช้ได้ในส่วน Cloud Console เริ่มและเปิด "devai-workstation"

e44784811890cfc8.png

เปิดใช้ "Gemini" ที่มุมขวาล่าง ทำตามขั้นตอนการลงชื่อเข้าใช้ในแท็บเบราว์เซอร์ใหม่ และคัดลอกรหัสที่สร้างขึ้นกลับไปไว้ในคอนโซลเพื่อลงชื่อเข้าใช้ให้เสร็จสมบูรณ์

เปิดแชท "Gemini" ในแผงด้านซ้าย แล้วถาม 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?"

8c3af1ad4e612f15.png

(END OF OPTIONAL SECTION)

13. แพลตฟอร์ม Forge

Forge เป็นแพลตฟอร์มที่ช่วยให้นักพัฒนาแอปสามารถสร้างแอปที่ผสานรวมกับผลิตภัณฑ์ของ Atlassian เช่น Jira, Confluence, Compass และ Bitbucket

eda6f59ff15df25e.png

ติดตั้ง Forge CLI

เรียกใช้คำสั่งด้านล่างในเทอร์มินัล

ดาวน์โหลดเครื่องมือจัดการเวอร์ชัน Node ( nvm) และทำให้พร้อมใช้งานในเส้นทางในเซสชันเทอร์มินัลปัจจุบัน

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

ติดตั้ง nvm

เลือกรุ่น LTS ของ Node.js ล่าสุดโดยเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล

nvm install --lts
nvm use --lts

ติดตั้ง Forge CLI ทั่วโลกโดยเรียกใช้คำสั่งต่อไปนี้

npm install -g @forge/cli

ในบทแนะนำนี้ เราจะใช้ตัวแปรสภาพแวดล้อมเพื่อเข้าสู่ระบบ

e4e4e59cf8622e3f.png

ตั้งค่าโปรเจ็กต์ JIRA

ใช้บัญชีส่วนตัวเพื่อสร้าง/ดูโปรเจ็กต์ JIRA

ตรวจสอบโปรเจ็กต์ JIRA ที่มีอยู่: https://admin.atlassian.com/

สร้างโปรเจ็กต์ JIRA ใหม่โดยใช้บัญชีส่วนตัว

ไปที่ https://team.atlassian.com/your-work แล้วคลิก 8654143154cb8665.png แล้วเลือก 47b253090a08932.png หลังจากนั้น ให้เลือก "JIRA Software" - "ลองใช้เลย" ทำตามข้อความแจ้งเพื่อสร้างโปรเจ็กต์/เว็บไซต์ให้เสร็จสมบูรณ์

5bab2a96e3b81383.png

เลือก JIRA Software

785bc4d8bf920403.png

สร้างโปรเจ็กต์ใหม่

8a6e7cdc8224ffa0.png

14. โทเค็น Atlassian API

สร้างหรือใช้โทเค็น Atlassian API ที่มีอยู่เพื่อเข้าสู่ระบบ CLI

CLI จะใช้โทเค็นของคุณเมื่อเรียกใช้คําสั่ง

  1. ไปที่ https://id.atlassian.com/manage/api-tokens
  2. คลิกสร้างโทเค็น API
  3. ป้อนป้ายกำกับเพื่ออธิบายโทเค็น API เช่น forge-api-token
  4. คลิกสร้าง
  5. คลิกคัดลอกไปยังคลิปบอร์ด แล้วปิดกล่องโต้ตอบ

เรียกใช้คำสั่งด้านล่างในเทอร์มินัลของ Cloud Workstation

เข้าสู่ระบบ Forge CLI เพื่อเริ่มใช้คำสั่ง Forge

ตั้งค่าอีเมล JIRA/FORGE โปรดแทนที่ด้วยอีเมลของคุณ

export FORGE_EMAIL=your-email

ตั้งค่าโทเค็น Forge API แทนที่ด้วยโทเค็น JIRA API

export FORGE_API_TOKEN=your-jira-api-token

ทดสอบ Forge CLI โดยเรียกใช้คำสั่งด้านล่าง ตอบ "No" เมื่อระบบขอให้รวบรวมข้อมูลวิเคราะห์

forge settings set usage-analytics false

ตรวจสอบว่าคุณได้เข้าสู่ระบบแล้ว

forge whoami

ตัวอย่างเอาต์พุต

Logged in as John Green (johngreen@email.com)
Account ID: 123090:aaabbcc-076a-455c-99d0-d1aavvccdd

สร้างแอปพลิเคชัน Forge

ตรวจสอบว่าคุณอยู่ในโฟลเดอร์ "~/github/genai-for-developers"

เรียกใช้คําสั่งเพื่อสร้างแอปพลิเคชัน Forge

forge create

ใช้ค่าต่อไปนี้เมื่อได้รับข้อความแจ้ง

  • ชื่อแอปพลิเคชัน: devai-jira-ui-qwiklabs
  • เลือกหมวดหมู่ UI Kit
  • เลือกผลิตภัณฑ์: Jira
  • เลือกเทมเพลต jira-issue-panel

bc94e2da059f15cf.png

เปลี่ยนเป็นโฟลเดอร์แอปพลิเคชัน

cd devai-jira-ui-qwiklabs/

เรียกใช้คําสั่งการทําให้ใช้งานได้

forge deploy

ตัวอย่างเอาต์พุต

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.

ติดตั้งแอปพลิเคชัน

forge install

ใช้ค่าต่อไปนี้เมื่อได้รับข้อความแจ้ง

  • เลือกผลิตภัณฑ์: Jira
  • ป้อน URL ของเว็บไซต์: your-domain.atlassian.net

ตัวอย่างเอาต์พุต

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

เปิดเว็บไซต์ JIRA และสร้างงาน JIRA ใหม่พร้อมคำอธิบายต่อไปนี้

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.

เมื่อเปิดงาน คุณจะเห็นปุ่ม "devai-jira-ui-qwiklabs"

คลิกปุ่มและตรวจสอบการเปลี่ยนแปลงใน UI

88f6dd543827543.png

ดูบันทึกแบ็กเอนด์ของ Forge

forge logs

Atlassian Developer Console

นอกจากนี้ คุณยังดูและจัดการแอปที่ติดตั้งใช้งานได้ใน Atlassian Developer Console

6a0e6ea177054fe6.png

ตรวจสอบบันทึก - เปลี่ยนไปใช้สภาพแวดล้อม Development

56a7f74de6d2a01d.png

ตรวจสอบไฟล์ Manifest และแอปพลิเคชันซอร์สโค้ดของ Forge

เปิดไฟล์ "devai-jira-ui-qwiklabs/manifest.yml" และใช้ฟีเจอร์ช่วยเขียนโค้ดของ Gemini เพื่ออธิบาย

4a4377922ab9a927.png

ตรวจสอบคำอธิบาย

5dd53138212dc686.png

เปิดไฟล์ต่อไปนี้และขอให้ Gemini Code Assist อธิบาย

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

c99f48a5bf624501.png

อัปเดตแอป Forge ด้วยปลายทาง Cloud Run ของ DevAI API

ตรวจสอบว่าได้ตั้งค่ารหัสโปรเจ็กต์ GCP แล้วหรือไม่ โดยทำดังนี้

gcloud config get project

หากยังไม่มี ให้ตั้งค่าโปรเจ็กต์ GCP โดยใช้รหัสโปรเจ็กต์จากหน้าห้องทดลองของ Qwiklabs โดยทำดังนี้

ตัวอย่าง: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

ตั้งค่า URL บริการ 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

ยืนยันโดยเรียกใช้คําสั่งด้านล่าง

forge variables list

ตัวอย่างเอาต์พุต

fb337c19c9009ac5.png

อัปเดตไฟล์ Manifest และโค้ดแอปพลิเคชัน Forge

คุณสามารถดูข้อมูลโค้ดเหล่านี้ได้ในที่เก็บข้อมูลในโฟลเดอร์ sample-devai-jira-ui

เปิดไฟล์ Manifest ในเครื่องมือแก้ไข: devai-jira-ui-qwiklabs/manifest.yml

เพิ่มบรรทัดด้านล่างที่ส่วนท้ายของไฟล์ - แทนที่ปลายทาง Cloud Run ด้วยปลายทางที่คุณติดตั้งใช้งาน

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

เปิดไฟล์ Resolver/Index ในเครื่องมือแก้ไข: devai-jira-ui-qwiklabs/src/resolvers/index.js

เพิ่มบรรทัดด้านล่างหลังฟังก์ชัน getText ที่มีอยู่

resolver.define('getApiKey', (req) => {
  return process.env.LLM_API_KEY;
});

resolver.define('getDevAIApiUrl', (req) => {
  return process.env.DEVAI_API_URL;
});

เปิดไฟล์หน้าเว็บ/ดัชนีในเครื่องมือแก้ไข: devai-jira-ui-qwiklabs/src/frontend/index.jsx

แทนที่ index.jsx ด้วยเนื้อหาด้านล่าง อัปเดตลิงก์ไปยังรหัสผู้ใช้/ที่เก็บ GitLab

คุณต้องอัปเดต YOUR-GIT-USERID และ YOUR-GIT-REPO ใน 2 แห่ง

ค้นหาบรรทัดนี้ในไฟล์และทําการเปลี่ยนแปลง

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>
);

ปรับใช้แอปพลิเคชัน Forge อีกครั้ง

เพิ่มการพึ่งพาในไฟล์ package.json

"@forge/api": "4.0.0",

ติดตั้งการอ้างอิง

npm install

ติดตั้งใช้งานแอปพลิเคชันที่อัปเดตแล้ว

forge deploy

ตัวอย่างเอาต์พุต

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

ติดตั้งแอปพลิเคชันที่อัปเดตแล้ว

forge install --upgrade

ef17c7da9b2962d8.png

ตัวอย่างเอาต์พุต

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.

แอปพลิเคชันทดสอบ Forge

เปิดงาน JIRA ที่มีอยู่หรือสร้างงานใหม่ในโปรเจ็กต์ JIRA

คุณจะต้องนำแผงก่อนหน้าออกหากมีการเพิ่มไว้แล้ว

คลิก "..." แล้วเลือก "นำออก" จากเมนู หลังจากนั้น คุณจะคลิกปุ่มอีกครั้งได้

1adca6205af0f0c6.png

ตรวจสอบความคิดเห็นใน Jira

เมื่อคุณได้รับการตอบกลับจาก DEVAI API ระบบจะเพิ่มความคิดเห็น 2 รายการในปัญหา JIRA

  • คำขอผสาน GitLab
  • รายละเอียดการใช้งาน User Story ของ Gemini

สลับระหว่างแท็บ "History" และ "Comments" เพื่อรีเฟรชมุมมอง

e3f38114330d504f.png

เปิดใช้การสร้างคำขอผสาน GitLab

เปิดไฟล์ devai-api/app/routes.py และยกเลิกการคอมเมนต์บรรทัดด้านล่างในเมธอด 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)

ปรับใช้แอปพลิเคชัน Cloud Run อีกครั้ง

ตรวจสอบว่าคุณอยู่ในโฟลเดอร์ที่ถูกต้อง

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

หากคุณใช้เซสชันเทอร์มินัลเดียวกัน คุณอาจยังคงตั้งค่าตัวแปรสภาพแวดล้อมทั้งหมดไว้

ตรวจสอบโดยเรียกใช้ "echo $GITLAB_REPOSITORY" ในเทอร์มินัล

ทำตามขั้นตอนเหล่านี้เพื่อรีเซ็ตหากเปิดเซสชันเทอร์มินัลใหม่

อย่าลืมรีเซ็ตตัวแปรสภาพแวดล้อมที่จําเป็นก่อนทําให้การนําแอปพลิเคชันกลับมาใช้งานได้อีกครั้ง

คำสั่งนี้กำหนดให้คุณอัปเดตรหัสผู้ใช้และชื่อที่เก็บ GitLab

export GITLAB_REPOSITORY="USERID/REPOSITORY"

ตั้งค่าตัวแปรสภาพแวดล้อมที่เหลือ

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

เครื่องมือของ GitLab จะใช้ Branch "devai" เพื่อพุชการเปลี่ยนแปลงสำหรับคำขอผสาน

ยืนยันว่าคุณได้สร้างสาขานั้นแล้ว

ทำให้แอปพลิเคชันใช้งานได้ใน 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

ยืนยันการผสานรวมจากต้นทางถึงปลายทาง

เริ่มกระบวนการจากงาน JIRA โดยคลิกปุ่มอีกครั้งและยืนยันเอาต์พุตในที่เก็บ GitLab ในส่วนคำขอผสานและ LangSmith

รายละเอียดคำขอผสาน GitLab

1cd438a10b4ce2b3.png

db6dc6c9a46e8f7b.png

ร่องรอย LLM ของ LangSmith

เปิดพอร์ทัล LangSmith และตรวจสอบการติดตาม LLM สําหรับการเรียกใช้การสร้างปัญหา JIRA

ตัวอย่างการติดตาม LLM ของ LangSmith

1ae0f88ab885f69.png

(ส่วนที่ไม่บังคับ) พุชการเปลี่ยนแปลงไปยังที่เก็บ GitHub

ไปที่เว็บไซต์ GitHub และสร้างที่เก็บใหม่เพื่อพุชการเปลี่ยนแปลงของห้องทดลองนี้ไปยังที่เก็บส่วนตัว

กลับไปที่อินสแตนซ์ Cloud Workstations แล้วตั้งค่าชื่อผู้ใช้และอีเมล Git ในเทอร์มินัล

อัปเดตค่าก่อนเรียกใช้คําสั่ง

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

สร้างคีย์ SSH และเพิ่มลงในที่เก็บ GitHub

อัปเดตอีเมลก่อนเรียกใช้คำสั่ง

อย่าป้อนรหัสผ่านแล้วกด Enter หลายครั้งเพื่อสร้างคีย์ให้เสร็จสมบูรณ์

ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"

ssh-add ~/.ssh/id_ed25519

cat ~/.ssh/id_ed25519.pub

เพิ่มคีย์สาธารณะที่สร้างขึ้นลงในบัญชี GitHub

เปิด https://github.com/settings/keys แล้วคลิก "New SSH key"

สำหรับชื่อคีย์ ให้ใช้ "qwiklabs-key" แล้วคัดลอก/วางเอาต์พุตจากคำสั่งล่าสุด

กลับไปที่เทอร์มินัล คอมมิต และพุชการเปลี่ยนแปลง

cd ~/github/genai-for-developers

git remote rm origin

ตั้งค่าต้นทางระยะไกลโดยใช้ที่เก็บข้อมูลที่สร้างขึ้นด้านบน

แทนที่ด้วย URL ของที่เก็บ

git remote add origin git@github.com:YOUR-GITHUB-USERID/YOUR-GITHUB-REPO.git

เพิ่ม คอมมิต และพุชการเปลี่ยนแปลง

git add .

git commit -m "lab changes"

git push -u origin main

15. ยินดีด้วย

ยินดีด้วย คุณทำแล็บเสร็จแล้ว

สิ่งที่เราได้พูดถึง

  • วิธีทำให้แอปพลิเคชัน Cloud Run ใช้งานได้เพื่อผสานรวมกับ Gemini API
  • วิธีสร้างและทำให้แอป Atlassian Forge ใช้งานได้สำหรับ JIRA
  • วิธีใช้ LangChain ReAct Agent สำหรับการทำงานอัตโนมัติของ GitLab
  • วิธีตรวจสอบร่องรอย LLM ใน LangSmith

ขั้นตอนต่อไปที่ทำได้

  • เราจะจัดเซสชันแบบลงมือปฏิบัติเพิ่มเติมในเร็วๆ นี้

ล้างข้อมูล

โปรดลบโปรเจ็กต์ที่มีทรัพยากรดังกล่าวหรือเก็บโปรเจ็กต์ไว้และลบทรัพยากรแต่ละรายการเพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้

การลบโปรเจ็กต์

วิธีที่ง่ายที่สุดในการหยุดการเรียกเก็บเงินคือการลบโปรเจ็กต์ที่คุณสร้างสำหรับบทแนะนำ

©2024 Google LLC สงวนลิขสิทธิ์ Google และโลโก้ของ Google เป็นเครื่องหมายการค้าของ Google LLC ชื่อบริษัทและผลิตภัณฑ์อื่นๆ ทั้งหมดอาจเป็นเครื่องหมายการค้าของบริษัทที่เป็นเจ้าของ