אפליקציית Text Summarizer עם Vertex AI ו-Svelte Kit

1. מבוא

בשיעור Codelab הזה מפורטים השלבים ליצירת אפליקציית אינטרנט שמאפשרת לכם לסכם טקסט באמצעות מודל שפה גדול (LLM) של Vertex AI ליצירת טקסט (text-bison) API ב-framework של Svelte Kit. רשימת השירותים וסטאק התוכנות שבהם נעשה שימוש:

  1. Svelte Kit: מסגרת לאפליקציות אינטרנט שמבוססת על Svelte.
  2. ‫Vertex AI PaLM 2 API: ‏ API של מודל שפה גדול (LLM) שמספק גישה למודל PaLM 2 של Google AI.
  3. ‫Cloud Functions: פלטפורמה ללא שרת (serverless) להפעלת פונקציות בלי צורך לנהל שרתים.
  4. ‫Cloud Run: פלטפורמה בלי שרת (serverless) להרצת אפליקציות בקונטיינרים.

מה תפַתחו

תצרו

  • פונקציית Python Cloud משמשת להפעלת Palm API
  • אפליקציית אינטרנט של Svelte לממשק המשתמש, כדי ליצור אינטראקציה עם Vertex AI API דרך Cloud Function
  • שירות Cloud Run לפריסת האפליקציה שנוצרה למעלה ללא שרת

2. דרישות

  • דפדפן, כמו Chrome או Firefox
  • פרויקט ב-Google Cloud שהחיוב בו מופעל

3. לפני שמתחילים

  1. ב-מסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud.
  2. הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט
  3. תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud כדי ליצור אינטראקציה עם שירותי Google Cloud. אפשר לעיין במאמרי העזרה בנושא פקודות gcloud ושימוש בהן. בפינה הימנית העליונה של Cloud Console, לוחצים על 'הפעלת Cloud Shell':

51622c00acec2fa.png

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

gcloud config set project <YOUR_PROJECT_ID>
  1. כדי לוודא שכל ממשקי ה-API הנדרשים מופעלים, מריצים את הפקודה הבאה מטרמינל Cloud Shell:
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
  1. יוצרים משתני סביבה בשם REGION ו-PROJECT_ID על ידי הרצת הפקודה הבאה מ-Cloud Shell Terminal:
export PROJECT_ID=<your project id>

export REGION=asia-south1

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 2 for text הוא מודל אידיאלי למשימות שאפשר להשלים באמצעות תגובה אחת של API, בלי צורך בשיחה רציפה. עכשיו ניצור את הפונקציה ב-Cloud Functions.

יוצרים ספרייה חדשה באמצעות Cloud Shell ועוברים אליה. (משתמשים באותו טרמינל שנפתח בקטע הקודם):

mkdir vertex-ai-functions

cd vertex-ai-functions

יוצרים קובץ main.py לכתיבת פונקציית Python Cloud וקובץ requirements.txt לאחסון תלויות.

touch main.py requirements.txt

קובץ Python הזה מגדיר פונקציית HTTP פשוטה של Cloud Functions שמשתמשת במודל ליצירת טקסט של Vertex AI כדי ליצור סיכומים קצרים של מקורות קלט של טקסט. הפונקציה מקבלת קלט טקסט כפרמטר ומחזירה סיכום קצר של הקלט. הפונקציה משתמשת במגוון פרמטרים כדי לשלוט בתהליך היצירה, כמו היצירתיות, המגוון והרהיטות של הטקסט שנוצר. פונקציית ה-HTTP Cloud מקבלת אובייקט בקשה ומחזירה את הסיכום של המודל כתשובה.

פותחים את Google Cloud Editor. כדי לפתוח את העורך, פותחים כרטיסייה חדשה במסוף Google Cloud, לוחצים על הלחצן ACTIVATE CLOUD SHELL (הפעלת Cloud Shell) וכשהטרמינל נטען, לוחצים במהירות על הלחצן OPEN EDITOR (פתיחת העורך) כמו שמוצג בתמונה שלמטה:

8e501bd2c41d11b8.png

אחרי שהעורך נפתח, אמור להופיע הקובץ main.py. מחליפים את התוכן שלו בקוד ממאגר הקישור הזה. ההסבר לקוד כלול כהערות לקוד. לסיכום, הקוד הזה מספק דרך תמציתית ליצור סיכומים קצרים של קלט טקסט באמצעות Vertex AI.

בקובץ requirements.txt יש תלות בחבילות: functions-framework==3.*‎: הפונקציה מבטיחה שימוש בתכונות האחרונות ובתיקוני הבאגים של Functions Framework. ‏google-cloud-aiplatform: נדרש לשימוש במודל ליצירת טקסט של Vertex AI.

מוסיפים את השורה הבאה לקובץ requirements.txt:

functions-framework==3.*
google-cloud-aiplatform

פריסה ב-Cloud Functions

עכשיו נפרס את קוד המקור הזה ב-Cloud Functions. מריצים את הפקודה הבאה ממסוף Cloud Shell:

gcloud functions deploy vertex-ai-function \
--gen2 \
--runtime=python311 \
--region=${REGION} \
--source=. \
--entry-point=hello_vertex \
--trigger-http \
--allow-unauthenticated \
--max-instances=30

משתמשים בסרגל החיפוש ועוברים למסוף Cloud Functions:

43a6b247098a9edb.png

יוצג רשימה של פונקציות Cloud, כולל הפונקציה vertex-ai-function שיצרנו עכשיו. כתובת ה-URL הציבורית של הפונקציה תופיע בדף הפונקציה. אנחנו משתמשים בזה כדי לחבר את ה-Frontend ואת Vertex AI API. שמירת כתובת ה-URL הזו. יכול להיות שתצטרכו גם לאפשר לשירות Cloud Run הבסיסי גישה לא מאומתת. מטעמי אבטחה, מומלץ להשתמש בשירות מאומת.

5. פיתוח ופריסה של הקצה הקדמי

האפליקציה הזו כוללת ממשק קצה לאינטראקציה עם Vertex AI API שלנו באמצעות Google Cloud Functions. שניצור אותו עכשיו?

שכפול המאגר והגדרת Dockerfile

עוברים לספריית הבסיס ומשכפלים את מאגר ה-Git.

cd ~/

git clone https://github.com/bhaaratkrishnan/vertex-summarizer-svelte.git

cd  vertex-summarizer-svelte

כדי להריץ את האפליקציה הזו, צריך להוסיף את משתנה הסביבה PUBLIC_FUNCTION_URL ב-Dockerfile. כתובת ה-URL הזו היא כתובת ה-URL של Cloud Functions שנוצרה ונשמרה בקטע הקודם.

פותחים את Cloud Editor ועורכים את התוכן של קובץ Dockerfile. מחליפים את המשתנה PUBLIC_FUNCTION_URL בכתובת ה-URL של Cloud Functions.

2958bb12343368a9.png

פריסת חזית האתר ב-Cloud Run

אנחנו נשתמש ב-Google Artifact Registry כדי ליצור ולאחסן את קובצי האימג' של Docker. משתמשים ב-Cloud Run כדי לפרוס את הקונטיינרים בארכיטקטורה בלי שרת (serverless).

כדי ליצור מאגר ב-Artifact Registry, מריצים את הפקודה הבאה במסוף Cloud Shell:

gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}

יוצרים משתנה סביבה לכתובת ה-URL של מאגר Artifact Registry.

export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image

יוצרים את קונטיינר Docker ומתייגים אותו במיקום של מאגר Artifact Registry. תיוג של קובץ אימג' של Docker עם שם מאגר מגדיר את פקודת הדחיפה של Docker כך שהתמונה תידחף למיקום ספציפי.

docker build . -t ${DOCKER_URL}

מעבירים את האימג' בדחיפה ל-Artifact Registry.

docker push ${DOCKER_URL}

פריסת קונטיינר Docker ב-Cloud Run.

gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}

יש! כלי הסיכום של Vertex פועל. כתובת ה-URL תוצג ב-Cloud Shell, אז כדאי לכם לחקור את Vertex AI ולהפיק ממנו את המרב 🤖.

cd94442961bb5308.gif

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

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

  1. במסוף Google Cloud, עוברים לדף Manage resources.
  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על סמל המחיקה.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
  4. אם רוצים לשמור את הפרויקט ולמחוק רק את שירות Cloud Run, פועלים לפי השלב שמפורט כאן.
  5. אם רוצים רק למחוק את Cloud Function או לבטל את הגישה, אפשר לעשות זאת כאן.

7. מזל טוב

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