Cloud Function สำหรับการสรุปเนื้อหาโดยใช้ PaLM Vertex AI API และ Google Cloud Storage

1. บทนำ

ในโค้ดแล็บนี้ คุณจะเห็นขั้นตอนในการสรุปเนื้อหาที่อัปโหลดใน Google Cloud Storage โดยใช้โมเดลภาษาขนาดใหญ่ของ Vertex AI เพื่อสร้างข้อความ ( text-bison) เป็นฟังก์ชันระบบคลาวด์ใน Python รายการบริการที่ใช้มีดังนี้

  • Vertex AI PaLM API: API โมเดลภาษาขนาดใหญ่ (LLM) ที่ให้สิทธิ์เข้าถึงโมเดล PaLM Text Bison ของ AI ของ Google
  • Cloud Functions: แพลตฟอร์มแบบ Serverless สำหรับเรียกใช้ฟังก์ชันโดยไม่ต้องจัดการเซิร์ฟเวอร์
  • Cloud Storage: บริการที่มีการจัดการสำหรับจัดเก็บข้อมูลที่ไม่เป็นโครงสร้าง
  • Cloud Logging: บริการที่มีการจัดการครบวงจรซึ่งช่วยให้คุณจัดเก็บ ค้นหา วิเคราะห์ ตรวจสอบ และแจ้งเตือนเกี่ยวกับข้อมูลการบันทึกได้

สิ่งที่คุณจะสร้าง

คุณจะได้สร้างแอปพลิเคชันที่ทําให้ใช้งานได้เป็นฟังก์ชัน Cloud ของ Python เพื่อสรุปข้อความโดยใช้ Palm API

2. ข้อกำหนด

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox
  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน

3. ก่อนเริ่มต้น

  1. ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
  2. ตรวจสอบว่าเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธีตรวจสอบว่าเปิดใช้การเรียกเก็บเงินในโปรเจ็กต์หรือไม่
  3. ตรวจสอบว่าได้เปิดใช้ API ที่จำเป็นทั้งหมด (Cloud Storage API, Vertex AI API, Cloud Function API และการบันทึกในระบบคลาวด์) แล้ว
  4. คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud โปรดดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ
  5. จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell ที่มุมขวาบน

51622c00acec2fa.png

หากไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คําสั่งต่อไปนี้เพื่อตั้งค่า

gcloud config set project <YOUR_PROJECT_ID>
  1. ตรวจสอบว่าได้เปิดใช้ API ที่จำเป็นทั้งหมดแล้วโดยเรียกใช้คําสั่งต่อไปนี้จากเทอร์มินัล Cloud Shell
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. สร้างตัวแปรสภาพแวดล้อมสำหรับ REGION และ PROJECT_ID โดยเรียกใช้คำสั่งต่อไปนี้จากเทอร์มินัล Cloud Shell
export PROJECT_ID=<your project id>

export REGION=us-central1

4. Cloud Function เพื่อเรียกใช้ Vertex AI API

เราจะสร้าง Cloud Function ของ Python และเรียกใช้ Vertex AI API ในฟังก์ชันนี้

การสร้างบัญชีบริการใหม่

สร้างบัญชีบริการใหม่โดยเรียกใช้คําสั่งต่อไปนี้ในเทอร์มินัล Cloud Shell

gcloud iam service-accounts create vertex-service-acc

หากต้องการให้สิทธิ์เข้าถึงโปรเจ็กต์และทรัพยากร ให้มอบบทบาทให้กับบัญชีบริการ

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com" --role=roles/ml.developer

หากต้องการให้บัญชี Google มีบทบาทที่ให้คุณใช้บทบาทของบัญชีบริการและแนบบัญชีบริการกับทรัพยากรอื่นๆ ให้เรียกใช้คําสั่งด้านล่าง แทนที่ USER_EMAIL ด้วยรหัสอีเมลบัญชี Google

gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

การสร้างฟังก์ชัน Python

PaLM API สําหรับข้อความเหมาะสําหรับงานที่ทําได้ด้วยการตอบกลับ API รายการเดียวโดยไม่ต้องสนทนาต่อเนื่อง มาสร้าง Cloud Function กัน

เรียกใช้คําสั่งต่อไปนี้ใน Cloud Shell เพื่อทําการโคลน repository และไปยังโปรเจ็กต์ (ใช้เทอร์มินัลเดียวกับที่เปิดไว้ในส่วนก่อนหน้า)

git clone https://github.com/rominirani/genai-apptemplates-googlecloud

cd genai-apptemplates-googlecloud/summarization-gcs-cloudfunction

โฟลเดอร์ที่เราสนใจในโปรเจ็กต์นี้คือ summarization-gcs-cloudfunction

เปิดเครื่องมือแก้ไข Cloud Shell จากเทอร์มินัล แล้วตรวจสอบเนื้อหาของโฟลเดอร์โปรเจ็กต์ที่เพิ่งโคลนจาก GitHub ไปยังเครื่อง Cloud Shell

โฟลเดอร์นี้มี 2 ไฟล์ ได้แก่

  1. ไฟล์ Python main.py จะกำหนดฟังก์ชัน Cloud HTTP ง่ายๆ ที่ใช้โมเดลการสร้างข้อความ Vertex AI เพื่อสร้างสรุปสั้นๆ ของอินพุตข้อความ ฟังก์ชันนี้ใช้อินพุตข้อความเป็นพารามิเตอร์และแสดงผลสรุปสั้นๆ ของอินพุต ฟังก์ชันนี้ใช้พารามิเตอร์ที่หลากหลายเพื่อควบคุมกระบวนการสร้าง เช่น ความคิดสร้างสรรค์ ความหลากหลาย และความลื่นไหลของข้อความที่สร้างขึ้น HTTP Cloud Function จะยอมรับออบเจ็กต์คำขอและแสดงผลสรุปของโมเดลเป็นการตอบกลับ
  2. ไฟล์ requirements.txt มีการพึ่งพาแพ็กเกจ
  • functions-framework==3.: ตรวจสอบว่าฟังก์ชันใช้ฟีเจอร์และการแก้ไขข้อบกพร่องล่าสุดของเฟรมเวิร์กฟังก์ชัน
  • google-cloud-aiplatform: ต้องใช้ในการใช้โมเดลการสร้างข้อความ Vertex AI
  • google-cloud-storage: ต้องระบุเพื่อสร้างที่เก็บข้อมูลใน Google Cloud Storage
  • google-cloud-logging: ต้องระบุเพื่อสร้างบันทึก

5. ทำให้ฟังก์ชันใช้งานได้

  1. สร้างที่เก็บข้อมูล Cloud Storage 2 ที่ดังนี้
  • ที่เก็บข้อมูลแรก: ระบบจะใช้ที่เก็บข้อมูล $BUCKET_NAME เพื่ออัปโหลดไฟล์ที่จะสรุป สร้างตัวแปรสภาพแวดล้อมเพื่อจัดเก็บชื่อที่เก็บข้อมูล ดังนี้
export BUCKET_NAME='Your Bucket Name'
  • ที่เก็บข้อมูลที่สอง: ระบบจะใช้ที่เก็บข้อมูล $BUCKET_NAME-summaries เพื่อจัดเก็บไฟล์สรุป
  • เราจะใช้คำสั่ง gsutil เพื่อสร้างที่เก็บข้อมูล
  • gsutil เป็นแอปพลิเคชัน Python ที่ช่วยให้คุณเข้าถึง Cloud Storage จากบรรทัดคำสั่งได้ คุณใช้ gsutil เพื่อทำงานด้านการจัดการที่เก็บข้อมูลและออบเจ็กต์ได้หลากหลาย
  • mb ย่อมาจาก "Make Bucket"
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. ตอนนี้เราพร้อมที่จะทําให้ฟังก์ชันใช้งานได้แล้ว แต่ก่อนอื่น โปรดตรวจสอบว่าบัญชีบริการของที่เก็บข้อมูล Cloud Storage มีบทบาทผู้เผยแพร่ Pub/Sub
  2. ไปที่ Google Cloud Storage แล้วคลิก "การตั้งค่า" ในแผงด้านซ้าย

8ce34eb05153abf2.png

  1. คัดลอก "บัญชีบริการ" จากการตั้งค่าและจดบันทึกไว้
  2. เปิด IAM และผู้ดูแลระบบจากเมนูการนำทางของคอนโซล Google Cloud

c5a7103e90689684.png

  1. ในแท็บสิทธิ์ ให้คลิก "ให้สิทธิ์เข้าถึง" แล้วป้อนรหัสบัญชีบริการที่คุณจดไว้ในส่วน "ผู้ใช้หลักใหม่" แล้วเลือกบทบาทเป็น "ผู้เผยแพร่ Pub/Sub" แล้วคลิก "บันทึก"

11c2df774fa740a9.png

  1. ติดตั้งใช้งานแหล่งที่มานี้ใน Cloud Functions เรียกใช้คำสั่งต่อไปนี้จากเทอร์มินัล Cloud Shell
  2. ตรวจสอบว่าคุณอยู่ในโฟลเดอร์ summarization-gcs-cloudfunction ในโปรเจ็กต์นี้
  3. เรียกใช้คำสั่งต่อไปนี้
gcloud functions deploy summarizeArticles \
--gen2 \
--runtime=python311 \
--source=. \
--region=$REGION \
--project=$PROJECT_ID \
--entry-point=summarize_gcs_object \
--trigger-bucket=$BUCKET_NAME \
--set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION \
--max-instances=1 \
--quiet
  1. ในคอนโซล Google Cloud ให้ไปที่ Cloud Functions

ซึ่งจะแสดงรายการ Cloud Function vertex-ai-function ที่เราเพิ่งสร้างพร้อม URL สาธารณะ เราจะใช้ฟังก์ชันนี้เพื่อสร้างทริกเกอร์ GCS

6. เรียกใช้ฟังก์ชัน

เมื่อมีการอัปโหลดไฟล์ในที่เก็บข้อมูล $BUCKET_NAME ทริกเกอร์ GCS จะเรียกใช้ฟังก์ชัน ที่เก็บข้อมูล $BUCKET_NAME"-summaries มีไฟล์สรุปที่ใช้ชื่อเดียวกัน

ก่อนเริ่มต้น ให้บันทึกไฟล์ story.md ตัวอย่างจากโฟลเดอร์ summarization-gcs-cloudfunction ลงในเครื่อง

  1. ไปที่ Cloud Storage ในคอนโซล Google Cloud
  2. เปิดที่เก็บข้อมูล $BUCKET_NAME จากรายการที่เก็บข้อมูล
  3. คลิก "อัปโหลดไฟล์" แล้วเลือกไฟล์ story.md

ระบบจะเรียกใช้ฟังก์ชัน summarizeArticles และเริ่มสรุปเนื้อหาของไฟล์

  1. คลิกที่ที่เก็บข้อมูลในแผงการนำทางด้านซ้าย
  2. เปิด$BUCKET_NAME"-summariesที่เก็บข้อมูล

ไฟล์ story.md มีข้อมูลสรุปของเนื้อหาในไฟล์

7. ล้างข้อมูล

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

  1. ในคอนโซล Google Cloud ให้ไปที่หน้าจัดการทรัพยากร
  2. ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิก "ลบ"
  3. ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิก "ปิด" เพื่อลบโปรเจ็กต์
  4. หากต้องการเก็บโปรเจ็กต์ไว้และลบเฉพาะทรัพยากรบางรายการ ให้ไปที่คอนโซล Cloud Storage แล้วคลิกที่ที่เก็บข้อมูล จากนั้นเลือกที่เก็บข้อมูลที่ต้องการลบจากรายการ แล้วคลิก "ลบ"
  5. นอกจากนี้ คุณยังลบ Cloud Function ได้โดยไปที่ Cloud Function แล้วเลือกฟังก์ชันที่ต้องการลบจากรายการฟังก์ชัน แล้วคลิก "ลบ"

8. ขอแสดงความยินดี

ยินดีด้วย คุณใช้ LLM การสร้างข้อความของ Vertex AI แบบเป็นโปรแกรมเพื่อทำการสรุปข้อความในข้อมูลเรียบร้อยแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่ใช้ได้ได้จากเอกสารประกอบผลิตภัณฑ์ LLM ของ Vertex AI