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

1. บทนำ

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

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

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

คุณจะสร้างแอปพลิเคชันที่ทำให้ใช้งานได้เป็น Python Cloud Function เพื่อสรุปข้อความโดยใช้ 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 และ Cloud Logging) แล้ว
  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

เราจะสร้าง Python Cloud Function และเรียกใช้ 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 เพื่อโคลนที่เก็บและไปยังโปรเจ็กต์ (ใช้เทอร์มินัลเดียวกันที่เปิดในส่วนก่อนหน้า)

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

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

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

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

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

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

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

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

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. ตอนนี้เราพร้อมที่จะติดตั้งใช้งานฟังก์ชันแล้ว แต่ก่อนอื่น โปรดตรวจสอบว่าบัญชีบริการของ Cloud Storage Bucket มีบทบาทผู้เผยแพร่ 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 $BUCKET_NAME"-summaries มีไฟล์สรุปที่มีชื่อเดียวกัน

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

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

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

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

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

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

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

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

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

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