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

1. מבוא

בשיעור ה-Codelab הזה, פירטתי את השלבים לפיתוח אפליקציית אינטרנט שמאפשרת לבצע סיכום טקסט באמצעות Vertex AI Large Language Model ( text-bison) API ב-Svelte Kit. ריכזנו כאן את רשימת השירותים וסטאק התוכנות של השירות:

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

מה תפַתחו

היצירה שלך

  • שימוש בפונקציה של Cloud Functions של Python להפעלת Palm API
  • אפליקציית אינטרנט של Svelte שמאפשרת לממשק המשתמש לאינטראקציה עם Vertex AI API דרך הפונקציה של Cloud Functions
  • שירות של Cloud Run לפריסת האפליקציה שנוצרה למעלה ללא שרת (serverless)

2. דרישות

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

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

  1. במסוף Google Cloud, בדף בורר הפרויקטים, בוחרים או יוצרים פרויקט ב-Google Cloud.
  2. הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. איך בודקים אם החיוב מופעל בפרויקט
  3. תוכלו להשתמש ב-Cloud Shell, סביבת שורת הפקודה שפועלת ב-Google Cloud כדי לקיים אינטראקציה עם שירותי Google Cloud. עיינו במאמרי העזרה לפקודות ולשימוש ב-gcloud. במסוף Cloud, לוחצים על Activate 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. כדי ליצור משתני Environment (סביבה) ל-REGION ול-PROJECT_ID, צריך להריץ את הפקודה הבאה מהטרמינל של Cloud Shell:
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 לטקסט הוא אידיאלי למשימות שאפשר להשלים באמצעות תגובת API אחת, ללא צורך בשיחה רציפה. עכשיו ניצור בשבילה את הפונקציה של Cloud Functions.

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

mkdir vertex-ai-functions

cd vertex-ai-functions

יוצרים קובץ Main.py לכתיבת פונקציה של Python Cloud וקובץ delivery.txt לאחסון יחסי תלות.

touch main.py requirements.txt

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

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

8e501bd2c41d11b8.png

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

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

מוסיפים את הטקסט הבא לקובץ הדרישות.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 Functions שנוצרה עכשיו באמצעות כתובת ה-URL הציבורית שלה. אנחנו משתמשים בו כדי לחבר את Frontend ו-Vertex AI API שלנו. שמירת כתובת ה-URL הזו. יכול להיות שתצטרכו גם לאשר גישה לא מאומתת לשירות Cloud Run הבסיסי. מטעמי אבטחה, מומלץ להשתמש בשירות מאומת.

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

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

קובץ Docker של שכפול והגדרה

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

cd ~/

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

cd  vertex-summarizer-svelte

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

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

2958bb12343368a9.png

פריסת Frontend ל-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

צריך ליצור את הקונטיינר Docer ולתייג אותו לפי מיקום המאגר של Artifact Registry. תיוג תמונת ה-Docker בשם מאגר מגדיר את פקודת ה-Docker Push לדחוף את התמונה למיקום ספציפי.

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 Summarzer פועל. כתובת ה-URL תוצג ב-Cloud Shell, אז אתם מוזמנים להתנסות ב-Vertex AI🤖.

cd94442961bb5308.gif

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

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

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

7. מזל טוב

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