1. ภาพรวม
ในโค้ดแล็บนี้ คุณจะได้สร้าง Neighbor Loop ซึ่งเป็นแอปแชร์ส่วนเกินที่ยั่งยืนซึ่งถือว่าความอัจฉริยะเป็นพลเมืองชั้นหนึ่งของเลเยอร์ข้อมูล
การผสานรวม Gemini 3.0 Flash และการผสานรวม ML ของ Cloud SQL จะช่วยให้คุณก้าวข้ามการจัดเก็บข้อมูลขั้นพื้นฐานไปสู่ขอบเขตของข้อมูลอัจฉริยะในฐานข้อมูล คุณจะได้เรียนรู้วิธีวิเคราะห์สินค้าแบบหลายรูปแบบและการค้นพบเชิงความหมายภายใน SQL โดยตรง

สิ่งที่คุณจะสร้าง
เว็บแอปพลิเคชัน "ปัดเพื่อจับคู่" ประสิทธิภาพสูงสำหรับการแชร์ของเหลือในชุมชน
สิ่งที่คุณจะได้เรียนรู้
- การจัดสรรด้วยการคลิกเพียงครั้งเดียว: วิธีตั้งค่า Cloud SQL และอินสแตนซ์ที่ออกแบบมาสำหรับภาระงาน AI
- การฝังในฐานข้อมูล: สร้างเวกเตอร์ text-embedding-005 ภายในคำสั่ง INSERT โดยตรง
- การให้เหตุผลแบบมัลติโมดัล: ใช้ Gemini 3.0 Flash เพื่อ "ดู" รายการและสร้างไบโอสไตล์การหาคู่ที่เฉลียวฉลาดโดยอัตโนมัติ
- การค้นพบเชิงความหมาย: การ "ตรวจสอบความรู้สึก" ตามตรรกะภายในคำค้นหา SQL โดยใช้ฟังก์ชัน ai.if() เพื่อกรองผลลัพธ์ตามบริบท ไม่ใช่แค่คณิตศาสตร์
สถาปัตยกรรม
Neighbor Loop จะข้ามการติดขัดที่เลเยอร์แอปพลิเคชันแบบเดิม เราใช้สิ่งต่อไปนี้แทนการดึงข้อมูลออกมาเพื่อประมวลผล
- การผสานรวม Cloud SQL + ML: เพื่อสร้างและจัดเก็บเวกเตอร์แบบเรียลไทม์
- Google Cloud Storage: เพื่อจัดเก็บรูปภาพ
- Gemini 3.0 Flash: เพื่อดำเนินการให้เหตุผลในระดับต่ำกว่าวินาทีเกี่ยวกับข้อมูลรูปภาพและข้อความโดยตรงผ่าน SQL
- Cloud Run: เพื่อโฮสต์แบ็กเอนด์ Flask แบบไฟล์เดียวที่มีน้ำหนักเบา
ข้อกำหนด
2. ก่อนเริ่มต้น
สร้างโปรเจ็กต์
- ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ 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 ในเอกสารประกอบ
ข้อควรระวังและการแก้ปัญหา
กลุ่มอาการ"โปรเจ็กต์ผี" | คุณเรียกใช้ |
แผงกั้น การเรียกเก็บเงิน | คุณเปิดใช้โปรเจ็กต์แล้ว แต่ลืมบัญชีสำหรับการเรียกเก็บเงิน Cloud SQL จะไม่เริ่มทำงานหากการเรียกเก็บเงินว่างเปล่า |
ความล่าช้าการเผยแพร่ API | คุณคลิก "เปิดใช้ API" แต่บรรทัดคำสั่งยังคงแสดง |
3. การตั้งค่าฐานข้อมูล
ใน Lab นี้ เราจะใช้ Cloud SQL สำหรับ PostgreSQL เป็นฐานข้อมูลสำหรับข้อมูลทดสอบ
มาสร้างอินสแตนซ์ Cloud SQL ที่จะโหลดชุดข้อมูลทดสอบกัน
- คลิกปุ่มหรือคัดลอกลิงก์ด้านล่างไปยังเบราว์เซอร์ที่คุณเข้าสู่ระบบผู้ใช้ Google Cloud Console
- เมื่อทำขั้นตอนนี้เสร็จแล้ว ระบบจะโคลนที่เก็บไปยังโปรแกรมแก้ไข Cloud Shell ในเครื่อง และคุณจะเรียกใช้คำสั่งด้านล่างจากโฟลเดอร์โปรเจ็กต์ได้ (โปรดตรวจสอบว่าคุณอยู่ในไดเรกทอรีโปรเจ็กต์)
sh run.sh
- ตอนนี้ให้ใช้ UI (คลิกลิงก์ในเทอร์มินัลหรือคลิกลิงก์ "แสดงตัวอย่างบนเว็บ" ในเทอร์มินัล)
- ป้อนรายละเอียดสำหรับรหัสโปรเจ็กต์และชื่ออินสแตนซ์เพื่อเริ่มต้นใช้งาน
- ไปหากาแฟดื่มระหว่างที่บันทึกเลื่อนลงมาได้เลย และคุณสามารถอ่านเกี่ยวกับวิธีที่ระบบดำเนินการนี้เบื้องหลังได้ที่นี่
ข้อควรระวังและการแก้ปัญหา
ภูมิภาคไม่ตรงกัน | หากเปิดใช้ API ใน |
การหมดเวลาของ Cloud Shell | หากคุณพักดื่มกาแฟเป็นเวลา 30 นาที Cloud Shell อาจเข้าสู่โหมดสลีปและยกเลิกการเชื่อมต่อกระบวนการ |
4. การจัดสรรสคีมา
เมื่ออินสแตนซ์ Cloud SQL ทำงานแล้ว ให้ไปที่โปรแกรมแก้ไข SQL ของ Cloud SQL Studio เพื่อเปิดใช้ส่วนขยาย AI และจัดสรรสคีมา

คุณอาจต้องรอให้อินสแตนซ์สร้างเสร็จเรียบร้อย เมื่อพร้อมแล้ว ให้ลงชื่อเข้าใช้อินสแตนซ์ Cloud SQL โดยใช้ข้อมูลเข้าสู่ระบบที่คุณสร้างขึ้นเมื่อสร้างอินสแตนซ์ ใช้ข้อมูลต่อไปนี้เพื่อตรวจสอบสิทธิ์ใน PostgreSQL
- ชื่อผู้ใช้ : "
postgres" - ฐานข้อมูล : "
postgres" - รหัสผ่าน : "
cloudsql" (หรือรหัสผ่านที่คุณตั้งค่าไว้ตอนสร้าง)
เมื่อตรวจสอบสิทธิ์ใน Cloud SQL Studio สำเร็จแล้ว ให้ป้อนคำสั่ง SQL ในตัวแก้ไข คุณเพิ่มหน้าต่างเอดิเตอร์หลายหน้าต่างได้โดยใช้เครื่องหมายบวกทางด้านขวาของหน้าต่างสุดท้าย

คุณจะป้อนคำสั่งสำหรับ Cloud SQL ในหน้าต่างเอดิเตอร์ โดยใช้ตัวเลือกเรียกใช้ จัดรูปแบบ และล้างตามที่จำเป็น
เปิดใช้ส่วนขยาย
ในการสร้างแอปนี้ เราจะใช้ส่วนขยาย 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 จะอนุญาตให้จัดเก็บค่าเวกเตอร์ของข้อความ
ให้สิทธิ์
เรียกใช้คำสั่งด้านล่างเพื่อให้สิทธิ์ดำเนินการในฟังก์ชัน "ฝัง"
GRANT EXECUTE ON FUNCTION embedding TO postgres;
เปิดใช้การผสานรวม ML
หากต้องการใช้ประโยชน์จากฟีเจอร์แมชชีนเลิร์นนิงภายในฐานข้อมูลโดยตรง คุณต้องเปิดใช้ Flag การผสานรวม ML
คุณเรียกใช้คำสั่งด้านล่างจากเทอร์มินัล Cloud Shell ได้
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
จากคอนโซล Google Cloud IAM ให้ให้สิทธิ์เข้าถึงบทบาท "ผู้ใช้ Vertex AI" แก่บัญชีบริการ Cloud SQL (ซึ่งมีลักษณะดังนี้ service-<<PROJECT_NUMBER >>@cp-sa-cloud-sql.iam.gserviceaccount.com) PROJECT_NUMBER จะมีหมายเลขโปรเจ็กต์ของคุณ
หรือคุณอาจเรียกใช้คำสั่งด้านล่างจากเทอร์มินัล Cloud Shell ก็ได้
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
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.
ข้อควรระวังและการแก้ปัญหา
วงจร "ลืมรหัสผ่าน" | หากคุณใช้การตั้งค่า "คลิกเดียว" และจำรหัสผ่านไม่ได้ ให้ไปที่หน้าข้อมูลพื้นฐานของอินสแตนซ์ในคอนโซล แล้วคลิก "แก้ไข" เพื่อรีเซ็ตรหัสผ่าน |
ข้อผิดพลาด "ไม่พบส่วนขยาย" | หาก |
ช่องว่างในการเผยแพร่ IAM | คุณเรียกใช้ |
มิติข้อมูลเวกเตอร์ไม่ตรงกัน | ตั้งค่าตาราง |
พิมพ์รหัสโปรเจ็กต์ผิด | ใน |
การผสานรวม Vertex AI ปิดใช้อยู่ | เรียกใช้ |
5. ที่เก็บรูปภาพ (Google Cloud Storage)
เราใช้ที่เก็บข้อมูล GCS เพื่อจัดเก็บรูปภาพของสินค้าคงค้าง สำหรับแอปเดโมนี้ เราต้องการให้รูปภาพเข้าถึงได้แบบสาธารณะเพื่อให้แสดงผลในการ์ดปัดได้ทันที
- สร้าง Bucket: สร้าง Bucket ใหม่ในโปรเจ็กต์ GCP (เช่น neighborloop-images) โดยควรอยู่ในภูมิภาคเดียวกับฐานข้อมูลและแอปพลิเคชัน
- กำหนดค่าการเข้าถึงแบบสาธารณะ: * ไปที่แท็บสิทธิ์ของที่เก็บข้อมูล
- เพิ่มหลักการ allUsers
- มอบหมายบทบาทผู้ดูออบเจ็กต์ในพื้นที่เก็บข้อมูล (เพื่อให้ทุกคนดูรูปภาพได้) และบทบาทผู้สร้างออบเจ็กต์ในพื้นที่เก็บข้อมูล (เพื่อวัตถุประสงค์ในการอัปโหลดการสาธิต)
ทางเลือก (บัญชีบริการ): หากไม่ต้องการใช้การเข้าถึงแบบสาธารณะ โปรดตรวจสอบว่าบัญชีบริการของแอปพลิเคชันได้รับสิทธิ์เข้าถึง Cloud SQL อย่างเต็มรูปแบบและบทบาท Storage ที่จำเป็นเพื่อจัดการออบเจ็กต์อย่างปลอดภัย
หากต้องการเรียกใช้คำสั่งและให้สิทธิ์เข้าถึงแบบสาธารณะ เรียกใช้คำสั่งด้านล่างในเทอร์มินัลของ 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 | หากฐานข้อมูลอยู่ใน |
ชื่อที่เก็บข้อมูลต้องไม่ซ้ำกัน | ชื่อ Bucket เป็นเนมสเปซส่วนกลาง หากคุณพยายามตั้งชื่อ Bucket เป็น |
ความสับสนระหว่าง "ครีเอเตอร์" กับ "ผู้ชม" | การสับสนระหว่าง "ผู้สร้าง" กับ "ผู้ดู": หากคุณเพิ่มเฉพาะ "ผู้ดู" แอปจะขัดข้องเมื่อผู้ใช้พยายามแสดงรายการใหม่ เนื่องจากไม่มีสิทธิ์เขียนไฟล์ คุณต้องมีทั้ง 2 อย่างนี้สำหรับการตั้งค่าการสาธิตนี้ |
6. มาสร้างแอปพลิเคชันกัน
โคลนที่เก็บนี้ลงในโปรเจ็กต์ของคุณ แล้วมาดูรายละเอียดกัน
- หากต้องการโคลน ให้เรียกใช้คำสั่งต่อไปนี้ทีละคำสั่งจากเทอร์มินัล Cloud Shell (ในไดเรกทอรีรากหรือจากที่ใดก็ตามที่คุณต้องการสร้างโปรเจ็กต์นี้)
git clone https://github.com/flazer99/neighbor-loop-cloud-sql
cd neighbor-loop-cloud-sql/
ซึ่งควรสร้างโปรเจ็กต์และคุณสามารถยืนยันได้ใน Cloud Shell Editor

- วิธีรับคีย์ 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 |
โควต้า "Free Tier" ถึงขีดจำกัด | หากคุณใช้ระดับแบบไม่มีค่าใช้จ่าย จะมีขีดจำกัดอัตรา (RPM - คำขอต่อนาที) หาก "ปัด" เร็วเกินไปใน Neighbor Loop คุณอาจได้รับข้อผิดพลาด |
ความปลอดภัยของคีย์ที่เปิดเผย | หากคุณ |
7. มาตรวจสอบรหัสกัน
"โปรไฟล์หาคู่" สำหรับสิ่งที่คุณมี

เมื่อผู้ใช้อัปโหลดรูปภาพของสินค้า ผู้ใช้ไม่ควรต้องเขียนคำอธิบายยาวๆ ฉันใช้ 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")
)

การฝังในฐานข้อมูลแบบเรียลไทม์

ฟีเจอร์ที่ยอดเยี่ยมอย่างหนึ่งของ Cloud SQL คือความสามารถในการสร้างการฝังโดยไม่ต้องออกจากบริบท SQL แทนที่จะเรียกใช้โมเดลการฝังใน Python และส่งเวกเตอร์กลับไปยัง DB ฉันทำทุกอย่างในคำสั่ง 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 แก้ปัญหานี้ด้วยการค้นหาเวกเตอร์ขั้นสูงของ AI ใน Cloud SQL
การใช้ส่วนขยาย 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 จะทำการ "ตรวจสอบบรรยากาศ" ภายในเครื่องมือฐานข้อมูลแทนที่จะดึงผลลัพธ์หลายพันรายการลงในโค้ดแอปพลิเคชันเพื่อกรอง ซึ่งจะช่วยลดเวลาในการตอบสนอง ลดต้นทุนสำหรับข้อมูลขาออก และทำให้มั่นใจได้ว่าผลลัพธ์จะไม่เพียงแค่มีความคล้ายคลึงกันในเชิงคณิตศาสตร์ แต่ยังมีความเกี่ยวข้องตามบริบทด้วย

วงจร "ปัดเพื่อจับคู่"
UI เป็นสำรับไพ่คลาสสิก
ปัดไปทางซ้าย: ทิ้ง
ปัดไปทางขวา: คุณจับคู่ได้แล้ว

เมื่อคุณปัดไปทางขวา แบ็กเอนด์จะบันทึกการโต้ตอบในตารางการปัดของเราและทําเครื่องหมายรายการว่าตรงกัน ส่วนหน้าจะทริกเกอร์โมดอลทันทีเพื่อแสดงข้อมูลติดต่อของผู้ให้บริการเพื่อให้คุณจัดเตรียมการรับสินค้าได้
8. มาทำให้ใช้งานได้ใน Cloud Run กัน
- ทำให้ใช้งานได้ใน Cloud Run โดยเรียกใช้คำสั่งต่อไปนี้จากเทอร์มินัล Cloud Shell ที่โคลนโปรเจ็กต์และตรวจสอบว่าคุณอยู่ในโฟลเดอร์รูทของโปรเจ็กต์
เรียกใช้คำสั่งนี้ในเทอร์มินัล 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 แสดง |
9. การแก้ปัญหาในระดับสูง

10. สาธิต
คุณควรใช้ปลายทางสำหรับการทดสอบได้
แต่หากต้องการใช้เพื่อการสาธิตเป็นเวลา 2-3 วัน คุณสามารถลองใช้สิ่งต่อไปนี้ได้
11. ล้างข้อมูล
เมื่อทำแล็บนี้เสร็จแล้ว อย่าลืมลบอินสแตนซ์ Cloud SQL
12. ขอแสดงความยินดี
คุณสร้างแอป Neighbor Loop สำหรับชุมชนที่ยั่งยืนด้วย Google Cloud เรียบร้อยแล้ว การย้ายตรรกะการฝังและ AI ของ Gemini 3 Flash ไปยัง Cloud SQL ทำให้แอปทำงานได้รวดเร็วอย่างไม่น่าเชื่อ (ขึ้นอยู่กับการตั้งค่าการติดตั้งใช้งาน) และโค้ดก็สะอาดอย่างเห็นได้ชัด เราไม่ได้จัดเก็บแค่ข้อมูล แต่เราจัดเก็บเจตนาด้วย
การผสานความเร็วของ Gemini 3 Flash เข้ากับการประมวลผลเวกเตอร์ที่ได้รับการเพิ่มประสิทธิภาพของ Cloud SQL ถือเป็นขอบเขตใหม่สำหรับแพลตฟอร์มที่ขับเคลื่อนโดยชุมชนอย่างแท้จริง