פונקציה של Cloud Functions לסיכום תוכן באמצעות PaLM Vertex AI API ו-Google Cloud Storage

1. מבוא

בשיעור ה-Codelab הזה מוסבר איך ליצור סיכום של תוכן שהועלאה ל-Google Cloud Storage באמצעות מודל שפה גדול (LLM) של Vertex AI ליצירת טקסט (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. הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט
  3. מוודאים שכל ממשקי ה-API הנדרשים (Cloud Storage API,‏ Vertex AI API,‏ Cloud Function API ו-Cloud Logging) מופעלים.
  4. תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud. במסמכי העזרה מפורטות הפקודות של gcloud והשימוש בהן.
  5. במסוף Cloud, לוחצים על Activate Cloud Shell בפינה הימנית העליונה:

51622c00acec2fa.png

אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:

gcloud config set project <YOUR_PROJECT_ID>
  1. מריצים את הפקודה הבאה בטרמינל של Cloud Shell כדי לוודא שכל ממשקי ה-API הנדרשים מופעלים:
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 ב-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 Functions.

מריצים את הפקודות הבאות ב-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 HTTP פשוטה שמשתמשת במודל יצירת טקסט של Vertex AI כדי ליצור סיכומים קצרים של קלט טקסט. הפונקציה מקבלת קלט טקסט כפרמטר ומחזירה סיכום קצר של הקלט. הפונקציה משתמשת במגוון פרמטרים כדי לשלוט בתהליך היצירה, כמו היצירתיות, המגוון והקלילות של הטקסט שנוצר. פונקציית Cloud של HTTP מקבלת אובייקט בקשה ומחזירה את הסיכום של המודל בתור התגובה.
  2. בקובץ requirements.txt יש יחסי תלות בחבילות:
  • functions-framework==3.: מוודאים שהפונקציה משתמשת בתכונות ובתיקוני הבאגים העדכניים ביותר של Functions Framework.
  • ‎google-cloud-aiplatform: חבילת ה-API הזו נדרשת לשימוש במודל היצירה של טקסט ב-Vertex AI.
  • google-cloud-storage: נדרש ליצירת קטגוריות אחסון ב-Google Cloud Storage.
  • ‎google-cloud-logging: חובה ליצירת יומנים.

5. פריסת הפונקציה

  1. יוצרים שתי קטגוריות של Cloud Storage:
  • הקטגוריה הראשונה: הקטגוריה $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 ואת Admin מתפריט הניווט של מסוף Google Cloud.

c5a7103e90689684.png

  1. בכרטיסייה Permissions, לוחצים על GRANT ACCESS ומזינים את מזהה חשבון השירות שציינתם בקטע New principals, בוחרים את התפקיד Pub/Sub Publisher ולוחצים על SAVE.

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. נכנסים לדף Cloud Functions במסוף Google Cloud:

תופיע רשימה של פונקציית Cloud‏ 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. נכנסים לדף Manage resources במסוף Google Cloud.
  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
  4. אם רוצים להשאיר את הפרויקט ולמחוק רק חלק מהמשאבים, עוברים למסוף Cloud Storage, לוחצים על Buckets, מסמנים ברשימה את הקטגוריות שרוצים למחוק ולוחצים על DELETE.
  5. אפשר גם למחוק את הפונקציה ב-Cloud Functions. לשם כך, עוברים אל Cloud Functions, מסמנים את הפונקציה שרוצים למחוק מרשימת הפונקציות ולוחצים על 'מחיקה'.

8. מזל טוב

מעולה! השתמשתם באופן פרוגרמטי ב-LLM ליצירת טקסט של Vertex AI כדי לבצע סיכום טקסט של הנתונים שלכם. בתיעוד המוצר של Vertex AI LLM מפורט מידע נוסף על המודלים הזמינים.