יצירת מנוע עודפים בזמן אמת באמצעות Gemini 3 Flash ו-Cloud SQL

1. סקירה כללית

בשיעור הזה תלמדו איך לפתח את Neighbor Loop, אפליקציה בת קיימא לשיתוף עודפים שמתייחסת לנתונים כאל חלק חשוב בשכבת הנתונים.

שילוב של Gemini 3.0 Flash עם שילוב ה-ML של Cloud SQL מאפשר לכם לעבור מאחסון בסיסי לתחום של ניתוח נתונים בתוך מסד הנתונים. תלמדו איך לבצע ניתוח פריטים מרובה-אופנים וגילוי סמנטי ישירות ב-SQL.

645daa545b0e46a6.png

מה תפַתחו

אפליקציית אינטרנט עם ביצועים גבוהים שמאפשרת לקהילה לשתף עודפים באמצעות החלקה.

מה תלמדו

  • הקצאת משאבים בלחיצה אחת: איך מגדירים מופע של Cloud SQL שמותאם לעומסי עבודה של AI.
  • הטמעות במסד נתונים: יצירת וקטורים של text-embedding-005 ישירות בהצהרות INSERT.
  • הסקה מולטי-מודאלית: שימוש ב-Gemini 3.0 Flash כדי 'לראות' פריטים וליצור באופן אוטומטי ביוגרפיות שנונות בסגנון של אתרי היכרויות.
  • גילוי סמנטי: ביצוע בדיקות של "אווירה" מבוססות-לוגיקה בתוך שאילתות SQL באמצעות הפונקציה ai.if()‎ כדי לסנן תוצאות על סמך הקשר, ולא רק על סמך מתמטיקה.

הארכיטקטורה

התכונה Neighbor Loop עוקפת צווארי בקבוק מסורתיים בשכבת האפליקציה. במקום לשלוף נתונים כדי לעבד אותם, אנחנו משתמשים ב:

  1. שילוב של Cloud SQL + ML: כדי ליצור ולאחסן וקטורים בזמן אמת.
  2. Google Cloud Storage: לאחסון תמונות
  3. Gemini 3.0 Flash: כדי לבצע ניתוח של נתוני תמונות וטקסט ישירות דרך SQL תוך פחות משנייה.
  4. Cloud Run: לאירוח קצה עורפי קל משקל של Flask עם קובץ יחיד.

דרישות

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

‫2. לפני שמתחילים

יצירת פרויקט

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

תמונה של לחצן ההפעלה של Cloud Shell

  1. אחרי שמתחברים ל-Cloud Shell, אפשר לבדוק שכבר בוצע אימות ושהפרויקט מוגדר למזהה הפרויקט שלכם באמצעות הפקודה הבאה:
gcloud auth list
  1. מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שפקודת gcloud מכירה את הפרויקט.
gcloud config list project
  1. אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project <YOUR_PROJECT_ID>
  1. מפעילים את ממשקי ה-API הנדרשים: לוחצים על הקישור ומפעילים את ממשקי ה-API.

אפשר גם להשתמש בפקודת gcloud. אפשר לעיין במאמרי העזרה בנושא פקודות gcloud ושימוש בהן.

נקודות חשובות ופתרון בעיות

תסמונת 'פרויקט הרפאים'

הפעלת את הפקודה gcloud config set project, אבל בפועל את מסתכלת על פרויקט אחר בממשק המשתמש של המסוף. צריך לבדוק את מזהה הפרויקט בתפריט הנפתח שבפינה הימנית העליונה.

מחסום בחיוב

הפעלתם את הפרויקט, אבל שכחתם להוסיף חשבון לחיוב. אם החיוב ריק, Cloud SQL לא יופעל.

השהיה בהפצת API

לחצתם על 'הפעלת ממשקי API', אבל בשורת הפקודה עדיין מופיעה ההודעה Service Not Enabled. מחכים 60 שניות. יעבור רגע עד שהנוירונים בענן יתעוררו.

3. הגדרת מסד נתונים

בשיעור ה-Lab הזה נשתמש ב-Cloud SQL ל-PostgreSQL כמסד הנתונים של נתוני הבדיקה.

ניצור מכונה של Cloud SQL שבה ייטען מערך הנתונים של הבדיקה.

  1. לוחצים על הלחצן או מעתיקים את הקישור שלמטה לדפדפן שבו המשתמש מחובר למסוף Google Cloud.

  1. אחרי שהשלב הזה יסתיים, המאגר ישוכפל לעורך המקומי של Cloud Shell ותוכלו להריץ את הפקודה שלמטה מתוך תיקיית הפרויקט (חשוב לוודא שאתם בספריית הפרויקט):
sh run.sh
  1. עכשיו משתמשים בממשק המשתמש (לוחצים על הקישור במסוף או על הקישור 'תצוגה מקדימה באינטרנט' במסוף).
  2. כדי להתחיל, מזינים את הפרטים של מזהה הפרויקט ושם המכונה.
  3. אתם יכולים ללכת לשתות קפה בזמן שהיומנים מתגללים, וכאן תוכלו לקרוא איך זה קורה מאחורי הקלעים.

נקודות חשובות ופתרון בעיות

חוסר התאמה באזור

אם הפעלתם את ממשקי ה-API ב-us-central1 אבל ניסיתם להקצות את האשכול ב-asia-south1, יכול להיות שתיתקלו בבעיות שקשורות למכסות או בעיכובים בהרשאות של חשבון השירות. חשוב להשתמש באזור אחד לכל אורך שיעור ה-Lab.

פסק זמן ב-Cloud Shell

אם הפסקת הקפה נמשכת 30 דקות, יכול להיות ש-Cloud Shell יעבור למצב שינה וינתק את התהליך sh run.sh. חשוב להשאיר את הכרטיסייה פעילה.

4. הקצאת הרשאות לסכימה

אחרי שהמכונה של Cloud SQL פועלת, עוברים אל עורך ה-SQL ב-Cloud SQL Studio כדי להפעיל את תוספי ה-AI ולהקצות את הסכימה.

5a835906362f7609.png

יכול להיות שתצטרכו לחכות עד שהמופע שלכם יסיים את תהליך היצירה. אחרי שיוצרים את המכונה, נכנסים אליה באמצעות פרטי הכניסה שיצרתם. משתמשים בנתונים הבאים כדי לבצע אימות ב-PostgreSQL:

  • שם משתמש : "postgres"
  • מסד נתונים : "postgres"
  • סיסמה: cloudsql (או כל סיסמה אחרת שהגדרתם בזמן היצירה)

אחרי שתעברו בהצלחה את תהליך האימות ב-Cloud SQL Studio, תוכלו להזין פקודות SQL בעורך. אפשר להוסיף כמה חלונות של Editor באמצעות סימן הפלוס שמשמאל לחלון האחרון.

9408d708b7dac90c.png

תזינו פקודות ל-Cloud SQL בחלונות העריכה, ותשתמשו באפשרויות Run (הפעלה), Format (עיצוב) ו-Clear (ניקוי) לפי הצורך.

הפעלת תוספים

כדי ליצור את האפליקציה הזו, נשתמש בתוספים pgvector ו-google_ml_integration. התוסף pgvector מאפשר לכם לאחסן ולחפש הטמעות של וקטורים. התוסף google_ml_integration מספק פונקציות שמשמשות לגישה לנקודות קצה של חיזוי ב-Vertex AI כדי לקבל חיזויים ב-SQL. מפעילים את התוספים האלה על ידי הפעלת פקודות ה-DDL הבאות:

CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
CREATE EXTENSION IF NOT EXISTS vector;

צור טבלה

כדי ליצור טבלה באמצעות הצהרת ה-DDL שבהמשך ב-Cloud SQL Studio:

-- Items Table (The "Profile" you swipe on)
CREATE TABLE items (
   item_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
   owner_id UUID,
   provider_name TEXT,
   provider_phone TEXT,
   title TEXT,
   bio TEXT,
   category TEXT,
   image_url TEXT,
   item_vector VECTOR(768),
   status TEXT DEFAULT 'available',
   created_at TIMESTAMP DEFAULT NOW()
);

-- Swipes Table (The Interaction)
CREATE TABLE swipes (
   swipe_id SERIAL PRIMARY KEY,
   swiper_id UUID,
   item_id UUID REFERENCES items(item_id),
   direction TEXT CHECK (direction IN ('left', 'right')),
   is_match BOOLEAN DEFAULT FALSE,
   created_at TIMESTAMP DEFAULT NOW()
);

בעמודה item_vector אפשר לאחסן את ערכי הווקטור של הטקסט.

מתן הרשאה

מריצים את ההצהרה הבאה כדי להעניק הרשאת הפעלה לפונקציה embedding:

GRANT EXECUTE ON FUNCTION embedding TO postgres;

הפעלת השילוב של ML

כדי להשתמש בתכונות של למידת מכונה ישירות במסד הנתונים, צריך להפעיל את דגל השילוב של למידת המכונה.

אפשר להריץ את הפקודה הבאה מ-Cloud Shell Terminal:

INSTANCE_NAME="<<The name of your Cloud SQL Instance>>"

gcloud sql instances patch $INSTANCE_NAME --tier=db-custom-1-3840

gcloud sql instances patch $INSTANCE_NAME \
    --database-flags=cloudsql.enable_google_ml_integration=on

gcloud sql instances patch $INSTANCE_NAME --enable-google-ml-integration

הענקת התפקיד 'משתמש ב-Vertex AI' לחשבון השירות של Cloud SQL

במסוף IAM של Google Cloud, מעניקים לחשבון השירות של Cloud SQL (שנראה כך: service-<<PROJECT_NUMBER>>@cp-sa-cloud-sql.iam.gserviceaccount.com) גישה לתפקיד Vertex AI User. ‫PROJECT_NUMBER יכיל את מספר הפרויקט.

אפשר גם להריץ את הפקודה הבאה מ-Cloud Shell Terminal:

INSTANCE_NAME="<<The name of your Cloud SQL Instance>>"
PROJECT_ID=$(gcloud config get-value project)

SA_EMAIL=$(gcloud sql instances describe $INSTANCE_NAME --format='value(serviceAccountEmailAddress)')
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="serviceAccount:$SA_EMAIL" \
    --role="roles/aiplatform.user"

רישום של מודל Gemini 3 Flash ב-Cloud SQL

מריצים את הצהרת ה-SQL הבאה מ-Cloud SQL Query Editor

CALL google_ml.create_model(
    model_id => 'gemini-3-flash-preview',
    model_request_url => 'https://aiplatform.googleapis.com/v1/projects/<<YOUR_PROJECT_ID>>/locations/global/publishers/google/models/gemini-3-flash-preview:generateContent',
    model_qualified_name => 'gemini-3-flash-preview',
    model_provider => 'google',
    model_type => 'generic',
    model_auth_type => 'cloudsql_service_agent_iam'
);
--replace <<YOUR_PROJECT_ID>> with your project id.

נקודות חשובות ופתרון בעיות

הלולאה של 'שכחתי את הסיסמה'

אם השתמשתם בהגדרה 'קליק אחד' ואתם לא זוכרים את הסיסמה, עוברים לדף 'פרטים בסיסיים של מופע' במסוף ולוחצים על 'עריכה' כדי לאפס את הסיסמה של postgres.

השגיאה 'התוסף לא נמצא'

אם CREATE EXTENSION נכשל, לרוב זה קורה כי המופע עדיין במצב 'תחזוקה' או 'עדכון' מההקצאה הראשונית. בודקים אם שלב יצירת המופע הושלם וממתינים כמה שניות אם צריך.

הפער בהפצת IAM

הפעלתם את פקודת IAM‏ gcloud, אבל פקודת ה-SQL‏ CALL עדיין נכשלת עם שגיאת הרשאה. יכול לעבור זמן מה עד שהשינויים ב-IAM יתעדכנו בכל מערכות Google. כדאי לקחת רגע.

חוסר התאמה בין מאפייני וקטורים

הטבלה items מוגדרת כ-VECTOR(768). אם תנסו להשתמש במודל אחר (למשל מודל עם 1,536 מימדים) בהמשך, התוספים שלכם יתפוצצו. כדאי להשתמש ב-text-embedding-005.

שגיאת הקלדה במזהה הפרויקט

בשיחה create_model, אם לא תציינו את המזהה של הפרויקט בתוך הסוגריים « » או שתקלידו אותו בצורה לא נכונה, רישום המודל ייראה כאילו הוא הצליח, אבל הוא ייכשל במהלך השאילתה הראשונה בפועל. חשוב לבדוק שוב את המחרוזת.

האינטגרציה של Vertex AI מושבתת

מריצים את הפקודה –enable-google-ml-integration (בנפרד מסימון מסד הנתונים)

5. אחסון תמונות (Google Cloud Storage)

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

  1. יוצרים קטגוריה: יוצרים קטגוריה חדשה בפרויקט GCP (לדוגמה, neighborloop-images), רצוי באותו אזור כמו מסד הנתונים והאפליקציה.
  2. הגדרת גישה ציבורית: * עוברים לכרטיסייה הרשאות של הקטגוריה.
  3. מוסיפים את חשבון המשתמש allUsers.
  4. מקצים את התפקיד צפייה באובייקט אחסון (כדי שכולם יוכלו לראות את התמונות) ואת התפקיד יצירת אובייקטים של אחסון (למטרות העלאה של הדגמה).

אפשרות חלופית (חשבון שירות): אם אתם מעדיפים לא להשתמש בגישה ציבורית, אתם צריכים לוודא שלחשבון השירות של האפליקציה שלכם יש גישה מלאה ל-Cloud SQL ותפקידי האחסון הנדרשים לניהול אובייקטים בצורה מאובטחת.

אם רוצים להריץ את הפקודה ולאפשר גישה לכולם. מריצים את הפקודות הבאות במסוף Cloud Shell:

BUCKET_NAME="<<your-bucket-name>>"
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \
    --member="allUsers" \
    --role="roles/storage.objectViewer"

נקודות חשובות ופתרון בעיות

The Region Drag

אם מסד הנתונים שלכם נמצא ב-us-central1 והקטגוריה נמצאת ב-europe-west1, אתם מאטים את ה-AI. הבדיקה של האווירה מתבצעת במהירות, אבל אחזור התמונה לממשק המשתמש ייראה איטי. חשוב להשאיר אותם באותו אזור!

ייחודיות של שם הקטגוריה

שמות הקטגוריות הם מרחב שמות גלובלי. אם תנסו לקרוא לקטגוריה שלכם neighborloop-images, סביר להניח שמישהו אחר כבר קרא לקטגוריה שלו בשם הזה. אם היצירה נכשלת, מוסיפים סיומת אקראית.

הבלבול בין 'יוצר' לבין 'צופה'

בלבול בין 'יוצר' לבין 'צופה': אם מוסיפים רק 'צופה', האפליקציה תקרוס כשמשתמש ינסה להוסיף פריט חדש, כי לא תהיה לה הרשאה לכתוב את הקובץ. שני הפרטים האלה נדרשים להגדרת ההדגמה הספציפית הזו.

6. יצירת האפליקציה

שכפלו את המאגר הזה לפרויקט שלכם ונעבור עליו יחד.

  1. כדי לשכפל את הפרויקט, מריצים את הפקודות הבאות אחת אחרי השנייה בטרמינל של Cloud Shell (בספריית הבסיס או בכל מקום שבו רוצים ליצור את הפרויקט):
git clone https://github.com/flazer99/neighbor-loop-cloud-sql

cd neighbor-loop-cloud-sql/

הפעולה הזו אמורה ליצור את הפרויקט, ואפשר לוודא זאת בעורך של Cloud Shell.

53a398aff6ba7d5b.png

  1. איך מקבלים מפתח Gemini API
  2. נכנסים ל-Google AI Studio: עוברים אל aistudio.google.com.
  3. כניסה: משתמשים באותו חשבון Google שבו משתמשים לפרויקט ב-Google Cloud.
  4. יצירת מפתח API:
  5. בסרגל הצד הימני, לוחצים על 'קבלת מפתח API'.
  6. לוחצים על הלחצן 'יצירת מפתח API בפרויקט חדש'.
  7. מעתיקים את המפתח: אחרי שהמפתח נוצר, לוחצים על סמל ההעתקה.
  8. עכשיו מגדירים את משתני הסביבה בקובץ ‎ .env
GEMINI_API_KEY=<<YOUR_GEMINI_API_KEY>>
DATABASE_URL=postgresql+pg8000://postgres:<<YOUR_PASSWORD>>@<<HOST_IP>>:<<PORT>>/postgres
GCS_BUCKET_NAME=<<YOUR_GCS_BUCKET>>

מחליפים את הערכים של הפלייסהולדרים <<YOUR_GEMINI_API_KEY>>, <<YOUR_PASSWORD>, <<HOST_IP>>, <<PORT>> and <<YOUR_GCS_BUCKET>>.

נקודות חשובות ופתרון בעיות

בלבול בין כמה חשבונות

אם אתם מחוברים לכמה חשבונות Google (אישי לעומת חשבון לצורכי עבודה), יכול להיות ש-AI Studio יוגדר כברירת מחדל לחשבון הלא נכון. בודקים את הדמות בפינה השמאלית העליונה כדי לוודא שהיא תואמת לחשבון הפרויקט שלכם ב-GCP.

הגעתם למכסת השימוש בתוכנית החינמית

אם אתם משתמשים בתוכנית ללא תשלום, יש מגבלות על קצב הבקשות (RPM – Requests Per Minute). אם תגללו מהר מדי ב-Neighbor Loop, יכול להיות שתופיע שגיאת 429 Too Many Requests. תוריד הילוך!

חשיפת מפתחות אבטחה

אם בטעות git commit אתם .env את הקובץ עם המפתח בתוכו. תמיד להוסיף את .env אל .gitignore.

7. בדיקת הקוד

הפרופיל שלכם ב-Stuff

c2c543562cc9b353.png

כשמשתמש מעלה תמונה של פריט, הוא לא צריך לכתוב תיאור ארוך. אני משתמש ב-Gemini 3 Flash כדי 'לראות' את הפריט ולכתוב את דף המוצר בשבילם.

בצד השרת, המשתמש רק מציין כותרת ותמונה. ‫Gemini מטפל בכל השאר:

prompt = """
You are a witty community manager for NeighborLoop.
Analyze this surplus item and return JSON:
{
   "bio": "First-person witty dating-style profile bio for the product, not longer than 2 lines",
   "category": "One-word category",
   "tags": ["tag1", "tag2"]
}
"""
response = genai_client.models.generate_content(
   model="gemini-3-flash-preview",
   contents=[types.Part.from_bytes(data=image_bytes, mime_type="image/jpeg"), prompt],
   config=types.GenerateContentConfig(response_mime_type="application/json")
)

21f871a1b549efcf.png

הטמעות בזמן אמת במסד הנתונים

aa783a459f1b02da.png

אחת התכונות הכי מגניבות של Cloud SQL היא היכולת ליצור הטמעות בלי לצאת מהקשר של SQL. במקום להפעיל מודל הטמעה ב-Python ולשלוח את הווקטור בחזרה למסד הנתונים, אני עושה את הכול בהצהרת INSERT אחת באמצעות הפונקציה embedding():

INSERT INTO items (owner_id, provider_name, provider_phone, title, bio, category, image_url, status, item_vector)
VALUES (
   :owner, :name, :phone, :title, :bio, :cat, :url, 'available',
   embedding('text-embedding-005', :title || ' ' || :bio)::vector
)

כך אפשר לוודא שכל פריט יהיה 'ניתן לחיפוש' לפי המשמעות שלו ברגע שהוא מתפרסם. חשוב לציין שזה החלק שמתייחס לתכונה 'הוספת המוצר לרשימה' באפליקציית Neighbor Loop.

הוספת צילום מסך של תכונה של כרטיס מוצר

חיפוש וקטורי מתקדם וסינון חכם עם Gemini 3.0

החיפוש הרגיל לפי מילות מפתח מוגבל. אם תחפשו "משהו לתקן את הכיסא שלי", יכול להיות שמסד נתונים מסורתי לא יחזיר תוצאות אם המילה "כיסא" לא מופיעה בכותרת. כדי לפתור את הבעיה הזו, Neighbor Loop משתמשת בחיפוש וקטורי מתקדם של Cloud SQL AI.

באמצעות התוסף pgvector והאחסון המותאם של Cloud SQL, אנחנו יכולים לבצע חיפושי דמיון מהירים במיוחד. אבל הקסם האמיתי קורה כשמשלבים בין קרבה וקטורית לבין לוגיקה שמבוססת על מודלים גדולים של שפה (LLM).

SELECT item_id, title, bio, category, image_url,
      1 - (item_vector <=> embedding('text-embedding-005', :query)::vector) as score
FROM items 
WHERE status = 'available' 
 AND item_vector IS NOT NULL 
ORDER BY score DESC 
LIMIT 5

השאילתה הזו מייצגת שינוי ארכיטקטוני משמעותי: אנחנו מעבירים את הלוגיקה אל הנתונים. במקום לשלוף אלפי תוצאות לקוד האפליקציה כדי לסנן אותן, Gemini 3 Flash מבצע 'בדיקת אווירה' בתוך מנוע מסד הנתונים. כך מצמצמים את זמן האחזור, מפחיתים את עלויות היציאה ומבטיחים שהתוצאות לא יהיו דומות רק מבחינה מתמטית, אלא גם רלוונטיות מבחינת ההקשר.

צילום מסך של תכונת החיפוש הסמנטי

הלולאה 'החלקה להתאמה'

ממשק המשתמש הוא חפיסת קלפים קלאסית.

החלקה שמאלה: ביטול.

החלקה ימינה: יש התאמה!

צילום מסך של התכונה &#39;החלקה להתאמה&#39;

כשמחליקים ימינה, המערכת מתעדת את האינטראקציה בטבלת ההחלקות ומסמנת את הפריט כפריט שתאם לטעם שלכם. ממשק הקצה מפעיל באופן מיידי חלון קופץ שבו מוצגים הפרטים ליצירת קשר עם הספק, כדי שתוכלו לתאם את האיסוף.

8. בואו נפרוס אותו ב-Cloud Run

  1. מפעילים את הפקודה הבאה מ-Cloud Shell Terminal שבו הפרויקט משוכפל, מוודאים שאתם בתוך תיקיית הבסיס של הפרויקט.

מריצים את הפקודה הבאה בטרמינל Cloud Shell:

gcloud run deploy neighbor-loop-cloud-sql \
   --source . \
   --region=us-central1 \
   --allow-unauthenticated \
   --network=easy-cloudsql-vpc \
   --subnet=easy-cloudsql-subnet \
   --vpc-egress=private-ranges-only \
   --set-env-vars GEMINI_API_KEY=<<YOUR_GEMINI_API_KEY>>,DATABASE_URL=postgresql+pg8000://postgres:<<YOUR_PASSWORD>>@<<PRIVATE_IP_HOST>>:5432/postgres,GCS_BUCKET_NAME=<<YOUR_GCS_BUCKET>>

מחליפים את הערכים של הפלייסהולדרים <<YOUR_GEMINI_API_KEY>>, <<YOUR_PASSWORD>, <<PRIVATE_IP_HOST>>, <<PORT>> and <<YOUR_GCS_BUCKET>>

אחרי שהפקודה מסתיימת, מוצגת כתובת URL של שירות. מעתיקים אותו.

עכשיו משתמשים בכתובת ה-URL של השירות (נקודת הקצה של Cloud Run שהעתקתם קודם) ובודקים את האפליקציה. מעלים תמונה של הכלי החשמלי הישן ומאפשרים ל-Gemini לעשות את השאר.

נקודות חשובות ופתרון בעיות

הלולאה 'הבדיקה נכשלה'

אם הפריסה מסתיימת אבל כתובת ה-URL מחזירה 500 Internal Server Error, כדאי לבדוק את היומנים. הבעיה הזו נגרמת בדרך כלל בגלל משתנה סביבה חסר (למשל, טעות הקלדה ב-DATABASE_URL) או בגלל שאין לחשבון השירות של Cloud Run הרשאות לקריאה מהקטגוריה של GCS.

9. פתרון בעיות ברמה גבוהה

206a26fcd93ea48.png

10. הדגמה (דמו)

אפשר להשתמש בנקודת הקצה לבדיקות.

אבל למטרות הדגמה למשך כמה ימים, אתם יכולים להתנסות בזה:

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

כשמסיימים את ה-Lab הזה, חשוב למחוק את מכונת Cloud SQL.

12. מזל טוב

יצרתם בהצלחה את אפליקציית Neighbor Loop לקהילות בנות קיימא באמצעות Google Cloud. העברת ההטמעה והלוגיקה של Gemini 3 Flash AI אל Cloud SQL מאפשרת לאפליקציה לפעול במהירות רבה (בהתאם להגדרות הפריסה) ולקוד להיות נקי במיוחד. אנחנו לא רק מאחסנים נתונים – אנחנו מאחסנים כוונה.

השילוב בין המהירות של Gemini 3 Flash לבין עיבוד הווקטורים המותאם של Cloud SQL הוא באמת הדבר הבא בפלטפורמות שמבוססות על קהילה.