1. مقدمه

در این کد لبه، نحوه ایجاد یک خوشه AlloyDB، استقرار جعبه ابزار MCP و پیکربندی آن برای استفاده از AlloyDB به عنوان منبع داده را خواهید آموخت. سپس یک نمونه برنامه RAG تعاملی می سازید که از جعبه ابزار مستقر شده برای زمین کردن درخواست های خود استفاده می کند.

می توانید اطلاعات بیشتری در مورد جعبه ابزار MCP در صفحه مستندات و نمونه برنامه Cymbal Air در اینجا دریافت کنید.
این آزمایشگاه بخشی از مجموعه آزمایشگاهی است که به ویژگی های هوش مصنوعی AlloyDB اختصاص دارد. میتوانید اطلاعات بیشتری را در صفحه AlloyDB AI در مستندات بخوانید و آزمایشگاههای دیگر را ببینید.
پیش نیازها
- درک اولیه از Google Cloud Console
- مهارت های اولیه در رابط خط فرمان و پوسته Google Cloud
چیزی که یاد خواهید گرفت
- نحوه استقرار AlloyDB Cluster با ادغام Vertex AI
- نحوه اتصال به AlloyDB
- نحوه پیکربندی و استقرار MCP Toolbox Service
- نحوه استقرار یک برنامه نمونه با استفاده از سرویس مستقر شده
آنچه شما نیاز دارید
- یک حساب Google Cloud و پروژه Google Cloud
- یک مرورگر وب مانند کروم
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .



- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام
PROJECT_IDشناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورتحساب فراتر از این آموزش، میتوانید منابعی را که ایجاد کردهاید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.
3. قبل از شروع
فعال کردن API
خروجی:
در داخل Cloud Shell، مطمئن شوید که ID پروژه شما تنظیم شده است:
معمولاً ID پروژه در داخل پرانتز در خط فرمان در پوسته ابری همانطور که در تصویر نشان داده شده است نشان داده می شود:

gcloud config set project [YOUR-PROJECT-ID]
سپس متغیر محیطی PROJECT_ID را روی شناسه پروژه Google Cloud خود تنظیم کنید:
PROJECT_ID=$(gcloud config get-value project)
فعال کردن تمام خدمات لازم:
gcloud services enable alloydb.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
vpcaccess.googleapis.com \
aiplatform.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
run.googleapis.com \
iam.googleapis.com \
secretmanager.googleapis.com
خروجی مورد انتظار
student@cloudshell:~ (gleb-test-short-004)$ gcloud services enable alloydb.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
vpcaccess.googleapis.com \
aiplatform.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
run.googleapis.com \
iam.googleapis.com \
secretmanager.googleapis.com
Operation "operations/acf.p2-404051529011-664c71ad-cb2b-4ab4-86c1-1f3157d70ba1" finished successfully.
4. AlloyDB Cluster را مستقر کنید
خوشه AlloyDB و نمونه اولیه ایجاد کنید. روش زیر نحوه ایجاد یک خوشه و نمونه AlloyDB با استفاده از Google Cloud SDK را توضیح می دهد. اگر رویکرد کنسول را ترجیح می دهید، می توانید مستندات را در اینجا دنبال کنید.
قبل از ایجاد یک خوشه AlloyDB، ما به یک محدوده IP خصوصی در دسترس در VPC خود نیاز داریم تا توسط نمونه آینده AlloyDB استفاده شود. اگر آن را نداریم، باید آن را ایجاد کنیم، آن را اختصاص دهیم تا توسط سرویسهای داخلی گوگل استفاده شود و پس از آن میتوانیم خوشه و نمونه را ایجاد کنیم.
محدوده IP خصوصی ایجاد کنید
ما باید پیکربندی دسترسی به سرویس خصوصی را در VPC خود برای AlloyDB پیکربندی کنیم. فرض در اینجا این است که ما شبکه VPC "پیشفرض" را در پروژه داریم و قرار است برای همه اقدامات استفاده شود.
ایجاد محدوده IP خصوصی:
gcloud compute addresses create psa-range \
--global \
--purpose=VPC_PEERING \
--prefix-length=24 \
--description="VPC private service access" \
--network=default
با استفاده از محدوده IP اختصاص داده شده اتصال خصوصی ایجاد کنید:
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range \
--network=default
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-402417)$ gcloud compute addresses create psa-range \
--global \
--purpose=VPC_PEERING \
--prefix-length=24 \
--description="VPC private service access" \
--network=default
Created [https://www.googleapis.com/compute/v1/projects/test-project-402417/global/addresses/psa-range].
student@cloudshell:~ (test-project-402417)$ gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range \
--network=default
Operation "operations/pssn.p24-4470404856-595e209f-19b7-4669-8a71-cbd45de8ba66" finished successfully.
student@cloudshell:~ (test-project-402417)$
خوشه AlloyDB ایجاد کنید
در این بخش ما در حال ایجاد یک خوشه AlloyDB در منطقه us-central1 هستیم.
رمز عبور را برای کاربر postgres تعریف کنید. شما می توانید رمز عبور خود را تعریف کنید یا از یک تابع تصادفی برای ایجاد آن استفاده کنید
export PGPASSWORD=`openssl rand -hex 12`
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-402417)$ export PGPASSWORD=`openssl rand -hex 12`
برای استفاده در آینده به رمز عبور PostgreSQL توجه کنید.
echo $PGPASSWORD
برای اتصال به نمونه به عنوان کاربر postgres در آینده به آن رمز عبور نیاز خواهید داشت. پیشنهاد می کنم آن را یادداشت کنید یا در جایی کپی کنید تا بعدا بتوانید از آن استفاده کنید.
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-402417)$ echo $PGPASSWORD bbefbfde7601985b0dee5723
یک کلاستر آزمایشی رایگان ایجاد کنید
اگر قبلاً از AlloyDB استفاده نکردهاید، میتوانید یک کلاستر آزمایشی رایگان ایجاد کنید:
منطقه و نام خوشه AlloyDB را تعریف کنید. ما از ناحیه us-central1 و alloydb-aip-01 به عنوان نام خوشه استفاده می کنیم:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
برای ایجاد کلاستر دستور را اجرا کنید:
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION \
--subscription-type=TRIAL
خروجی کنسول مورد انتظار:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION \
--subscription-type=TRIAL
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.
در همان جلسه پوسته ابری، یک نمونه اولیه AlloyDB برای خوشه خود ایجاد کنید. اگر اتصال شما قطع شده است، باید دوباره متغیرهای محیط نام منطقه و خوشه را تعریف کنید.
gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=8 \
--region=$REGION \
--cluster=$ADBCLUSTER
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=8 \
--region=$REGION \
--availability-type ZONAL \
--cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.
خوشه استاندارد AlloyDB را ایجاد کنید
اگر اولین خوشه AlloyDB شما در پروژه نیست، با ایجاد یک خوشه استاندارد ادامه دهید.
منطقه و نام خوشه AlloyDB را تعریف کنید. ما از ناحیه us-central1 و alloydb-aip-01 به عنوان نام خوشه استفاده می کنیم:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
برای ایجاد کلاستر دستور را اجرا کنید:
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION
خروجی کنسول مورد انتظار:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.
در همان جلسه پوسته ابری، یک نمونه اولیه AlloyDB برای خوشه خود ایجاد کنید. اگر اتصال شما قطع شده است، باید دوباره متغیرهای محیط نام منطقه و خوشه را تعریف کنید.
gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=2 \
--region=$REGION \
--cluster=$ADBCLUSTER
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=2 \
--region=$REGION \
--availability-type ZONAL \
--cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.
مجوزهای لازم را به AlloyDB اعطا کنید
مجوزهای Vertex AI را به عامل سرویس AlloyDB اضافه کنید.
یک برگه دیگر 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"
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project) Your active configuration is: [cloudshell-11039] student@cloudshell:~ (test-project-001-402417)$ 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" Updated IAM policy for project [test-project-001-402417]. bindings: - members: - serviceAccount:service-4470404856@gcp-sa-alloydb.iam.gserviceaccount.com role: roles/aiplatform.user - members: ... etag: BwYIEbe_Z3U= version: 1
برگه را با یکی از دستورهای اجرایی "exit" در برگه ببندید:
exit
5. ماشین مجازی GCE را آماده کنید
ما میخواهیم از موتور محاسباتی گوگل (GCE) VM به عنوان پلتفرم خود برای کار با پایگاه داده و استقرار بخشهای مختلف برنامه نمونه استفاده کنیم. استفاده از VM به ما انعطاف پذیری بیشتری در اجزای نصب شده و دسترسی مستقیم به IP خصوصی AlloyDB برای مراحل آماده سازی داده ها می دهد.
ایجاد حساب سرویس
از آنجایی که ما از VM خود برای استقرار جعبه ابزار MCP به عنوان یک سرویس و استقرار یا میزبانی برنامه نمونه استفاده خواهیم کرد، اولین قدم ایجاد یک حساب سرویس Google (GSA) است. GSA توسط GCE VM استفاده خواهد شد و ما باید امتیازات لازم را برای کار با سایر سرویس ها به آن اعطا کنیم.
در Cloud Shell اجرا کنید:
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts create compute-aip --project $PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/cloudbuild.builds.editor"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/artifactregistry.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/storage.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/run.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountUser"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/alloydb.viewer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/alloydb.client"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/serviceusage.serviceUsageConsumer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com \
--role roles/secretmanager.admin
GCE VM را مستقر کنید
یک GCE VM در همان منطقه و VPC به عنوان خوشه AlloyDB ایجاد کنید.
در Cloud Shell اجرا کنید:
ZONE=us-central1-a
PROJECT_ID=$(gcloud config get-value project)
gcloud compute instances create instance-1 \
--zone=$ZONE \
--create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-12 AND family!=debian-12-arm64" --format="value(name)") \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--service-account=compute-aip@$PROJECT_ID.iam.gserviceaccount.com
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-402417)$ ZONE=us-central1-a
PROJECT_ID=$(gcloud config get-value project)
gcloud compute instances create instance-1 \
--zone=$ZONE \
--create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-12 AND family!=debian-12-arm64" --format="value(name)") \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--service-account=compute-aip@$PROJECT_ID.iam.gserviceaccount.com
Your active configuration is: [cloudshell-10282]
Created [https://www.googleapis.com/compute/v1/projects/gleb-test-short-002-470613/zones/us-central1-a/instances/instance-1].
NAME: instance-1
ZONE: us-central1-a
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.0.2
EXTERNAL_IP: 34.28.55.32
STATUS: RUNNING
Postgres Client را نصب کنید
نرم افزار مشتری PostgreSQL را روی ماشین مجازی مستقر شده نصب کنید
اتصال به VM:
gcloud compute ssh instance-1 --zone=us-central1-a
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-402417)$ gcloud compute ssh instance-1 --zone=us-central1-a Updating project ssh metadata...working..Updated [https://www.googleapis.com/compute/v1/projects/test-project-402417]. Updating project ssh metadata...done. Waiting for SSH key to propagate. Warning: Permanently added 'compute.5110295539541121102' (ECDSA) to the list of known hosts. Linux instance-1 5.10.0-26-cloud-amd64 #1 SMP Debian 5.10.197-1 (2023-09-29) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. student@instance-1:~$
دستور اجرای نرم افزار را در داخل ماشین مجازی نصب کنید:
sudo apt-get update
sudo apt-get install --yes postgresql-client
خروجی کنسول مورد انتظار:
student@instance-1:~$ sudo apt-get update sudo apt-get install --yes postgresql-client Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B] Get:4 file:/etc/apt/mirrors/debian-security.list Mirrorlist [39 B] Hit:7 https://packages.cloud.google.com/apt google-compute-engine-bookworm-stable InRelease Get:8 https://packages.cloud.google.com/apt cloud-sdk-bookworm InRelease [1652 B] Get:2 https://deb.debian.org/debian bookworm InRelease [151 kB] Get:3 https://deb.debian.org/debian bookworm-updates InRelease [55.4 kB] ...redacted... update-alternatives: using /usr/share/postgresql/15/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode Setting up postgresql-client (15+248) ... Processing triggers for man-db (2.11.2-2) ... Processing triggers for libc-bin (2.36-9+deb12u7) ...
به نمونه AlloyDB متصل شوید
با استفاده از psql از VM به نمونه اولیه متصل شوید.
با جلسه SSH باز شده در VM خود ادامه دهید. اگر اتصال شما قطع شده است، دوباره با استفاده از همان دستور بالا وصل شوید.
برای اتصال به AlloyDB از GCE VM از $PGASSWORD قبلاً ذکر شده و نام خوشه استفاده کنید:
export PGPASSWORD=<Noted password>
PROJECT_ID=$(gcloud config get-value project)
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"
خروجی کنسول مورد انتظار:
student@instance-1:~$ PROJECT_ID=$(gcloud config get-value project)
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"
psql (15.13 (Debian 15.13-0+deb12u1), server 16.8)
WARNING: psql major version 15, server major version 16.
Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
postgres=>
با حفظ اتصال SSH از جلسه psql خارج شوید:
exit
خروجی کنسول مورد انتظار:
postgres=> exit student@instance-1:~$
6- پایگاه داده را مقداردهی اولیه کنید
ما قصد داریم از VM مشتری خود به عنوان یک پلتفرم برای پر کردن پایگاه داده خود با داده ها و میزبانی برنامه خود استفاده کنیم. اولین قدم ایجاد یک پایگاه داده و پر کردن آن با داده است.
ایجاد پایگاه داده
یک پایگاه داده با نام "assistantdemo" ایجاد کنید.
در جلسه GCE VM اجرا کنید:
psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo"
خروجی کنسول مورد انتظار:
student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo" CREATE DATABASE student@instance-1:~$
محیط پایتون را آماده کنید
برای ادامه قصد داریم از اسکریپت های آماده پایتون از مخزن GitHub استفاده کنیم اما قبل از انجام این کار باید نرم افزار مورد نیاز را نصب کنیم.
در GCE VM اجرا کنید:
sudo apt install -y python3.11-venv git
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
خروجی کنسول مورد انتظار:
student@instance-1:~$ sudo apt install -y python3.11-venv git
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
git-man liberror-perl patch python3-distutils python3-lib2to3 python3-pip-whl python3-setuptools-whl
Suggested packages:
git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn ed diffutils-doc
The following NEW packages will be installed:
git git-man liberror-perl patch python3-distutils python3-lib2to3 python3-pip-whl python3-setuptools-whl python3.11-venv
0 upgraded, 9 newly installed, 0 to remove and 2 not upgraded.
Need to get 12.4 MB of archives.
After this operation, 52.2 MB of additional disk space will be used.
Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B]
...redacted...
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 23.0.1
Uninstalling pip-23.0.1:
Successfully uninstalled pip-23.0.1
Successfully installed pip-24.0
(.venv) student@instance-1:~$
تایید نسخه پایتون
در GCE VM اجرا کنید:
python -V
خروجی کنسول مورد انتظار:
(.venv) student@instance-1:~$ python -V Python 3.11.2 (.venv) student@instance-1:~$
MCP Toolbox را به صورت محلی نصب کنید
جعبه ابزار MCP برای پایگاههای داده (که بعداً در جعبه ابزار متنی MCP یا جعبه ابزار) یک سرور MCP منبع باز است که با منابع داده مختلف کار میکند. این به شما کمک می کند تا با ارائه سطحی از انتزاع برای منابع مختلف داده و افزودن ویژگی هایی مانند احراز هویت و ادغام اتصال، ابزارها را سریعتر توسعه دهید. شما می توانید در مورد تمام ویژگی ها در صفحه رسمی بخوانید.
ما میخواهیم از جعبه ابزار MCP برای شروع مجموعه دادههای نمونه خود استفاده کنیم و بعداً به عنوان سرور MCP برای رسیدگی به درخواستهای منبع داده از برنامهمان در طول جریان بازیابی نسل افزوده (RAG) استفاده کنیم.
بیایید جعبه ابزار MCP را به صورت محلی نصب کنیم تا پایگاه داده دستیار دمو پر شود.
در GCE VM اجرا کنید:
export VERSION=0.16.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
خروجی کنسول مورد انتظار:
(.venv) student@instance-1:~$ export VERSION=0.16.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 133M 100 133M 0 0 158M 0 --:--:-- --:--:-- --:--:-- 158M
جعبه ابزار را برای مقداردهی اولیه داده ها اجرا کنید
در GCE VM اجرا کنید:
صادرات متغیرهای محیطی برای جمعیت پایگاه داده:
export ALLOYDB_POSTGRES_PROJECT=$(gcloud config get-value project)
export ALLOYDB_POSTGRES_REGION="us-central1"
export ALLOYDB_POSTGRES_CLUSTER="alloydb-aip-01"
export ALLOYDB_POSTGRES_INSTANCE="alloydb-aip-01-pr"
export ALLOYDB_POSTGRES_DATABASE="assistantdemo"
export ALLOYDB_POSTGRES_USER="postgres"
export ALLOYDB_POSTGRES_PASSWORD=$PGPASSWORD
export ALLOYDB_POSTGRES_IP_TYPE="private"
جعبه ابزار را برای شروع پایگاه داده شروع کنید. این فرآیند به صورت محلی شروع می شود که به شما کمک می کند تا به طور یکپارچه به پایگاه داده مقصد در AlloyDB متصل شوید تا آن را با داده های نمونه پر کنید.
./toolbox --prebuilt alloydb-postgres
خروجی کنسول مورد انتظار باید در آخرین خط خروجی - "سرور آماده برای خدمت!":
student@instance-1:~$ cexport ALLOYDB_POSTGRES_PROJECT=$PROJECT_ID export ALLOYDB_POSTGRES_REGION="us-central1" export ALLOYDB_POSTGRES_CLUSTER="alloydb-aip-01" export ALLOYDB_POSTGRES_INSTANCE="alloydb-aip-01-pr" export ALLOYDB_POSTGRES_DATABASE="assistantdemo" export ALLOYDB_POSTGRES_USER="postgres" export ALLOYDB_POSTGRES_PASSWORD=$PGPASSWORD export ALLOYDB_POSTGRES_IP_TYPE="private" student@instance-1:~$ ./toolbox --prebuilt alloydb-postgres 2025-09-02T18:30:58.957655886Z INFO "Using prebuilt tool configuration for alloydb-postgres" 2025-09-02T18:30:59.507306664Z INFO "Initialized 1 sources." 2025-09-02T18:30:59.50748379Z INFO "Initialized 0 authServices." 2025-09-02T18:30:59.507618807Z INFO "Initialized 2 tools." 2025-09-02T18:30:59.507726704Z INFO "Initialized 2 toolsets." 2025-09-02T18:30:59.508258894Z INFO "Server ready to serve!"
تا زمانی که جمعیت داده کامل نشده است از این برگه Cloud Shell خارج نشوید یا آن را نبندید.
پر کردن پایگاه داده
یک برگه دیگر Cloud Shell را با استفاده از علامت "+" در بالا باز کنید.

و به instance-1 VM متصل شوید:
gcloud compute ssh instance-1 --zone=us-central1-a
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-402417)$ gcloud compute ssh instance-1 --zone=us-central1-a Linux instance-1 6.1.0-37-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Sep 2 21:44:07 2025 from 35.229.111.9 student@instance-1:~$
مخزن GitHub را با کد سرویس بازیابی و برنامه نمونه کلون کنید.
در GCE VM اجرا کنید:
git clone https://github.com/GoogleCloudPlatform/cymbal-air-toolbox-demo.git
خروجی کنسول مورد انتظار:
student@instance-1:~$ git clone https://github.com/GoogleCloudPlatform/cymbal-air-toolbox-demo.git Cloning into 'cymbal-air-toolbox-demo'... remote: Enumerating objects: 3481, done. remote: Counting objects: 100% (47/47), done. remote: Compressing objects: 100% (41/41), done. remote: Total 3481 (delta 16), reused 7 (delta 5), pack-reused 3434 (from 3) Receiving objects: 100% (3481/3481), 57.96 MiB | 6.04 MiB/s, done. Resolving deltas: 100% (2549/2549), done. student@instance-1:~
لطفا در صورت داشتن هر گونه خطایی توجه کنید.
محیط پایتون را آماده کنید و بسته های مورد نیاز را نصب کنید:
source .venv/bin/activate
cd cymbal-air-toolbox-demo
pip install -r requirements.txt
مسیر پایتون را به پوشه ریشه مخزن تنظیم کنید و اسکریپت را اجرا کنید تا پایگاه داده با مجموعه داده نمونه پر شود. دستور اول یک مسیر به ماژول های پایتون ما به محیط خود اضافه می کند و دستور دوم پایگاه داده ما را با داده ها پر می کند.
export PYTHONPATH=$HOME/cymbal-air-toolbox-demo
python data/run_database_init.py
خروجی کنسول مورد انتظار (تدوین شده). شما باید "پایگاه داده init done" را در پایان ببینید:
student@instance-1:~$ source .venv/bin/activate (.venv) student@instance-1:~$ (.venv) student@instance-1:~$ cd cymbal-air-toolbox-demo/ (.venv) student@instance-1:~/cymbal-air-toolbox-demo$ pip install -r requirements.txt python run_database_init.py Collecting fastapi==0.115.0 (from -r requirements.txt (line 1)) Downloading fastapi-0.115.0-py3-none-any.whl.metadata (27 kB) Collecting google-auth==2.40.3 (from -r requirements.txt (line 2)) Downloading google_auth-2.40.3-py2.py3-none-any.whl.metadata (6.2 kB) Collecting google-cloud-aiplatform==1.97.0 (from google-cloud-aiplatform[evaluation]==1.97.0->-r requirements.txt (line 3)) Downloading google_cloud_aiplatform-1.97.0-py2.py3-none-any.whl.metadata (36 kB) Collecting itsdangerous==2.2.0 (from -r requirements.txt (line 4)) Downloading itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB) Collecting jinja2==3.1.5 (from -r requirements.txt (line 5)) Downloading jinja2-3.1.5-py3-none-any.whl.metadata (2.6 kB) Collecting langchain-community==0.3.25 (from -r requirements.txt (line 6)) Downloading langchain_community-0.3.25-py3-none-any.whl.metadata (2.9 kB) Collecting langchain==0.3.25 (from -r requirements.txt (line 7)) ... (.venv) student@instance-1:~/cymbal-air-toolbox-demo$ (.venv) student@instance-1:~/cymbal-air-toolbox-demo$ export PYTHONPATH=$HOME/cymbal-air-toolbox-demo python data/run_database_init.py Airports table initialized Amenities table initialized Flights table initialized Tickets table initialized Policies table initialized database init done. (.venv) student@instance-1:~/cymbal-air-toolbox-demo$
اکنون می توانید این برگه را ببندید.
در جلسه VM اجرا کنید:
exit
و در جلسه Cloud Shell ctrl+d را فشار دهید یا اجرا کنید:
exit
در اولین تب با در حال اجرا MCP Toolbox، ctrl+c in را فشار دهید تا از جلسه در حال اجرا جعبه ابزار خارج شوید.
پایگاه داده با داده های نمونه برای برنامه پر شده است.
می توانید با اتصال به پایگاه داده و بررسی تعداد ردیف های جدول فرودگاه ها آن را تأیید کنید. میتوانید از ابزار psql همانطور که قبلاً استفاده کردهایم یا AlloyDB Studio استفاده کنید. در اینجا نحوه بررسی آن با استفاده از psql آورده شده است
در جلسه ssh به instance-1 VM اجرا کنید:
export PGPASSWORD=<Noted AlloyDB password>
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "SELECT COUNT(*) FROM airports"
خروجی کنسول مورد انتظار:
student@instance-1:~$ REGION=us-central1 ADBCLUSTER=alloydb-aip-01 INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)") psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "SELECT COUNT(*) FROM airports" count ------- 7698 (1 row)
پایگاه داده آماده است و می توانیم به سمت استقرار جعبه ابزار MCP برویم.
7. جعبه ابزار MCP را در Cloud Run مستقر کنید
اکنون می توانیم جعبه ابزار MCP را در Cloud Run مستقر کنیم. روش های مختلفی وجود دارد که چگونه جعبه ابزار MCP می تواند مستقر شود. ساده ترین راه اجرای آن از خط فرمان است، اما اگر می خواهیم آن را به عنوان یک سرویس مقیاس پذیر و قابل اعتماد داشته باشیم، Cloud Run راه حل بهتری است.
شناسه مشتری را آماده کنید
برای استفاده از قابلیت رزرو برنامه، باید شناسه مشتری OAuth 2.0 را با استفاده از Cloud Console آماده کنیم. بدون آن، نمیتوانیم با اعتبار Google خود وارد برنامه کاربردی شویم تا رزرو انجام دهیم و رزرو را در پایگاه داده ثبت کنیم.
در Cloud Console به APIs and Services بروید و روی "OAuth consent screen" کلیک کنید. اینجا یک لینک به صفحه است. صفحه Oauth Overview را باز می کند، جایی که روی شروع کار کلیک می کنیم.

در صفحه بعدی نام برنامه، ایمیل پشتیبانی کاربر را ارائه می کنیم و روی Next کلیک می کنیم.

در صفحه بعدی، Internal را برای برنامه خود انتخاب می کنیم و دوباره روی Next کلیک می کنیم.

سپس دوباره ایمیل تماس را ارائه می کنیم و روی Next کلیک می کنیم

سپس با خطمشیهای خدمات Google API موافقت میکنیم و دکمه ایجاد را فشار میدهیم.

ما را به صفحه ای هدایت می کند که می توانیم یک مشتری OAuth ایجاد کنیم.

در صفحه نمایش "Web Application" را از منوی کشویی انتخاب می کنیم، "Cymbal Air" را به عنوان برنامه قرار می دهیم و دکمه Add URI را فشار می دهیم.

URI ها منابع قابل اعتماد برنامه را نشان می دهند و به این بستگی دارند که از کجا می خواهید به برنامه دسترسی پیدا کنید. ما "http://localhost:8081" را به عنوان URI مجاز و "http://localhost:8081/login/google" را به عنوان URI تغییر مسیر قرار می دهیم. اگر "http://localhost:8081" را به عنوان یک URI برای اتصال در مرورگر خود قرار دهید، این مقادیر کار خواهند کرد. به عنوان مثال، هنگامی که به عنوان مثال از طریق یک تونل SSH از رایانه خود متصل می شوید. بعداً به شما نشان خواهم داد که چگونه این کار را انجام دهید.

پس از فشار دادن دکمه "ایجاد"، یک پنجره بازشو با اعتبار مشتریان خود دریافت می کنید. و مدارک در سامانه ثبت می شود. همیشه می توانید شناسه مشتری را کپی کنید تا هنگام شروع برنامه از آن استفاده کنید.

بعداً خواهید دید که کجا آن شناسه مشتری را ارائه می کنید.
ایجاد حساب سرویس
ما برای سرویس Cloud Run خود به یک حساب سرویس اختصاصی با تمام امتیازات مورد نیاز نیاز داریم. برای خدمات ما نیاز به دسترسی به AlloyDB و Cloud Secret Manager داریم. در مورد نام اکانت سرویس می خواهیم از toolbox-identity استفاده کنیم.
یک برگه دیگر Cloud Shell را با استفاده از علامت "+" در بالا باز کنید.

در تب جدید پوسته ابری اجرا کنید:
export PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts create toolbox-identity
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/alloydb.client"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/serviceusage.serviceUsageConsumer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
لطفا در صورت داشتن هر گونه خطایی توجه کنید. این دستور قرار است یک حساب سرویس برای سرویس اجرای ابری ایجاد کند و امتیازاتی را برای کار با مدیر مخفی، پایگاه داده و Vertex AI اعطا کند.
با فشار دادن ctrl+d یا اجرای دستور exit در تب، تب را ببندید:
exit
پیکربندی جعبه ابزار MCP را آماده کنید
فایل پیکربندی را برای جعبه ابزار MCP آماده کنید. میتوانید در مورد همه گزینههای پیکربندی در مستندات مطالعه کنید، اما در اینجا میخواهیم از فایل نمونه tools.yaml استفاده کنیم و برخی از مقادیر مانند نام خوشه و نمونه، رمز عبور AlloyDB و شناسه پروژه را با مقادیر واقعی خود جایگزین کنیم.
صادرات رمز عبور AlloyDB:
export PGPASSWORD=<noted AlloyDB password>
شناسه مشتری را که در مرحله قبل آماده کردیم صادر کنید:
export CLIENT_ID=<noted OAuth 2.0 client ID for our application>
فایل پیکربندی را آماده کنید.
PROJECT_ID=$(gcloud config get-value project)
ADBCLUSTER=alloydb-aip-01
sed -e "s/project: retrieval-app-testing/project: $(gcloud config get-value project)/g" \
-e "s/cluster: my-alloydb-cluster/cluster: $ADBCLUSTER/g" \
-e "s/instance: my-alloydb-instance/instance: $ADBCLUSTER-pr/g" \
-e "s/password: postgres/password: $PGPASSWORD\\n ipType: private/g" \
-e "s/^ *clientId: .*/ clientId: $CLIENT_ID/g" \
cymbal-air-toolbox-demo/tools.yaml >~/tools.yaml
اگر به بخش فایل که منبع داده هدف را تعریف می کند نگاه کنید، خواهید دید که ما یک خط نیز برای استفاده از IP خصوصی برای اتصال اضافه کرده ایم.
sources:
my-pg-instance:
kind: alloydb-postgres
project: gleb-test-short-003-471020
region: us-central1
cluster: alloydb-aip-01
instance: alloydb-aip-01-pr
database: assistantdemo
user: postgres
password: L23F...
ipType: private
authServices:
my_google_service:
kind: google
clientId: 96828*******-***********.apps.googleusercontent.com
یک راز با استفاده از پیکربندی tools.yaml به عنوان منبع ایجاد کنید.
در کنسول VM ssh اجرا کنید:
gcloud secrets create tools --data-file=tools.yaml
خروجی کنسول مورد انتظار:
student@instance-1:~$ gcloud secrets create tools --data-file=tools.yaml Created version [1] of the secret [tools].
جعبه ابزار MCP را به عنوان یک سرویس اجرای ابری مستقر کنید
اکنون همه چیز برای استقرار جعبه ابزار MCP به عنوان یک سرویس در Cloud Run آماده است. برای آزمایش محلی میتوانید «./toolbox –tools-file=./tools.yaml» را اجرا کنید، اما اگر بخواهیم برنامه ما در فضای ابری اجرا شود، استقرار در Cloud Run بسیار منطقیتر است.
در جلسه VM SSH اجرا کنید:
export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
gcloud run deploy toolbox \
--image $IMAGE \
--service-account toolbox-identity \
--region us-central1 \
--set-secrets "/app/tools.yaml=tools:latest" \
--args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
--network default \
--subnet default \
--no-allow-unauthenticated
خروجی کنسول مورد انتظار:
student@instance-1:~$ export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
gcloud run deploy toolbox \
--image $IMAGE \
--service-account toolbox-identity \
--region us-central1 \
--set-secrets "/app/tools.yaml=tools:latest" \
--args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
--network default \
--subnet default \
--no-allow-unauthenticated
Deploying container to Cloud Run service [toolbox] in project [gleb-test-short-002-470613] region [us-central1]
✓ Deploying new service... Done.
✓ Creating Revision...
✓ Routing traffic...
Done.
Service [toolbox] revision [toolbox-00001-l9c] has been deployed and is serving 100 percent of traffic.
Service URL: https://toolbox-868691532292.us-central1.run.app
student@instance-1:~$
بررسی سرویس
اکنون میتوانیم بررسی کنیم که آیا سرویس بالا است و میتوانیم به نقطه پایانی دسترسی پیدا کنیم. ما از ابزار gcloud برای دریافت نقطه پایانی سرویس بازیابی و رمز احراز هویت استفاده می کنیم. یا می توانید URI سرویس را در کنسول ابری بررسی کنید.

می توانید مقدار را کپی کنید و قسمت "$(gcloud run services list –filter="(toolbox)" –format="value(URL)" را در دستور curl جایگزین کنید.
در اینجا نحوه دریافت URL به صورت پویا از خط فرمان آمده است:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(toolbox)" --format="value(URL)")
خروجی کنسول مورد انتظار:
student@instance-1:~$ curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(toolbox)" --format="value(URL)") 🧰 Hello, World! 🧰student@instance-1:~$
اگر پیام "Hello World" را می بینیم به این معنی است که سرویس ما فعال است و درخواست ها را انجام می دهد.
8. استقرار نمونه برنامه
اکنون هنگامی که سرویس بازیابی را راهاندازی کردهایم، میتوانیم یک برنامه نمونه را اجرا کنیم. این برنامه یک دستیار فرودگاه آنلاین را نشان می دهد که می تواند اطلاعاتی در مورد پروازها، فرودگاه ها و حتی رزرو پرواز بر اساس پروازها و داده های فرودگاه از پایگاه داده ما به شما بدهد.
برنامه را می توان به صورت محلی، روی ماشین مجازی در فضای ابری یا هر سرویس دیگری مانند Cloud Run یا Kubernetes مستقر کرد. در اینجا می خواهیم نحوه استقرار آن را در VM ابتدا نشان دهیم.
محیط را آماده کنید
ما با استفاده از همان جلسه SSH به کار روی VM خود ادامه می دهیم. برای اجرای برنامه ما به تعدادی ماژول پایتون نیاز داریم و قبلاً زمانی که پایگاه داده خود را راه اندازی کردیم آنها را اضافه کرده ایم. بیایید به محیط مجازی پایتون خود برویم و مکان خود را به فهرست برنامه تغییر دهیم.
در جلسه VM SSH اجرا کنید:
source ~/.venv/bin/activate
cd cymbal-air-toolbox-demo
خروجی مورد انتظار (تدوین شده):
student@instance-1:~$ source ~/.venv/bin/activate cd cymbal-air-toolbox-demo (.venv) student@instance-1:~/cymbal-air-toolbox-demo$
برنامه دستیار را اجرا کنید
قبل از شروع برنامه باید چند متغیر محیطی را تنظیم کنیم. عملکرد اصلی برنامه مانند پروازهای پرس و جو و امکانات فرودگاه فقط به TOOLBOX_URL نیاز دارد که برنامه را به سرویس بازیابی اشاره می کند. ما می توانیم آن را با استفاده از دستور gcloud دریافت کنیم.
در جلسه VM SSH اجرا کنید:
export TOOLBOX_URL=$(gcloud run services list --filter="(toolbox)" --format="value(URL)")
خروجی مورد انتظار (تدوین شده):
student@instance-1:~/cymbal-air-toolbox-demo$ export BASE_URL=$(gcloud run services list --filter="(toolbox)" --format="value(URL)")
برای استفاده از قابلیتهای پیشرفتهتر برنامه مانند رزرو و تغییر پرواز، باید با استفاده از حساب Google خود وارد برنامه شوید و برای این منظور باید متغیر محیطی CLIENT_ID را با استفاده از شناسه مشتری OAuth از فصل آماده کردن شناسه مشتری ارائه کنیم:
export CLIENT_ID=215....apps.googleusercontent.com
خروجی مورد انتظار (تدوین شده):
student@instance-1:~/cymbal-air-toolbox-demo$ export CLIENT_ID=215....apps.googleusercontent.com
و اکنون می توانیم برنامه خود را اجرا کنیم:
python run_app.py
خروجی مورد انتظار:
student@instance-1:~/cymbal-air-toolbox-demo/llm_demo$ python run_app.py INFO: Started server process [2900] INFO: Waiting for application startup. Loading application... INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)
به برنامه متصل شوید
شما راه های مختلفی برای اتصال به برنامه در حال اجرا در VM دارید. به عنوان مثال می توانید پورت 8081 را در VM با استفاده از قوانین فایروال در VPC باز کنید یا یک load balancer با IP عمومی ایجاد کنید. در اینجا می خواهیم از یک تونل SSH به VM استفاده کنیم که پورت محلی 8080 را به پورت VM 8081 ترجمه می کند.
اتصال از ماشین محلی
هنگامی که می خواهیم از یک ماشین محلی متصل شویم، باید یک تونل SSH را اجرا کنیم. این را می توان با استفاده از gcloud compute ssh انجام داد:
gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8081:localhost:8081
خروجی مورد انتظار:
student-macbookpro:~ student$ gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081 Warning: Permanently added 'compute.7064281075337367021' (ED25519) to the list of known hosts. Linux instance-1.us-central1-c.c.gleb-test-001.internal 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. student@instance-1:~$
اکنون می توانیم مرورگر را باز کنیم و از http://localhost:8081 برای اتصال به برنامه خود استفاده کنیم. ما باید صفحه برنامه را ببینیم.

اتصال از Cloud Shell
یا می توانیم از Google Cloud Shell برای اتصال استفاده کنیم. یک برگه دیگر Cloud Shell را با استفاده از علامت "+" در بالا باز کنید.

در برگه جدید، URI مبدا و تغییر مسیر برای کلاینت وب خود را با اجرای دستور gcloud دریافت کنید:
echo "origin:"; echo "https://8080-$WEB_HOST"; echo "redirect:"; echo "https://8080-$WEB_HOST/login/google"
در اینجا خروجی مورد انتظار است:
student@cloudshell:~ echo "origin:"; echo "https://8080-$WEB_HOST"; echo "redirect:"; echo "https://8080-$WEB_HOST/login/google" origin: https://8080-cs-35704030349-default.cs-us-east1-rtep.cloudshell.dev redirect: https://8080-cs-35704030349-default.cs-us-east1-rtep.cloudshell.dev/login/google
و از مبدأ و تغییر مسیر URI ها به عنوان « منشاهای مجاز جاوا اسکریپت » و «URI های مجاز تغییر مسیر » برای اعتبارنامه های ما ایجاد شده در فصل «آماده کردن شناسه مشتری» استفاده کنید و به مقادیر http://localhost:8080 که در اصل ارائه شده است، اضافه کنید یا به آنها اضافه کنید.
روی "Cymbal Air" در صفحه شناسه های مشتری OAuth 2.0 کلیک کنید.

URI های مبدا و تغییر مسیر را برای پوسته ابری قرار دهید و دکمه ذخیره را فشار دهید.

در تب جدید پوسته ابری، با اجرای دستور gcloud، تونل را به VM خود راه اندازی کنید:
gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081
اگر خطای "نمی توان آدرس درخواستی را تعیین کرد" نشان داد - لطفاً آن را نادیده بگیرید.
در اینجا خروجی مورد انتظار است:
student@cloudshell:~ gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081 bind [::1]:8081: Cannot assign requested address inux instance-1.us-central1-a.c.gleb-codelive-01.internal 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat May 25 19:15:46 2024 from 35.243.235.73 student@instance-1:~$
پورت 8080 را روی پوسته ابری شما باز می کند که می تواند برای "پیش نمایش وب" استفاده شود.
روی دکمه «پیشنمایش وب» در بالای سمت راست Cloud Shell کلیک کنید و از منوی کشویی «پیشنمایش در پورت 8080» را انتخاب کنید.

یک تب جدید در مرورگر وب شما با رابط برنامه باز می شود. شما باید بتوانید صفحه «دستیار خدمات مشتریان سیمبال ایر» را ببینید.

وارد اپلیکیشن شوید
هنگامی که همه چیز تنظیم شد و برنامه شما باز است، میتوانیم از دکمه "ورود به سیستم" در سمت راست بالای صفحه برنامه خود برای ارائه اطلاعات کاربری خود استفاده کنیم. این اختیاری است و فقط در صورتی لازم است که بخواهید عملکرد رزرو برنامه را امتحان کنید.

یک پنجره پاپ آپ باز می شود که در آن می توانیم اعتبار خود را انتخاب کنیم.
پس از ثبت نام، برنامه آماده است و می توانید درخواست های خود را در قسمت پایین پنجره ارسال کنید.
این نسخه ی نمایشی دستیار خدمات مشتری Cymbal Air را به نمایش می گذارد. Cymbal Air یک شرکت هواپیمایی خیالی مسافربری است. دستیار یک ربات چت هوش مصنوعی است که به مسافران کمک می کند تا پروازها را مدیریت کنند و اطلاعاتی درباره مرکز Cymbal Air در فرودگاه بین المللی سانفرانسیسکو (SFO) جستجو کنند.
بدون ورود به سیستم (بدون CLIENT_ID) میتواند به کاربران در پاسخ به سوالاتی مانند:
پرواز بعدی به دنور کی است؟
آیا مغازه های لوکسی در اطراف دروازه C28 وجود دارد؟
نزدیک دروازه A6 از کجا می توانم قهوه تهیه کنم؟
از کجا می توانم هدیه بخرم؟
لطفاً یک پرواز از SFO به دنور پیدا کنید که امروز حرکت می کند
وقتی وارد برنامه میشوید، میتوانید قابلیتهای دیگری مانند رزرو پرواز را امتحان کنید یا بررسی کنید که آیا صندلی اختصاص داده شده به شما یک صندلی در پنجره یا راهرو است.

این برنامه از جدیدترین مدلهای پایه Google برای تولید پاسخها و تقویت آن با اطلاعات مربوط به پروازها و امکانات از پایگاه داده عملیاتی AlloyDB استفاده میکند. اطلاعات بیشتر در مورد این اپلیکیشن دمو را می توانید در صفحه Github پروژه بخوانید.
9. محیط را تمیز کنید
اکنون وقتی همه کارها کامل شد، می توانیم محیط خود را تمیز کنیم
سرویس Cloud Run را حذف کنید
در Cloud Shell اجرا کنید:
gcloud run services delete toolbox --region us-central1
خروجی کنسول مورد انتظار:
student@cloudshell:~ (gleb-test-short-004)$ gcloud run services delete retrieval-service --region us-central1 Service [retrieval-service] will be deleted. Do you want to continue (Y/n)? Y Deleting [retrieval-service]...done. Deleted service [retrieval-service].
حساب سرویس برای سرویس اجرای ابری را حذف کنید
در Cloud Shell اجرا کنید:
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet
خروجی کنسول مورد انتظار:
student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project) Your active configuration is: [cloudshell-222] student@cloudshell:~ (gleb-test-short-004)$ gcloud iam service-accounts delete retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet deleted service account [retrieval-identity@gleb-test-short-004.iam.gserviceaccount.com] student@cloudshell:~ (gleb-test-short-004)$
پس از اتمام کار با آزمایشگاه، نمونه ها و خوشه های AlloyDB را نابود کنید.
خوشه AlloyDB و همه نمونه ها را حذف کنید
اگر از نسخه آزمایشی AlloyDB استفاده کرده اید. اگر قصد دارید آزمایشگاهها و منابع دیگر را با استفاده از خوشه آزمایشی آزمایش کنید، خوشه آزمایشی را حذف نکنید. شما نمی توانید یک کلاستر آزمایشی دیگر را در همان پروژه ایجاد کنید.
خوشه با نیروی گزینه از بین می رود که همچنین تمام نمونه های متعلق به خوشه را حذف می کند.
در پوسته ابری، متغیرهای پروژه و محیط را تعریف کنید، اگر اتصال شما قطع شده و تمام تنظیمات قبلی از بین رفته است:
gcloud config set project <your project id>
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export PROJECT_ID=$(gcloud config get-value project)
حذف خوشه:
gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-001-402417)$ gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force All of the cluster data will be lost when the cluster is deleted. Do you want to continue (Y/n)? Y Operation ID: operation-1697820178429-6082890a0b570-4a72f7e4-4c5df36f Deleting cluster...done.
بک آپ های AlloyDB را حذف کنید
تمام بک آپ های AlloyDB برای خوشه را حذف کنید:
for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-001-402417)$ for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done Operation ID: operation-1697826266108-60829fb7b5258-7f99dc0b-99f3c35f Deleting backup...done.
حالا می توانیم VM خود را نابود کنیم
GCE VM را حذف کنید
در Cloud Shell اجرا کنید:
export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
--zone=$ZONE \
--quiet
خروجی کنسول مورد انتظار:
student@cloudshell:~ (test-project-001-402417)$ export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
--zone=$ZONE \
--quiet
Deleted
حساب سرویس GCE VM و The Retrieval Service را حذف کنید
در Cloud Shell اجرا کنید:
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet
خروجی کنسول مورد انتظار:
student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project) gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet Your active configuration is: [cloudshell-222] deleted service account [compute-aip@gleb-test-short-004.iam.gserviceaccount.com] student@cloudshell:~ (gleb-test-short-004)$
10. تبریک می گویم
برای تکمیل کد لبه تبریک می گویم.
آنچه را پوشش داده ایم
- نحوه استقرار AlloyDB Cluster
- نحوه اتصال به AlloyDB
- نحوه پیکربندی و استقرار سرویس جعبه ابزار MCP
- نحوه استقرار یک برنامه نمونه با استفاده از سرویس مستقر شده
11. نظرسنجی
خروجی: