אפליקציית 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) להרצת אפליקציות בקונטיינרים.

מה תפַתחו

תצרו

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

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

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

mkdir vertex-ai-functions

cd vertex-ai-functions

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

touch main.py requirements.txt

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

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

8e501bd2c41d11b8.png

אחרי שהעורך נפתח, אמור להופיע הקובץ main.py. מחליפים את התוכן שלו בקוד ממאגר הזה link. ההסבר לקוד כלול כהערות לקוד. לסיכום, הקוד הזה מספק דרך תמציתית ליצור סיכומים קצרים של קלט טקסט באמצעות 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 Functions, כולל הפונקציה vertex-ai-function שיצרנו עכשיו. כתובת ה-URL הציבורית של הפונקציה תופיע בדף הפונקציה. אנחנו משתמשים בזה כדי לחבר את הקצה הקדמי ואת 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 Summarizer פועל. כתובת ה-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.