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. ข้อกำหนด
3. ก่อนเริ่มต้น
- ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
- ตรวจสอบว่าเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์แล้ว ดูวิธีตรวจสอบว่าเปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้ว
- ตรวจสอบว่าได้เปิดใช้ API ที่จำเป็นทั้งหมด (Cloud Storage API, Vertex AI API, Cloud Function API และ Cloud Logging) แล้ว
- คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud ดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ
- คลิก "เปิดใช้งาน Cloud Shell" ที่มุมขวาบนจาก Cloud Console:
หากไม่ได้ตั้งค่าโปรเจ็กต์ไว้ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่าโปรเจ็กต์
gcloud config set project <YOUR_PROJECT_ID>
- ตรวจสอบว่าได้เปิดใช้ API ที่จำเป็นทั้งหมดโดยเรียกใช้คำสั่งต่อไปนี้จาก Cloud Shell Terminal
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
- สร้างตัวแปรสภาพแวดล้อมสำหรับ 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 ไฟล์:
- main.py ไฟล์ Python กำหนด HTTP Cloud Function แบบง่ายที่ใช้โมเดลการสร้างข้อความ Vertex AI เพื่อสร้างข้อมูลสรุปสั้นๆ ของอินพุตข้อความ ฟังก์ชันนี้จะใช้อินพุตข้อความเป็นพารามิเตอร์และแสดงผลสรุปสั้นๆ ของอินพุต ฟังก์ชันนี้ใช้พารามิเตอร์ที่หลากหลายในการควบคุมกระบวนการสร้าง เช่น ความคิดสร้างสรรค์ ความหลากหลาย และความคล่องแคล่วของข้อความที่สร้างขึ้น HTTP Cloud Function จะยอมรับออบเจ็กต์คำขอและแสดงผลข้อมูลสรุปของโมเดลเป็นการตอบกลับ
- ไฟล์ requirements.txt มีการขึ้นต่อกันของแพ็กเกจ:
- functions-framework==3 ตรวจสอบว่าฟังก์ชันใช้ฟีเจอร์ล่าสุดและการแก้ไขข้อบกพร่องของเฟรมเวิร์กฟังก์ชัน
- google-cloud-aiplatform: จำเป็นสำหรับการใช้โมเดลการสร้างข้อความ Vertex AI
- google-cloud-storage: ต้องใช้ในการสร้างที่เก็บข้อมูลของพื้นที่เก็บข้อมูลใน Google Cloud Storage
- google-cloud-logging: ต้องใช้ในการสร้างบันทึก
5. ทำให้ฟังก์ชันใช้งานได้
- สร้างที่เก็บข้อมูล 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
- ณ จุดนี้ เราพร้อมที่จะทำให้ฟังก์ชันใช้งานได้ แต่ก่อนหน้านั้น ให้ตรวจสอบว่าบัญชีบริการของที่เก็บข้อมูล Cloud Storage มีบทบาทผู้เผยแพร่ Pub/Sub
- ไปที่ Google Cloud Storage แล้วคลิก "การตั้งค่า" ที่แผงด้านซ้าย
- คัดลอก "บัญชีบริการ" จากการตั้งค่าและจดบันทึกไว้
- เปิด IAM และผู้ดูแลระบบจากเมนูการนำทางของคอนโซล Google Cloud
- ในแท็บ "สิทธิ์" ให้คลิก "ให้สิทธิ์เข้าถึง" แล้วป้อนรหัสบัญชีบริการที่คุณระบุไว้ในส่วนผู้ใช้หลักใหม่ แล้วเลือกบทบาทเป็น "ผู้เผยแพร่ Pub/Sub" แล้วคลิก "บันทึก"
- ทำให้แหล่งข้อมูลนี้ใช้งานได้กับ Cloud Functions เรียกใช้คำสั่งต่อไปนี้จาก Cloud Shell Terminal
- ตรวจสอบว่าอยู่ในโฟลเดอร์ summarization-gcs-cloudfunction ในโปรเจ็กต์นี้
- เรียกใช้คำสั่งต่อไปนี้
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
- ในคอนโซล Google Cloud ให้ไปที่ฟังก์ชันระบบคลาวด์ แล้วทำดังนี้
ซึ่งจะแสดงรายการ Cloud Function ของ Vertex-ai-function ที่เราเพิ่งสร้างขึ้นด้วย URL สาธารณะของ Cloud Function เราจะใช้ฟังก์ชันนี้เพื่อสร้างทริกเกอร์ GCS
6. เรียกใช้ฟังก์ชัน
เมื่ออัปโหลดไฟล์ในที่เก็บข้อมูล $BUCKET_NAME** ทริกเกอร์ GCS จะเรียกใช้ฟังก์ชัน ที่เก็บข้อมูล $BUCKET_NAME"-summaries
จะมีไฟล์ที่สรุปซึ่งมีชื่อเดียวกัน
ก่อนเริ่มต้น ให้บันทึกไฟล์ story.md ตัวอย่างจากโฟลเดอร์ summarization-gcs-cloudfunction ไปยังเครื่องภายใน
- ไปที่ Cloud Storage ในคอนโซล Google Cloud
- เปิดที่เก็บข้อมูล
$BUCKET_NAME
จากรายการที่เก็บข้อมูล - คลิก "อัปโหลดไฟล์" และเลือกไฟล์ story.md
ระบบจะทริกเกอร์ฟังก์ชัน summarizeArticles
และเริ่มสรุปเนื้อหาของไฟล์
- ในแผงการนำทางด้านซ้าย ให้คลิก "ที่เก็บข้อมูล"
- เปิดที่เก็บข้อมูล
$BUCKET_NAME"-summaries
ของคุณ
ไฟล์ story.md จะมีสรุปเนื้อหาของไฟล์
7. ล้างข้อมูล
โปรดทำตามขั้นตอนต่อไปนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในโพสต์นี้
- ในคอนโซล Google Cloud ให้ไปที่หน้าจัดการทรัพยากร
- ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
- ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเครื่องเพื่อลบโปรเจ็กต์
- หากต้องการเก็บโปรเจ็กต์ไว้และลบทรัพยากรบางรายการเท่านั้น ให้ไปที่คอนโซล Cloud Storage คลิกที่เก็บข้อมูล จากนั้นตรวจสอบที่เก็บข้อมูลที่คุณต้องการลบจากรายการ แล้วคลิก "ลบ"
- นอกจากนี้ คุณยังลบ Cloud Function ได้ด้วยโดยไปที่ Cloud Functions แล้วเลือกฟังก์ชันจากรายการที่ต้องการลบ แล้วคลิก "ลบ"
8. ขอแสดงความยินดี
ยินดีด้วย คุณได้ใช้ Vertex AI Text Generation LLM แบบเป็นโปรแกรมเพื่อสรุปข้อความในข้อมูลเรียบร้อยแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่พร้อมใช้งานได้ในเอกสารประกอบผลิตภัณฑ์ Vertex AI LLM