1. מבוא
ב-Codelab הזה מוסבר איך לבצע סיכום של תוכן שהועלה ל-Google Cloud Storage, באמצעות מודל שפה גדול (LLM) של Vertex AI ליצירת טקסט (text-bison) כפונקציה של Cloud Functions ב-Python. רשימת השירותים שנעשה בהם שימוש:
- Vertex AI PaLM API: API של מודל שפה גדול (LLM) שמספק גישה למודל PaLM Text Bison של Google AI.
- Cloud Functions: פלטפורמה ללא שרת (serverless) להפעלת פונקציות בלי צורך לנהל שרתים.
- Cloud Storage: שירות מנוהל לאחסון נתונים לא מובְנים.
- Cloud Logging: שירות שמנוהל במלואו שמאפשר לכם לאחסן נתוני יומן, לחפש אותם, לנתח אותם, לעקוב אחריהם ולקבל התראות לגביהם.
מה תפַתחו
תצרו אפליקציה שנפרסת כפונקציה של Cloud Functions ב-Python כדי לסכם טקסט באמצעות PaLM API.
2. דרישות
3. לפני שמתחילים
- ב-מסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud.
- מוודאים שהחיוב מופעל בפרויקט ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט
- מוודאים שכל ממשקי ה-API הנדרשים (Cloud Storage API, Vertex AI API, Cloud Function API ו-Cloud Logging) מופעלים.
- תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud. אפשר לעיין במאמרי העזרה בנושא פקודות gcloud ושימוש בהן.
- בפינה הימנית העליונה של Cloud Console, לוחצים על 'הפעלת Cloud Shell':

אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project <YOUR_PROJECT_ID>
- מריצים את הפקודה הבאה בטרמינל של Cloud Shell כדי לוודא שכל ממשקי ה-API הנדרשים מופעלים:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
- יוצרים משתני סביבה בשם REGION ו-PROJECT_ID על ידי הרצת הפקודה הבאה מ-Cloud Shell Terminal:
export PROJECT_ID=<your project id>
export REGION=us-central1
4. פונקציה של Cloud Functions להפעלת Vertex AI API
ניצור פונקציה של Cloud Functions ב-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 קבצים:
- קובץ Python main.py מגדיר פונקציית HTTP פשוטה של Cloud Functions שמשתמשת במודל ליצירת טקסט של Vertex AI כדי ליצור סיכומים קצרים של מקורות קלט טקסטואליים. הפונקציה מקבלת קלט טקסט כפרמטר ומחזירה סיכום קצר של הקלט. הפונקציה משתמשת במגוון פרמטרים כדי לשלוט בתהליך היצירה, כמו היצירתיות, המגוון והרהיטות של הטקסט שנוצר. פונקציית ה-HTTP Cloud Functions מקבלת אובייקט בקשה ומחזירה את הסיכום של המודל כתשובה.
- בקובץ requirements.txt יש תלויות של חבילות:
- functions-framework==3.: העדכון מבטיח שהפונקציה תשתמש בתכונות האחרונות ובתיקוני הבאגים של Functions Framework.
- google-cloud-aiplatform: נדרש לשימוש במודל ליצירת טקסט ב-Vertex AI.
- google-cloud-storage: נדרש כדי ליצור קטגוריות אחסון ב-Google Cloud Storage.
- google-cloud-logging: נדרש כדי ליצור יומנים.
5. פריסת הפונקציה
- יוצרים שתי קטגוריות של 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
- בשלב הזה, אנחנו מוכנים לפרוס את הפונקציה. אבל לפני כן, צריך לוודא שלחשבון השירות של קטגוריה של Cloud Storage יש את התפקיד פרסום הודעות ב-Pub/Sub.
- נכנסים ל-Google Cloud Storage ובחלונית הימנית לוחצים על 'הגדרות'.

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

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

- פורסים את קוד המקור הזה ב-Cloud Functions. מריצים את הפקודה הבאה ממסוף Cloud Shell:
- מוודאים שאתם נמצאים בתיקייה 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 Functions:
תוצג רשימה של פונקציית Cloud Functions vertex-ai-function שיצרנו, עם כתובת ה-URL הציבורית שלה. נשתמש בפונקציה הזו כדי ליצור טריגר GCS.
6. הפעלת הפונקציה
כשמעלים קובץ לקטגוריה $BUCKET_NAME*,* הטריגר של GCS מפעיל את הפונקציה. קטגוריית $BUCKET_NAME"-summaries כוללת את הקובץ המסוכם עם אותו שם.
לפני שמתחילים, שומרים את קובץ הדוגמה story.md מהתיקייה summarization-gcs-cloudfunction במחשב המקומי.
- במסוף Google Cloud, עוברים אל Cloud Storage.
- פותחים את מאגר
$BUCKET_NAMEמהרשימה של מאגרי המידע. - לוחצים על 'העלאת קבצים' ובוחרים את הקובץ story.md.
הפונקציה summarizeArticles מופעלת ומתחילה לסכם את תוכן הקובץ.
- בחלונית הניווט הימנית, לוחצים על Buckets (מאגרי מידע).
- פותחים את דלי
$BUCKET_NAME"-summaries.
הקובץ story.md כולל סיכום של תוכן הקובץ.
7. הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם במאמר הזה:
- במסוף Google Cloud, עוברים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete (מחיקה).
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
- אם אתם רוצים לשמור את הפרויקט ולמחוק רק חלק מהמשאבים, נכנסים למסוף Cloud Storage, לוחצים על Buckets (קטגוריות), מסמנים ברשימה את הקטגוריות שרוצים למחוק ולוחצים על DELETE (מחיקה).
- אפשר גם למחוק את פונקציית Cloud. כדי לעשות זאת, עוברים אל Cloud Functions, מסמנים את הפונקציה שרוצים למחוק מתוך רשימת הפונקציות ולוחצים על DELETE.
8. מזל טוב
מעולה! השתמשתם בהצלחה בתוכנית LLM ליצירת טקסט ב-Vertex AI באופן פרוגרמטי כדי לבצע סיכום טקסט של הנתונים שלכם. מידע נוסף על המודלים הזמינים מופיע בתיעוד המוצר Vertex AI LLM.