פונקציה של Cloud Functions לסיכום תוכן באמצעות 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 של ה-AI מבית Google.
  • Cloud Functions: פלטפורמה ללא שרת (serverless) שמאפשרת להריץ פונקציות בלי לנהל שרתים.
  • Cloud Storage: שירות מנוהל לאחסון נתונים לא מובנים.
  • Cloud Logging: שירות מנוהל שמאפשר לאחסן נתוני רישום ביומן, לחפש בהם, לנתח אותם, לעקוב אחריהם ולקבל עליהם התראות.

מה תפַתחו

ניצור אפליקציה שנפרסה כפונקציה של 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. כדי לוודא שכל ממשקי ה-API הנחוצים מופעלים, מריצים את הפקודה הבאה מהטרמינל של Cloud Shell:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. כדי ליצור משתני Environment (סביבה) ל-REGION ול-PROJECT_ID, צריך להריץ את הפקודה הבאה מהטרמינל של Cloud Shell:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. פונקציה של Cloud Functions להפעלת Vertex AI API

אנחנו ניצור פונקציה של Python Cloud ונפעיל את 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 כדי לשכפל את ה-repository ולעבור לפרויקט (משתמשים באותו טרמינל שנפתח בקטע הקודם):

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 Functions, שמשתמשת במודל Vertex AI Text Generation כדי ליצור סיכומים קצרים של קלט טקסט. הפונקציה מקבלת קלט טקסט כפרמטר ומחזירה סיכום קצר של הקלט. הפונקציה משתמשת במגוון פרמטרים כדי לשלוט בתהליך היצירה, כמו היצירתיות, הגיוון והדיוק של הטקסט שנוצר. הפונקציה של Cloud Functions מקבלת אובייקט בקשה ומחזירה את סיכום המודל בתור התגובה.
  2. בקובץ requirements.txt יש יחסי תלות של חבילות:
  • functions-framework==3.: מוודא שהפונקציה משתמשת בתכונות ובתיקוני הבאגים העדכניים ביותר של Functions Framework.
  • google-cloud-aiplatform: נדרש כדי להשתמש במודל Vertex AI Text Generation.
  • 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 כדי לבצע מגוון רחב של משימות לניהול קטגוריות ואובייקטים.
  • פירוש ראשי התיבות 'הפוך קטגוריה'
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. בשלב הזה, אנחנו מוכנים לפרוס את הפונקציה. אבל לפני כן, צריך לוודא שלחשבון השירות של הקטגוריה של Cloud Storage מוגדר התפקיד 'פרסום הודעות ב-Pub/Sub'.
  2. נכנסים ל-Google Cloud Storage ולוחצים על Settings (הגדרות) בחלונית הימנית.

8ce34eb05153abf2.png

  1. מעתיקים את 'חשבון השירות'. בהגדרות ורשמו את זה לעצמכם.
  2. פותחים את IAM ו-Admin מתפריט הניווט במסוף Google Cloud.

c5a7103e90689684.png

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

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 Functions שנוצרה עכשיו באמצעות כתובת ה-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. בחלונית הניווט שמשמאל, לוחצים על Buckets.
  2. פותחים את הקטגוריה $BUCKET_NAME"-summaries.

הקובץ story.md כולל סיכום של תוכן הקובץ.

7. הסרת המשאבים

כדי להימנע מצבירת חיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם בפוסט הזה:

  1. במסוף Google Cloud, נכנסים לדף Manage resources:
  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
  4. כדי לשמור את הפרויקט ולמחוק רק חלק מהמשאבים, נכנסים למסוף Cloud Storage, לוחצים על 'קטגוריות' ואז מסמנים את הקטגוריות שרוצים למחוק ולוחצים על 'מחיקה'.
  5. אפשר גם למחוק את הפונקציה של Cloud Functions על ידי מעבר אל Cloud Functions, מתוך רשימת הפונקציות, מסמנים את הפונקציה שרוצים למחוק ולוחצים על DELETE.

8. מזל טוב

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