1. סקירה כללית
בשיעור הזה תלמדו איך לפתח את Neighbor Loop, אפליקציה בת קיימא לשיתוף עודפים שמתייחסת לנתונים כאל חלק חשוב בשכבת הנתונים.
שילוב של Gemini 3.0 Flash ו-AlloyDB AI מאפשר לכם לעבור מאחסון בסיסי לתחום של בינה בתוך מסד הנתונים. תלמדו איך לבצע ניתוח פריטים מולטימודאלי וגילוי סמנטי ישירות ב-SQL, וכך להימנע מבעיות של חביון וניפוח ארכיטקטוני שמאפיינות שימוש ב-AI.

מה תפַתחו
אפליקציית אינטרנט עם ביצועים גבוהים שמאפשרת לקהילה לשתף עודפים באמצעות החלקה.
מה תלמדו
- הקצאת משאבים בלחיצה אחת: איך מגדירים אשכול ומופע של AlloyDB שמיועדים לעומסי עבודה של AI.
- הטמעות במסד נתונים: יצירת וקטורים של text-embedding-005 ישירות בהצהרות INSERT.
- הסקה מולטי-מודאלית: שימוש ב-Gemini 3.0 Flash כדי 'לראות' פריטים וליצור באופן אוטומטי ביוגרפיות שנונות בסגנון של אתרי היכרויות.
- גילוי סמנטי: ביצוע בדיקות של 'אווירה' מבוססות-לוגיקה בתוך שאילתות SQL באמצעות הפונקציה ai.if() כדי לסנן תוצאות על סמך הקשר, ולא רק על סמך מתמטיקה.
הארכיטקטורה
Neighbor Loop עוקף צווארי בקבוק מסורתיים בשכבת האפליקציה. במקום לשלוף נתונים כדי לעבד אותם, אנחנו משתמשים ב:
- AlloyDB AI: כדי ליצור ולאחסן וקטורים בזמן אמת.
- Google Cloud Storage: לאחסון תמונות
- Gemini 3.0 Flash: כדי לבצע ניתוח של נתוני תמונות וטקסט ישירות באמצעות SQL תוך פחות משנייה.
- Cloud Run: לאירוח קצה עורפי קל משקל של Flask עם קובץ יחיד.
דרישות
2. לפני שמתחילים
יצירת פרויקט
- ב-Google Cloud Console, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud.
- מוודאים שהחיוב מופעל בפרויקט ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט.
- תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud. לוחצים על 'הפעלת Cloud Shell' בחלק העליון של מסוף Google Cloud.

- אחרי שמתחברים ל-Cloud Shell, אפשר לבדוק שכבר בוצע אימות ושהפרויקט מוגדר למזהה הפרויקט שלכם באמצעות הפקודה הבאה:
gcloud auth list
- מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שפקודת gcloud מכירה את הפרויקט.
gcloud config list project
- אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project <YOUR_PROJECT_ID>
- מפעילים את ממשקי ה-API הנדרשים: לוחצים על הקישור ומפעילים את ממשקי ה-API.
אפשר גם להשתמש בפקודת gcloud. אפשר לעיין במאמרי העזרה בנושא פקודות gcloud ושימוש בהן.
נקודות חשובות ופתרון בעיות
תסמונת 'פרויקט הרפאים' | הפעלת את הפקודה |
מחסום בחיוב | הפעלתם את הפרויקט, אבל שכחתם להוסיף חשבון לחיוב. AlloyDB הוא מנוע עם ביצועים גבוהים, והוא לא יופעל אם 'מיכל הדלק' (החיוב) ריק. |
השהיה של הפצת API | לחצת על 'הפעלת ממשקי API', אבל בשורת הפקודה עדיין מופיעה ההודעה |
מכסה | אם אתם משתמשים בחשבון ניסיון חדש לגמרי, יכול להיות שתגיעו למכסה אזורית של מופעי AlloyDB. אם הפעולה |
סוכן שירות 'מוסתר' | לפעמים סוכן השירות של AlloyDB לא מקבל אוטומטית את התפקיד |
3. הגדרת מסד נתונים
בשיעור ה-Lab הזה נשתמש ב-AlloyDB כבסיס הנתונים של נתוני הבדיקה. הוא משתמש באשכולות כדי להכיל את כל המשאבים, כמו מסדי נתונים ויומנים. לכל אשכול יש מופע ראשי שמספק נקודת גישה לנתונים. הטבלאות יכילו את הנתונים בפועל.
ניצור אשכול, מכונה וטבלה של AlloyDB שבהם ייטען מערך הנתונים של הבדיקה.
- לוחצים על הלחצן או מעתיקים את הקישור שלמטה לדפדפן שבו המשתמש מחובר למסוף Google Cloud.
- אחרי שהשלב הזה יסתיים, המאגר ישוכפל לעורך המקומי של Cloud Shell ותוכלו להריץ את הפקודה שלמטה מתוך תיקיית הפרויקט (חשוב לוודא שאתם בספריית הפרויקט):
sh run.sh
- עכשיו משתמשים בממשק המשתמש (לוחצים על הקישור במסוף או על הקישור 'תצוגה מקדימה באינטרנט' במסוף).
- כדי להתחיל, מזינים את הפרטים של מזהה הפרויקט, האשכול ושמות המופעים.
- אתם יכולים ללכת לשתות קפה בזמן שהיומנים מתגללים, וכאן תוכלו לקרוא איך זה קורה מאחורי הקלעים.
נקודות חשובות ופתרון בעיות
הבעיה של 'סבלנות' | אשכולות של מסדי נתונים הם תשתית כבדה. אם תרעננו את הדף או תסיימו את הסשן ב-Cloud Shell כי נראה שהוא נתקע, יכול להיות שתקבלו מופע 'רפאים' שהוקצה באופן חלקי ואי אפשר למחוק אותו בלי התערבות ידנית. |
חוסר התאמה באזור | אם הפעלתם את ממשקי ה-API ב- |
Zombie Clusters | אם השתמשתם בעבר באותו שם לאשכול ולא מחקתם אותו, יכול להיות שהסקריפט יציין שהשם של האשכול כבר קיים. שמות האשכולות חייבים להיות ייחודיים בפרויקט. |
פסק זמן ב-Cloud Shell | אם הפסקת הקפה שלכם נמשכת 30 דקות, יכול להיות ש-Cloud Shell יעבור למצב שינה וינתק את התהליך |
4. הקצאת הרשאות לסכימה
אחרי שמפעילים את האשכול ואת המופע של AlloyDB, עוברים אל עורך ה-SQL של AlloyDB Studio כדי להפעיל את תוספי ה-AI ולספק את הסכימה.

יכול להיות שתצטרכו לחכות עד שהמופע שלכם יסיים את תהליך היצירה. אחרי שזה קורה, נכנסים ל-AlloyDB באמצעות פרטי הכניסה שיצרתם כשנוצר האשכול. משתמשים בנתונים הבאים כדי לבצע אימות ל-PostgreSQL:
- שם משתמש : "
postgres" - מסד נתונים : "
postgres" - סיסמה:
alloydb(או כל סיסמה אחרת שהגדרתם בזמן היצירה)
אחרי שתעברו בהצלחה את תהליך האימות ב-AlloyDB Studio, תוכלו להזין פקודות SQL בכלי העריכה. אפשר להוסיף כמה חלונות של Editor באמצעות סימן הפלוס משמאל לחלון האחרון.

מזינים פקודות ל-AlloyDB בחלונות של כלי העריכה, ומשתמשים באפשרויות 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 שבהמשך ב-AlloyDB 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;
נותנים לחשבון השירות של AlloyDB את התפקיד Vertex AI User
במסוף IAM של Google Cloud, מעניקים לחשבון השירות של AlloyDB (שנראה כך: service-<<PROJECT_NUMBER>>@gcp-sa-alloydb.iam.gserviceaccount.com) גישה לתפקיד Vertex AI User. PROJECT_NUMBER יכיל את מספר הפרויקט.
אפשר גם להריץ את הפקודה הבאה מ-Cloud Shell Terminal:
PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
רישום של מודל Gemini 3 Flash ב-AlloyDB
מריצים את הצהרת ה-SQL שלמטה מ-AlloyDB 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 => 'llm',
model_auth_type => 'alloydb_service_agent_iam'
);
--replace <<YOUR_PROJECT_ID>> with your project id.
נקודות חשובות ופתרון בעיות
הלולאה של 'שכחתי את הסיסמה' | אם השתמשתם בהגדרה 'קליק אחד' ואתם לא זוכרים את הסיסמה, עוברים לדף 'פרטים בסיסיים של מופע' במסוף ולוחצים על 'עריכה' כדי לאפס את הסיסמה של |
השגיאה 'התוסף לא נמצא' | אם |
הפער בהפצת IAM | הפעלתם את פקודת IAM |
חוסר התאמה במאפיין וקטור | הטבלה |
שגיאת הקלדה במזהה הפרויקט | בשיחה |
5. אחסון תמונות (Google Cloud Storage)
כדי לאחסן את התמונות של הפריטים העודפים שלנו, אנחנו משתמשים בדלי GCS. לצורך אפליקציית ההדגמה הזו, אנחנו רוצים שהתמונות יהיו נגישות לכולם כדי שהן יוצגו באופן מיידי בכרטיסי ההחלקה שלנו.
- יוצרים קטגוריה: יוצרים קטגוריה חדשה בפרויקט GCP (לדוגמה, neighborloop-images), רצוי באותו אזור כמו מסד הנתונים והאפליקציה.
- הגדרת גישה ציבורית: * עוברים לכרטיסייה Permissions (הרשאות) של הקטגוריה.
- מוסיפים את חשבון המשתמש allUsers.
- מקצים את התפקיד צפייה באובייקט אחסון (כדי שכולם יוכלו לראות את התמונות) ואת התפקיד יצירת אובייקטים של אחסון (למטרות העלאה של הדגמה).
אפשרות חלופית (חשבון שירות): אם אתם מעדיפים לא להשתמש בגישה ציבורית, אתם צריכים לוודא שלחשבון השירות של האפליקציה שלכם יש גישה מלאה ל-AlloyDB ולתפקידי האחסון הנדרשים לניהול אובייקטים בצורה מאובטחת.
נקודות חשובות ופתרון בעיות
The Region Drag | אם מסד הנתונים שלכם נמצא ב- |
ייחודיות של שם הקטגוריה | שמות הקטגוריות הם מרחב שמות גלובלי. אם תנסו לתת לקטגוריה שלכם את השם |
הבלבול בין 'יוצר' לבין 'צופה' | בלבול בין 'יוצר' לבין 'צופה': אם מוסיפים רק 'צופה', האפליקציה תקרוס כשמשתמש ינסה להוסיף פריט חדש, כי לא תהיה לה הרשאה לכתוב את הקובץ. שני הפרטים האלה נדרשים להגדרת ההדגמה הספציפית הזו. |
6. יצירת האפליקציה
שכפלו את המאגר הזה לפרויקט שלכם, ונסביר לכם איך הוא פועל.
- כדי לשכפל את הפרויקט, מריצים את הפקודה הבאה בטרמינל של Cloud Shell (בספריית הבסיס או בכל מקום שבו רוצים ליצור את הפרויקט):
git clone https://github.com/AbiramiSukumaran/neighbor-loop
הפעולה הזו אמורה ליצור את הפרויקט, ואפשר לוודא זאת בעורך של Cloud Shell.

- איך מקבלים מפתח Gemini API
- נכנסים ל-Google AI Studio: עוברים אל aistudio.google.com.
- כניסה: משתמשים באותו חשבון Google שבו משתמשים לפרויקט ב-Google Cloud.
- יצירת מפתח API:
- בסרגל הצד הימני, לוחצים על 'קבלת מפתח API'.
- לוחצים על הלחצן 'יצירת מפתח API בפרויקט חדש'.
- מעתיקים את המפתח: אחרי שהמפתח נוצר, לוחצים על סמל ההעתקה.
- עכשיו מגדירים את משתני הסביבה בקובץ .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 – בקשות לדקה). אם תגללו מהר מדי ב'שכונה', יכול להיות שתופיע שגיאה |
חשיפת מפתח אבטחה | אם בטעות |
השגיאה "תם הזמן הקצוב לתפוגה של החיבור" | השתמשתם בכתובת ה-IP הפרטית בקובץ .env, אבל אתם מנסים להתחבר מחוץ ל-VPC (למשל מהמחשב המקומי). אפשר להגיע לכתובות IP פרטיות רק מתוך אותה רשת Google Cloud. עוברים לכתובת ה-IP הציבורית. |
ההנחה לגבי יציאה 5432 | 5432 היא יציאת PostgreSQL הסטנדרטית, אבל לפעמים נדרשות הגדרות יציאה ספציפיות ב-AlloyDB אם משתמשים ב-Auth Proxy. בשיעור ה-Lab הזה, חשוב לוודא שמשתמשים ב- :5432 בסוף מחרוזת המארח. |
השומרת 'רשתות מורשות' | גם אם יש לכם את כתובת ה-IP הציבורית, מערכת AlloyDB תציג את ההודעה 'החיבור נדחה' אלא אם הוספתם את כתובת ה-IP של המכונה שבה מופעל הקוד לרשימת כתובות ה-IP המורשות.פתרון: בהגדרות של מופע AlloyDB, מוסיפים את 0.0.0.0/0 (לבדיקה זמנית בלבד!) או את כתובת ה-IP הספציפית שלכם לרשימת הרשתות המורשות. |
כשל בלחיצת היד של SSL/TLS | ב-AlloyDB יש העדפה לחיבורים מאובטחים. אם ב-DATABASE_URL לא מצוין הדрайבר בצורה נכונה (למשל, אם נעשה שימוש ב-pg8000), יכול להיות שהלחיצת יד תיכשל בלי שיוצג לכם שום דבר, ותקבלו שגיאה כללית של 'לא ניתן להגיע למסד הנתונים'. |
החלפה בין מאגר הקריאה למאגר הראשי | אם בטעות מעתיקים את כתובת ה-IP של מאגר הקריאה במקום את כתובת ה-IP של המופע הראשי, האפליקציה תפעל לחיפוש פריטים, אבל תקרוס עם שגיאה מסוג 'לקריאה בלבד' כשמנסים להוסיף פריט חדש. תמיד להשתמש בכתובת ה-IP של המופע הראשי לפעולות כתיבה. |
7. בדיקת הקוד
הפרופיל שלכם ב-Stuff

כשמשתמש מעלה תמונה של פריט, הוא לא צריך לכתוב תיאור ארוך. אני משתמש ב-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")
)

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

אחת התכונות הכי מגניבות של AlloyDB היא היכולת ליצור הטמעות בלי לצאת מהקשר של 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 פותרת את הבעיה הזו באמצעות חיפוש וקטורי מתקדם של AlloyDB AI.
באמצעות התוסף pgvector והאחסון המותאם של AlloyDB, אפשר לבצע חיפושים מהירים במיוחד של דמיון. אבל הקסם האמיתי קורה כשמשלבים בין קרבה וקטורית לבין לוגיקה שמבוססת על LLM.
AlloyDB AI מאפשר לנו להפעיל מודלים כמו Gemini ישירות בתוך שאילתות ה-SQL שלנו. כלומר, אנחנו יכולים לבצע גילוי סמנטי שכולל 'בדיקת שפיות' מבוססת-לוגיקה באמצעות הפונקציה ai.if():
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
AND ai.if(
prompt => 'Does this text: "' || bio ||'" match the user request: "' || :query || '", at least 60%? "',
model_id => 'gemini-3-flash-preview'
)
ORDER BY score DESC
LIMIT 5
השאילתה הזו מייצגת שינוי ארכיטקטוני משמעותי: אנחנו מעבירים את הלוגיקה אל הנתונים. במקום לשלוף אלפי תוצאות לקוד האפליקציה כדי לסנן אותן, Gemini 3 Flash מבצע 'בדיקת אווירה' בתוך מנוע מסד הנתונים. כך מצטמצם זמן האחזור, יורדות העלויות של תעבורת נתונים יוצאת ומובטח שהתוצאות לא יהיו רק דומות מבחינה מתמטית, אלא גם רלוונטיות מבחינת ההקשר.

הלולאה 'החלקה להתאמה'
ממשק המשתמש הוא חפיסת קלפים קלאסית.
החלקה שמאלה: ביטול.
החלקה ימינה: יש התאמה!

כשמחליקים ימינה, המערכת מתעדת את האינטראקציה בטבלת ההחלקות ומסמנת את הפריט כפריט שתאם לטעם שלכם. ממשק הקצה מפעיל באופן מיידי חלון קופץ שבו מוצגים הפרטים ליצירת קשר עם הספק, כדי שתוכלו לתאם את האיסוף.
8. בואו נפרוס אותו ב-Cloud Run
- מפעילים את הפקודה הבאה מ-Cloud Shell Terminal שבו הפרויקט משוכפל, מוודאים שאתם בתוך תיקיית הבסיס של הפרויקט.
מריצים את הפקודה הבאה בטרמינל Cloud Shell:
gcloud beta run deploy neighbor-loop \
--source . \
--region=us-central1 \
--network=<<YOUR_NETWORK_NAME>> \
--subnet=<<YOUR_SUBNET_NAME>> \
--allow-unauthenticated \
--vpc-egress=all-traffic \
--set-env-vars GEMINI_API_KEY=<<YOUR_GEMINI_API_KEY>>,DATABASE_URL=postgresql+pg8000://postgres:<<YOUR_PASSWORD>>@<<PRIVATE_IP_HOST>>:<<PORT>>/postgres,GCS_BUCKET_NAME=<<YOUR_GCS_BUCKET>>
מחליפים את הערכים של הפלייסהולדרים <<YOUR_GEMINI_API_KEY>>, <<YOUR_PASSWORD>, <<PRIVATE_IP_HOST>>, <<PORT>> and <<YOUR_GCS_BUCKET>>
אחרי שהפקודה מסתיימת, היא מחזירה כתובת URL של שירות. מעתיקים אותו.
- מקצים לחשבון השירות של Cloud Run את התפקיד AlloyDB Client.כך האפליקציה שלכם ללא שרת יכולה ליצור מנהרה מאובטחת למסד הנתונים.
מריצים את הפקודה הבאה בטרמינל Cloud Shell:
# 1. Get your Project ID and Project Number
PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
# 2. Grant the AlloyDB Client role
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/alloydb.client"
עכשיו משתמשים בכתובת ה-URL של השירות (נקודת הקצה של Cloud Run שהעתקתם קודם) ובודקים את האפליקציה. מעלים תמונה של הכלי החשמלי הישן ומאפשרים ל-Gemini לעשות את השאר.
נקודות חשובות ופתרון בעיות
הלולאה 'הבדיקה נכשלה' | אם הפריסה מסתיימת אבל כתובת ה-URL מחזירה |
תפקיד ה-IAM 'Shadow' | גם אם לכם יש הרשאה לפרוס, לחשבון השירות של Cloud Run (בדרך כלל |
9. פתרון בעיות ברמה גבוהה

10. הדגמה (דמו)
אפשר להשתמש בנקודת הקצה לבדיקות.
אבל למטרות הדגמה למשך כמה ימים, אתם יכולים להתנסות בזה:
11. הסרת המשאבים
אחרי שמסיימים את ה-Lab הזה, חשוב למחוק את אשכול AlloyDB ואת המכונה.
הוא צריך לנקות את האשכול יחד עם המכונות שלו.
12. מזל טוב
יצרתם בהצלחה את אפליקציית Neighbor Loop לקהילות בנות-קיימא באמצעות Google Cloud. העברת ההטמעה והלוגיקה של Gemini 3 Flash AI אל AlloyDB מאפשרת לאפליקציה לפעול במהירות רבה (בהתאם להגדרות הפריסה), והקוד נקי במיוחד. אנחנו לא רק מאחסנים נתונים – אנחנו מאחסנים כוונה.
השילוב בין המהירות של Gemini 3 Flash לבין עיבוד הווקטורים המותאם של AlloyDB מייצג את הגבול הבא של פלטפורמות שמבוססות על קהילה.