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

1. บทนำ

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

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

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

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

2. ข้อกำหนด

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

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

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

51622c00acec2fa.png

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

gcloud config set project <YOUR_PROJECT_ID>
  1. ตรวจสอบว่าได้เปิดใช้ API ที่จำเป็นทั้งหมดโดยเรียกใช้คำสั่งต่อไปนี้จาก Cloud Shell Terminal
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 Terminal

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. main.py ไฟล์ Python กำหนด HTTP Cloud Function แบบง่ายที่ใช้โมเดลการสร้างข้อความ 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'
  • ที่เก็บข้อมูลที่ 2: ระบบจะใช้ที่เก็บข้อมูล $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 Terminal
  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 Function ของ Vertex-ai-function ที่เราเพิ่งสร้างขึ้นด้วย URL สาธารณะของ Cloud Function เราจะใช้ฟังก์ชันนี้เพื่อสร้างทริกเกอร์ 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 Functions แล้วเลือกฟังก์ชันจากรายการที่ต้องการลบ แล้วคลิก "ลบ"

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

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