۱. مرور کلی
در این آزمایشگاه کد، شما Neighbor Loop را خواهید ساخت، یک اپلیکیشن اشتراکگذاری مازاد پایدار که با هوش به عنوان یک شهروند درجه یک از لایه داده رفتار میکند.
با ادغام Gemini 3.0 Flash و AlloyDB AI، شما از فضای ذخیرهسازی پایه به حوزه هوش درون پایگاه داده قدم خواهید گذاشت. شما یاد خواهید گرفت که چگونه تجزیه و تحلیل آیتمهای چندوجهی و کشف معنایی را مستقیماً در SQL انجام دهید و "مالیات هوش مصنوعی" ناشی از تأخیر و حجم زیاد معماری را از بین ببرید.

آنچه خواهید ساخت
یک برنامه وب با عملکرد بالا و قابلیت «کشیدن برای تطبیق» برای اشتراکگذاری مازاد جامعه.
آنچه یاد خواهید گرفت
- تأمین با یک کلیک: نحوه راهاندازی یک کلاستر و نمونه AlloyDB که برای بارهای کاری هوش مصنوعی طراحی شده است.
- جاسازیهای درون پایگاه داده: تولید بردارهای text-embedding-005 مستقیماً درون دستورات INSERT.
- استدلال چندوجهی: استفاده از Gemini 3.0 Flash برای «دیدن» موارد و تولید خودکار بیوگرافیهای طنزآمیز به سبک قرار ملاقات.
- کشف معنایی: انجام «بررسیهای ارتعاشی» مبتنی بر منطق درون کوئریهای SQL با استفاده از تابع ai.if() برای فیلتر کردن نتایج بر اساس زمینه، نه فقط ریاضی.
معماری
حلقه همسایه (Neighbor Loop) گلوگاههای سنتی لایه برنامه را دور میزند. به جای بیرون کشیدن دادهها برای پردازش آنها، از موارد زیر استفاده میکنیم:
- AlloyDB AI: برای تولید و ذخیره بردارها به صورت بلادرنگ.
- فضای ابری گوگل: برای ذخیره تصاویر
- Gemini 3.0 Flash: برای انجام استدلال زیر ثانیهای روی دادههای تصویر و متن مستقیماً از طریق SQL.
- Cloud Run: برای میزبانی یک بکاند سبک و تکفایلی Flask.
الزامات
۲. قبل از شروع
ایجاد یک پروژه
- در کنسول گوگل کلود ، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید.
- مطمئن شوید که صورتحساب برای پروژه ابری شما فعال است. یاد بگیرید که چگونه بررسی کنید که آیا صورتحساب در یک پروژه فعال است یا خیر .
- شما از Cloud Shell ، یک محیط خط فرمان که در Google Cloud اجرا میشود، استفاده خواهید کرد. روی Activate 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 به عنوان پایگاه داده برای دادههای آزمایشی استفاده خواهیم کرد. این پایگاه داده از خوشهها برای نگهداری تمام منابع، مانند پایگاههای داده و گزارشها، استفاده میکند. هر خوشه یک نمونه اصلی دارد که یک نقطه دسترسی به دادهها را فراهم میکند. جداول، دادههای واقعی را نگهداری میکنند.
بیایید یک کلاستر، نمونه و جدول AlloyDB ایجاد کنیم که مجموعه دادههای آزمایشی در آن بارگذاری شوند.
- روی دکمه کلیک کنید یا لینک زیر را در مرورگر خود که کاربر Google Cloud Console در آن وارد شده است، کپی کنید.
- پس از اتمام این مرحله، مخزن در ویرایشگر پوسته ابری محلی شما کلون میشود و میتوانید دستور زیر را از پوشه پروژه اجرا کنید (مهم است که مطمئن شوید در دایرکتوری پروژه هستید):
sh run.sh
- حالا از رابط کاربری استفاده کنید (با کلیک روی لینک در ترمینال یا کلیک روی لینک «پیشنمایش در وب» در ترمینال).
- برای شروع، اطلاعات مربوط به شناسه پروژه، نام کلاستر و نمونه را وارد کنید.
- در حالی که کندهها در حال حرکت هستند، یک قهوه بنوشید و میتوانید در اینجا در مورد چگونگی انجام این کار در پشت صحنه بخوانید.
اشکالات و عیبیابی
مشکل «صبر» | خوشههای پایگاه داده زیرساختهای سنگینی هستند. اگر صفحه را رفرش کنید یا جلسه Cloud Shell را به دلیل «گیر کردن» از بین ببرید، ممکن است در نهایت با یک نمونه «شبح» مواجه شوید که تا حدی آماده شده و حذف آن بدون مداخله دستی غیرممکن است. |
عدم تطابق منطقه | اگر APIهای خود را در |
خوشههای زامبی | اگر قبلاً از نام یکسانی برای یک خوشه استفاده کرده باشید و آن را حذف نکرده باشید، ممکن است اسکریپت بگوید که نام خوشه از قبل وجود دارد. نام خوشهها باید در یک پروژه منحصر به فرد باشند. |
مهلت زمانی پوسته ابری | اگر زمان استراحت قهوه شما 30 دقیقه طول بکشد، ممکن است Cloud Shell به حالت خواب برود و فرآیند |
۴. تأمین طرحواره
پس از اجرای کلاستر و نمونه AlloyDB، به ویرایشگر SQL در AlloyDB Studio بروید تا افزونههای هوش مصنوعی را فعال کرده و طرحواره را آماده کنید.

ممکن است لازم باشد منتظر بمانید تا نمونه شما به طور کامل ایجاد شود. پس از اتمام این کار، با استفاده از اعتبارنامههایی که هنگام ایجاد خوشه ایجاد کردهاید، وارد AlloyDB شوید. از دادههای زیر برای تأیید اعتبار در PostgreSQL استفاده کنید:
- نام کاربری: "
postgres" - پایگاه داده: "
postgres" - رمز عبور: "
alloydb" (یا هر چیزی که در زمان ایجاد تعیین کردهاید)
پس از اینکه با موفقیت در AlloyDB Studio احراز هویت شدید، دستورات SQL در ویرایشگر وارد میشوند. میتوانید با استفاده از علامت + در سمت راست آخرین پنجره، چندین پنجره ویرایشگر اضافه کنید.

شما میتوانید دستورات AlloyDB را در پنجرههای ویرایشگر وارد کنید و در صورت لزوم از گزینههای Run، Format و Clear استفاده کنید.
فعال کردن افزونهها
برای ساخت این برنامه، از افزونههای pgvector و google_ml_integration استفاده خواهیم کرد. افزونه pgvector به شما امکان ذخیره و جستجوی جاسازیهای برداری را میدهد. افزونه google_ml_integration توابعی را ارائه میدهد که برای دسترسی به نقاط پایانی پیشبینی هوش مصنوعی Vertex برای دریافت پیشبینیها در 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;
اعطای نقش کاربری Vertex AI به حساب سرویس AlloyDB
از کنسول Google Cloud IAM ، به حساب سرویس AlloyDB (که به این شکل است: service-<<PROJECT_NUMBER>>@gcp-sa-alloydb.iam.gserviceaccount.com) دسترسی به نقش "Vertex AI User" را بدهید. PROJECT_NUMBER شماره پروژه شما را خواهد داشت.
همچنین میتوانید دستور زیر را از ترمینال Cloud Shell اجرا کنید:
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 اجرا کنید.
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.
اشکالات و عیبیابی
حلقهی «فراموشی رمز عبور» | اگر از تنظیمات «یک کلیک» استفاده کردهاید و رمز عبور خود را به خاطر نمیآورید، به صفحه اطلاعات اولیه Instance در کنسول بروید و برای تنظیم مجدد رمز عبور |
خطای "افزونه یافت نشد" | اگر |
شکاف انتشار IAM | شما دستور |
عدم تطابق ابعاد برداری | جدول |
شناسه پروژه، غلط املایی | در فراخوانی |
۵. فضای ذخیرهسازی تصویر (فضای ذخیرهسازی ابری گوگل)
برای ذخیره عکسهای اقلام اضافیمان، از یک سطل GCS استفاده میکنیم. برای این اپلیکیشن آزمایشی، میخواهیم تصاویر به صورت عمومی در دسترس باشند تا فوراً در کارتهای ما نمایش داده شوند.
- ایجاد یک سطل: یک سطل جدید در پروژه GCP خود (مثلاً neighborloop-images) ایجاد کنید ، ترجیحاً در همان ناحیهای که پایگاه داده و برنامه شما قرار دارد.
- پیکربندی دسترسی عمومی: * به برگه مجوزهای سطل بروید.
- تابع اصلی allUsers را اضافه کنید.
- نقش «مشاهدهگر اشیاء ذخیرهسازی» (تا همه بتوانند عکسها را ببینند) و نقش « خالق اشیاء ذخیرهسازی» (برای آپلود نسخه آزمایشی) را تعیین کنید.
جایگزین (حساب کاربری سرویس): اگر ترجیح میدهید از دسترسی عمومی استفاده نکنید، مطمئن شوید که به حساب کاربری سرویس برنامه شما دسترسی کامل به AlloyDB و نقشهای ذخیرهسازی لازم برای مدیریت ایمن اشیاء داده شده است.
اشکالات و عیبیابی
کشش منطقه | اگر پایگاه داده شما در |
منحصر به فرد بودن نام سطل | نامهای سطل یک فضای نام سراسری هستند. اگر سعی کنید سطل خود را |
خلط مبحث «خالق» در مقابل «بیننده» | اشتباه در انتخاب «خالق» در مقابل «مشاهدهگر»: اگر فقط «مشاهدهگر» را اضافه کنید، وقتی کاربر سعی میکند یک مورد جدید را فهرست کند، برنامه شما از کار میافتد زیرا مجوز نوشتن فایل را ندارد. برای این تنظیمات نمایشی خاص، به هر دو نیاز دارید. |
۶. بیایید برنامه را ایجاد کنیم
این مخزن را در پروژه خود کلون کنید و بیایید آن را بررسی کنیم.
- برای کلون کردن این، از ترمینال Cloud Shell خود (در دایرکتوری ریشه یا از هر جایی که میخواهید این پروژه را ایجاد کنید)، دستور زیر را اجرا کنید:
git clone https://github.com/AbiramiSukumaran/neighbor-loop
این باید پروژه را ایجاد کند و شما میتوانید آن را در ویرایشگر Cloud Shell تأیید کنید.

- چگونه کلید API جمینی خود را دریافت کنید
- از استودیوی هوش مصنوعی گوگل دیدن کنید: به aistudio.google.com بروید.
- ورود: از همان حساب گوگلی که برای پروژه گوگل کلود خود استفاده میکنید، استفاده کنید.
- ایجاد کلید 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>>.
اشکالات و عیبیابی
سردرگمی در مورد حسابهای کاربری متعدد | اگر به چندین حساب گوگل (شخصی در مقابل کاری) وارد شدهاید، ممکن است AI Studio به طور پیشفرض روی حساب اشتباهی تنظیم شود. آواتار گوشه بالا سمت راست را بررسی کنید تا مطمئن شوید که با حساب پروژه GCP شما مطابقت دارد. |
سهمیه «ردیف رایگان» به اوج خود رسید | اگر از سطح رایگان استفاده میکنید، محدودیتهای سرعت وجود دارد (RPM - درخواست در دقیقه). اگر در حلقه همسایه خیلی سریع "swipe" کنید، ممکن است با خطای |
امنیت کلید افشا شده | اگر به طور تصادفی فایل |
اعتبار «زمان اتصال» | شما از آدرس IP خصوصی در فایل .env خود استفاده کردهاید، اما سعی دارید از خارج از VPC (مانند دستگاه محلی خود) متصل شوید. IPهای خصوصی فقط از داخل همان شبکه Google Cloud قابل دسترسی هستند. به IP عمومی تغییر دهید! |
فرضیه بندر ۵۴۳۲ | اگرچه ۵۴۳۲ پورت استاندارد PostgreSQL است، اما AlloyDB گاهی اوقات در صورت استفاده از Auth Proxy به پیکربندیهای خاصی از پورت نیاز دارد. برای این آزمایش، مطمئن شوید که از :۵۴۳۲ در انتهای رشته میزبان خود استفاده میکنید. |
دروازهبان «شبکههای مجاز» | حتی اگر IP عمومی را داشته باشید، AlloyDB اتصال را "رد میکند" مگر اینکه آدرس IP دستگاهی که کد را اجرا میکند را در لیست سفید قرار داده باشید. راه حل: در تنظیمات نمونه AlloyDB، 0.0.0.0/0 (فقط برای آزمایش موقت!) یا IP خاص خود را به شبکههای مجاز اضافه کنید. |
خطای SSL/TLS Handshake | AlloyDB اتصالات امن را ترجیح میدهد. اگر DATABASE_URL شما درایور را به درستی مشخص نکند (مانند استفاده از pg8000 )، ممکن است عملیات handshake به طور بیصدا انجام نشود و شما را با خطای عمومی "Database not reachable" مواجه کند. |
تعویض «مخزن اصلی در مقابل مخزن خواندن» | اگر به طور تصادفی آدرس IP مربوط به Read Pool را به جای Primary Instance کپی کنید، برنامه شما برای جستجوی موارد کار میکند اما هنگام تلاش برای لیست کردن یک مورد جدید، با خطای "فقط خواندنی" از کار میافتد. همیشه برای نوشتن از Primary Instance IP استفاده کنید. |
۷. بیایید کد را بررسی کنیم
«پروفایل دوستیابی» برای سایت شما

وقتی کاربری عکسی از یک کالا آپلود میکند، نباید مجبور باشد توضیح طولانی بنویسد. من از 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 است. به جای فراخوانی یک مدل جاسازی در پایتون و ارسال بردار به پایگاه داده، من همه این کارها را در یک دستور 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 به ما اجازه میدهد مدلهایی مانند 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 یک "بررسی ارتعاش" را در داخل موتور پایگاه داده انجام میدهد. این امر باعث کاهش تأخیر، کاهش هزینههای خروجی و تضمین این میشود که نتایج نه تنها از نظر ریاضی مشابه هستند، بلکه از نظر زمینهای نیز مرتبط هستند.

حلقه «کشیدن برای تطبیق»
رابط کاربری یک دسته کارت کلاسیک است.
کشیدن انگشت به چپ: حذف کردن.
به راست بکشید: این یک تطابق است!

وقتی به سمت راست میکشید، بکاند تعامل را در جدول سوایپهای ما ثبت میکند و کالا را به عنوان منطبق علامتگذاری میکند. فرانتاند فوراً یک پنجرهی مودال را باز میکند که اطلاعات تماس ارائهدهنده را نشان میدهد تا بتوانید زمان تحویل گرفتن کالا را هماهنگ کنید.
۸. بیایید آن را در Cloud Run مستقر کنیم
- با اجرای دستور زیر از ترمینال Cloud Shell که پروژه در آن کلون شده است، آن را روی Cloud Run مستقر کنید و مطمئن شوید که در پوشه ریشه پروژه هستید .
این را در ترمینال 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 سرویس نمایش داده میشود. آن را کپی کنید.
- نقش AlloyDB Client را به حساب سرویس Cloud Run اعطا کنید. این به برنامه بدون سرور شما اجازه میدهد تا به طور ایمن به پایگاه داده تونل بزند.
این را در ترمینال 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"
حالا از آدرس اینترنتی سرویس (نقطه پایانی Cloud Run که قبلاً کپی کردهاید) استفاده کنید و برنامه را آزمایش کنید. عکسی از آن ابزار برقی قدیمی آپلود کنید و بگذارید Gemini بقیه کارها را انجام دهد!
اشکالات و عیبیابی
حلقهی «بازنگری ناموفق» | اگر نصب تمام شد اما URL |
نقش «سایه» IAM | حتی اگر مجوز استقرار را داشته باشید ، حساب کاربری سرویس Cloud Run (معمولاً |
۹. عیبیابی سطح بالا

۱۰. نسخه آزمایشی
شما باید بتوانید از نقطه پایانی خود برای آزمایشها استفاده کنید.
اما برای اهداف آزمایشی برای چند روز، میتوانید با این کار کنید:
۱۱. تمیز کردن
پس از انجام این آزمایش، فراموش نکنید که کلاستر و نمونه alloyDB را حذف کنید.
باید کلاستر را به همراه نمونه(های) آن پاکسازی کند.
۱۲. تبریک
شما با موفقیت برنامه Neighbor Loop را برای جوامع پایدار با Google Cloud ساختید. با انتقال جاسازی و منطق هوش مصنوعی Gemini 3 Flash به AlloyDB ، برنامه فوقالعاده سریع است (منوط به تنظیمات استقرار) و کد به طرز چشمگیری تمیز است. ما فقط دادهها را ذخیره نمیکنیم - ما قصد (intent) را ذخیره میکنیم.
ترکیب سرعت Gemini 3 Flash و پردازش برداری بهینه AlloyDB واقعاً مرز بعدی برای پلتفرمهای مبتنی بر جامعه است.