1. مقدمه
Private Service Connect for Google APIs (PSC) یک قابلیت شبکه Google Cloud است که به کاربران اجازه می دهد دسترسی خصوصی را از طریق یک نقطه پایانی جهانی IP خصوصی در یک VPC پیکربندی کنند. برای کاربرانی که برنامههای کد یا سمت کلاینت را در یک محیط ترکیبی متصل به Google Cloud توسط VPN یا Interconnect اجرا میکنند، از PSC برای حل کردن APIهای Google از طریق آن اتصال ترکیبی خصوصی استفاده میشود.
PSC برای Google API میتواند دامنههای مختلفی را حل کند که فهرست کامل آنها را میتوانید در اینجا بیابید. دامنه ای که اکثر API های Google از آن استفاده می کنند <API>.googleapis.com است. همراه با این دامنه، PSC همچنین نسخهای از googleapis.com را به کاربران ارائه میدهد که <API>-<PSC-ENDPOINT-NAME> است.**p.**googleapis.com. با استفاده از این دامنه، کاربران می توانند برنامه ها را برای استفاده از نقاط پایانی خاص PSC پیکربندی کنند. رایجترین مورد استفاده به کاربران امکان میدهد انتخاب کنند کدام برنامهها از نقطه پایانی PSC برای هدایت ترافیک Google API از طریق اتصال ترکیبی استفاده کنند، در حالی که به سایر برنامهها اجازه میدهد به مسیریابی ترافیک به نقطه پایانی API عمومی ادامه دهند.
Gemini تحت مجموعه محصولات Vertex AI Google Cloud قرار می گیرد و در لیست API های Google گنجانده شده است که می توانند با PSC برای API های Google حل شوند.
در این نرم افزار کد، شما یک محیط ترکیبی شبیه سازی شده، میزبانی یک Workbench Instance در prem و اجرای کد Gemini Python که به طور خصوصی از طریق HA VPN به Gemini API دسترسی دارد، و به یک PSC برای Google APIs endpoint متصل خواهید شد.
چیزی که یاد خواهید گرفت
- یک NCC Hub ایجاد کنید.
- اسپیک های VPC را در یک مرکز NCC پیکربندی کنید.
- یک Cloud HA VPN ایجاد کنید.
- اسپیک های هیبریدی را در یک هاب NCC پیکربندی کنید.
- یک PSC برای Google APIs endpoint ایجاد کنید.
- یک مسیر سفارشی را از طریق HA-VPN پیکربندی کنید.
- یک منطقه همتای DNS را پیکربندی کنید.
- یک نمونه Vertex Workbench را پیکربندی کنید
- کد Gemini Python را برای استفاده از PSC برای Google APIs API Endpoint پیکربندی کنید.
آنچه شما نیاز دارید
- یک پروژه Google Cloud با مجوزهای «مالک» یا «ویرایشگر» کامل.
2. توپولوژی Codelab
برای این نرم افزار کد، از Google Cloud برای شبیه سازی یک محیط ترکیبی استفاده خواهید کرد. مراحلی در این Codelab وجود دارد که مختص Google Cloud است و اگر از یک محیط واقعی on-prem پیکربندی شود، متفاوت خواهد بود. آن مراحل فراخوانی خواهد شد.
شما یک NCC Hub ایجاد خواهید کرد که دارای Routing-vpc به عنوان Spoke VPC است. در آن VPC، یک HA-VPN روی VPC on-prem پیکربندی میشود که یک محیط on-prem را تقلید میکند. HA-VPN به عنوان یک اسپک هیبریدی در مرکز NCC پیکربندی خواهد شد. در on-prem VPC، شما یک زیرشبکه ایجاد خواهید کرد که در آن یک Workbench Instance میزبانی خواهد شد. شما همچنین یک Cloud NAT ایجاد خواهید کرد تا برای دانلود بسته ها در نمونه Workbench استفاده شود.
در نهایت، یک منطقه همتای DNS برای VPC اولیه ایجاد میکنید تا بتوانید از منطقه خصوصی فهرست خدمات برای p.googleapis.com استفاده کنید که PSC برای APIهای Google به طور خودکار ایجاد میکند.
3. راه اندازی و الزامات
تنظیم محیط خود به خود
- به 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 اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.
4. قبل از شروع
API ها را فعال کنید
در داخل Cloud Shell، مطمئن شوید که پروژه شما به درستی پیکربندی شده است و متغیرهای محیط خود را تنظیم کنید.
از Cloud Shell
gcloud config list project gcloud config set project <project-id> export project=$(gcloud config get-value project) export region=us-central1 export zone=$region-a echo $project echo $region echo $zone
همه API های لازم Google را در پروژه فعال کنید.
از Cloud Shell
gcloud services enable compute.googleapis.com gcloud services enable networkconnectivity.googleapis.com gcloud services enable dns.googleapis.com gcloud services enable notebooks.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable aiplatform.googleapis.com
5. VPC ها و Subnets ایجاد کنید
ایجاد شبکه ها
از Cloud Shell
gcloud compute networks create routing-vpc \ --subnet-mode=custom
از Cloud Shell
gcloud compute networks create onprem-vpc \ --subnet-mode=custom gcloud compute networks subnets create onprem-$region-subnet \ --network=onprem-vpc \ --range=10.0.0.0/24 \ --region=$region --enable-private-ip-google-access
Cloud Routers و Cloud NAT را ایجاد کنید
یک Cloud Router ایجاد کنید که در ارتباط با HA VPN در مسیریابی vpc استفاده شود.
از Cloud Shell
gcloud compute routers create routing-$region-cr \ --network=routing-vpc \ --region=$region \ --asn=64512
یک Cloud Router ایجاد کنید که همراه با HA VPN در onprem-vpc استفاده شود.
از Cloud Shell
gcloud compute routers create onprem-$region-cr \ --network=onprem-vpc \ --region=$region \ --asn=64513
یک Cloud Router ایجاد کنید که همراه با Cloud NAT در onprem-vpc استفاده شود.
از Cloud Shell
gcloud compute routers create onprem-$region-cr-4nat \ --network=onprem-vpc \ --region=$region
Cloud NAT در onprem-vpc برای دانلود بستهها در Vertex AI Workbench Instance استفاده میشود که در مرحله بعد پیکربندی میشود.
از Cloud Shell
gcloud compute routers nats create onprem-$region-nat \ --router=onprem-$region-cr-4nat \ --region=$region \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
6. Cloud HA-VPN ایجاد کنید
دروازه های VPN را ایجاد کنید.
از Cloud Shell
gcloud compute vpn-gateways create routing-gateway \ --network=routing-vpc \ --region=$region \ --stack-type=IPV4_ONLY
از Cloud Shell
gcloud compute vpn-gateways create onprem-gateway \ --network=onprem-vpc \ --region=$region \ --stack-type=IPV4_ONLY
تونل های VPN را که از مسیریابی vpc سرچشمه می گیرند ایجاد کنید.
از Cloud Shell
gcloud compute vpn-tunnels create routing-to-onprem-tunnel0 \ --peer-gcp-gateway=onprem-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=routing-$region-cr \ --vpn-gateway=routing-gateway \ --interface=0 gcloud compute vpn-tunnels create routing-to-onprem-tunnel1 \ --peer-gcp-gateway=onprem-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=routing-$region-cr \ --vpn-gateway=routing-gateway \ --interface=1
تونل های VPN را از onprem-vpc ایجاد کنید.
از Cloud Shell
gcloud compute vpn-tunnels create onprem-to-routing-tunnel0 \ --peer-gcp-gateway=routing-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=onprem-$region-cr \ --vpn-gateway=onprem-gateway \ --interface=0 gcloud compute vpn-tunnels create onprem-to-routing-tunnel1 \ --peer-gcp-gateway=routing-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=onprem-$region-cr \ --vpn-gateway=onprem-gateway \ --interface=1
جلسات BGP را برای دو تونل که از مسیریابی vpc سرچشمه می گیرند، تنظیم کنید.
از Cloud Shell
gcloud compute routers add-interface routing-$region-cr \ --interface-name=routing-interface0 \ --ip-address=169.254.0.1 \ --mask-length=30 \ --vpn-tunnel=routing-to-onprem-tunnel0 \ --region=$region gcloud compute routers add-bgp-peer routing-$region-cr \ --peer-name=routingtoonprem-bgp0 \ --interface=routing-interface0 \ --peer-ip-address=169.254.0.2 \ --peer-asn=64513 \ --region=$region gcloud compute routers add-interface routing-$region-cr \ --interface-name=routing-interface1 \ --ip-address=169.254.1.1 \ --mask-length=30 \ --vpn-tunnel=routing-to-onprem-tunnel1 \ --region=$region gcloud compute routers add-bgp-peer routing-$region-cr \ --peer-name=routingtoonprem-bgp1 \ --interface=routing-interface1 \ --peer-ip-address=169.254.1.2 \ --peer-asn=64513 \ --region=$region
جلسات BGP را برای دو تونل که از onprem-vpc سرچشمه می گیرند، تنظیم کنید.
از Cloud Shell
gcloud compute routers add-interface onprem-$region-cr \ --interface-name=onprem-interface0 \ --ip-address=169.254.0.2 \ --mask-length=30 \ --vpn-tunnel=onprem-to-routing-tunnel0 \ --region=$region gcloud compute routers add-bgp-peer onprem-$region-cr \ --peer-name=onpremtorouting-bgp0 \ --interface=onprem-interface0 \ --peer-ip-address=169.254.0.1 \ --peer-asn=64512 \ --region=$region gcloud compute routers add-interface onprem-$region-cr \ --interface-name=onprem-interface1 \ --ip-address=169.254.1.2 \ --mask-length=30 \ --vpn-tunnel=onprem-to-routing-tunnel1 \ --region=$region gcloud compute routers add-bgp-peer onprem-$region-cr \ --peer-name=onpremtorouting-bgp1 \ --interface=onprem-interface1 \ --peer-ip-address=169.254.1.1 \ --peer-asn=64512 \ --region=$region
به صفحه اتصال شبکه > VPN در کنسول بروید و مطمئن شوید که تونل های HA-VPN و جلسات BGP شما به درستی پیکربندی شده اند.
7. NCC Hub و Spokes را پیکربندی کنید
NCC Hub را ایجاد کنید
از Cloud Shell
gcloud network-connectivity hubs create ncc-hub \ --project="$project" \ --preset-topology="mesh"
اسپک های NCC را ایجاد کنید
NCC gcloud نیاز دارد که همه پره ها با نام مسیرهای کامل یا URI پیکربندی شوند.
از Cloud Shell
gcloud compute networks describe routing-vpc
به مسیر کامل (URI) روتینگ-vpc برای دستور زیر توجه کنید.
خروجی نمونه
autoCreateSubnetworks: false creationTimestamp: '2025-08-20T11:13:42.233-07:00' id: 'xxx' kind: compute#network name: routing-vpc networkFirewallPolicyEnforcementOrder: AFTER_CLASSIC_FIREWALL routingConfig: bgpBestPathSelectionMode: LEGACY routingMode: REGIONAL selfLink: https://www.googleapis.com/compute/v1/projects/$project/global/networks/routing-vpc selfLinkWithId: https://www.googleapis.com/compute/v1/projects/$project/global/networks/355666541188722361 x_gcloud_bgp_routing_mode: REGIONAL x_gcloud_subnet_mode: CUSTOM
مسیریابی VPC Spoke را پیکربندی کنید
از Cloud Shell
gcloud network-connectivity spokes linked-vpc-network create routing-vpc \ --hub=ncc-hub \ --vpc-network=projects/$project/global/networks/routing-vpc \ --global
از Cloud Shell
gcloud compute vpn-tunnels describe routing-to-onprem-tunnel0 --region=$region gcloud compute vpn-tunnels describe routing-to-onprem-tunnel1 --region=$region
به مسیرهای کامل (URI) برای تونل های VPN که از مسیریابی-vpc سرچشمه می گیرند، توجه کنید.
خروجی نمونه
creationTimestamp: '2025-08-20T11:33:37.494-07:00' description: '' detailedStatus: Tunnel is up and running. id: 'xxx' ikeVersion: 2 kind: compute#vpnTunnel labelFingerprint: xxx localTrafficSelector: - 0.0.0.0/0 name: routing-to-onprem-tunnel0 peerGcpGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/onprem-gateway peerIp: 34.153.54.166 region: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1 remoteTrafficSelector: - 0.0.0.0/0 router: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/routers/routing-us-central1-cr selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnTunnels/routing-to-onprem-tunnel0 sharedSecret: '*************' sharedSecretHash: xxx status: ESTABLISHED vpnGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/routing-gateway vpnGatewayInterface: 0 creationTimestamp: '2025-08-20T11:33:41.829-07:00' description: '' detailedStatus: Tunnel is up and running. id: 'xxx' ikeVersion: 2 kind: compute#vpnTunnel labelFingerprint: xxx localTrafficSelector: - 0.0.0.0/0 name: routing-to-onprem-tunnel1 peerGcpGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/onprem-gateway peerIp: 34.153.246.117 region: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1 remoteTrafficSelector: - 0.0.0.0/0 router: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/routers/routing-us-central1-cr selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnTunnels/routing-to-onprem-tunnel1 sharedSecret: '*************' sharedSecretHash: xxx status: ESTABLISHED vpnGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/routing-gateway vpnGatewayInterface: 1
از Cloud Shell
gcloud network-connectivity spokes linked-vpn-tunnels create $region-vpn-spoke \ --hub=ncc-hub \ --vpn-tunnels=projects/$project/regions/$region/vpnTunnels/routing-to-onprem-tunnel0,projects/$project/regions/$region/vpnTunnels/routing-to-onprem-tunnel1 \ --region=$region
قبل از حرکت، مطمئن شوید که تمام پره های شما به درستی پیکربندی شده اند.
از Cloud Shell
gcloud network-connectivity hubs list-spokes ncc-hub
خروجی نمونه
NAME: routing-vpc GROUP: default PROJECT: $project LOCATION: global TYPE: VPC_NETWORK STATE: ACTIVE STATE REASON: ETAG: 2 NAME: us-central1-vpn-spoke GROUP: default PROJECT: $project LOCATION: us-central1 TYPE: VPN_TUNNEL STATE: ACTIVE STATE REASON: ETAG:
8. Private Service Connect را برای Google APIs تنظیم کنید
نقاط پایانی PSC برای Google API از آدرسهای IP جهانی ایجاد میشوند که در یک زیرشبکه VPC منطقهای قرار ندارند. آدرس IP جهانی باید به طور خاص با هدف PRIVATE_SERVICE_CONNECT رزرو شود.
از Cloud Shell
gcloud compute addresses create psc-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=10.100.100.0 \ --network=routing-vpc
از Cloud Shell
gcloud compute forwarding-rules create psc4googep \ --global \ --network=routing-vpc \ --address=psc-ip \ --target-google-apis-bundle=all-apis \ --service-directory-registration=projects/$project/locations/$region
از Cloud Shell
gcloud compute routers update routing-$region-cr \ --project=$project \ --region=$region \ --advertisement-mode custom \ --set-advertisement-groups=ALL_SUBNETS \ --set-advertisement-ranges=10.100.100.0/32
از Cloud Shell
gcloud dns managed-zones create peeringzone \ --description="dns peer onprem to routing" \ --dns-name=p.googleapis.com \ --networks=onprem-vpc \ --target-network=routing-vpc \ --target-project=$project \ --visibility=private
9. نمونه Vertex Workbench را تنظیم کنید
یک حساب سرویس ایجاد کنید تا برای هویت نمونه Workbench استفاده شود.
از Cloud Shell
gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
نام کامل حساب سرویس خود را یادداشت کنید و به آن اجازه aiplatform.admin را بدهید تا تماس های Vertex AI/Gemini را اجرا کند.
از Cloud Shell
gcloud iam service-accounts list
خروجی نمونه
DISPLAY NAME: Compute Engine default service account EMAIL: xxx-compute@developer.gserviceaccount.com DISABLED: False DISPLAY NAME: workbench-sa EMAIL: workbench-sa@$project.iam.gserviceaccount.com DISABLED: False
مطمئن شوید که <your-project-id> را با شناسه پروژه واقعی خود جایگزین کرده اید. ما نمی توانیم در اینجا از متغیر $project به دلیل نقل قول های مورد نیاز استفاده کنیم.
از Cloud Shell
gcloud projects add-iam-policy-binding $project --member='serviceAccount:workbench-sa@<your-project-id>.iam.gserviceaccount.com' --role='roles/aiplatform.admin' --condition=None
از Cloud Shell
gcloud workbench instances create workbench-$region --vm-image-project=cloud-notebooks-managed --vm-image-family=workbench-instances --location=$region-a --network=projects/$project/global/networks/onprem-vpc --subnet=projects/$project/regions/$region/subnetworks/onprem-$region-subnet --subnet-region=$region --disable-public-ip --service-account-email=workbench-sa@$project.iam.gserviceaccount.com
تهیه نمونه Workbench ممکن است بیشتر از اجرای دستور gcloud طول بکشد.
10. کد جمینی را تست کنید
در UI، روی "Open JupyterLab" کلیک کنید.
پس از ورود به JupyterLab، یک نوت بوک پایتون 3 جدید باز کنید.
کد زیر را در نوت بوک اجرا کنید. مطمئن شوید که کد را بهروزرسانی کردهاید تا شامل پروژه خاص و اطلاعات منطقه شما باشد.
از نوت بوک JupyterLab
pip install --upgrade google-genai
هسته نوت بوک را مجددا راه اندازی کنید.
به نقطه پایانی API توجه کنید. در اینجا ما از نقطه پایانی API <YOUR_REGION>-aiplatform.googleapis.com استفاده می کنیم. این نقطه پایانی استاندارد API برای Vertex AI است.
از نوت بوک JupyterLab
PROJECT_ID="YOUR_PROJECT_ID" # Google Cloud Project ID LOCATION_ID="YOUR_REGION" # Enter Vertex AI Gemini region such a s us-central1 API_ENDPOINT="https://<YOUR_REGION>-aiplatform.googleapis.com" # API Endpoint MODEL_ID="gemini-2.0-flash" # Gemini Model ID from google import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting, )
از نوت بوک JupyterLab
from google import genai client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT}) prompt = "what weighs more, 1kg of feathers or 1kg of stones" safety_settings = [ SafetySetting( category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), ] response = client.models.generate_content( model=MODEL_ID, contents=prompt, config=GenerateContentConfig( safety_settings=safety_settings, ), ) # Response will be `None` if it is blocked. print(response.text)
نمونه پاسخ
This is a classic trick question! They both weigh the same: 1 kilogram. The difference is in the volume they occupy and the density of the materials.
به نام API که هنگام اجرای کد استفاده کردید توجه کنید. YOUR_REGION-aiplatform.googleapis.com نام پیشفرض API برای Vertex AI است. باید نام API را تغییر دهیم و دوباره کد را اجرا کنیم. با اجرای TCPdump در ترمینال در Workbench Instance میتوانیم مطمئن شویم که کد از نقطه پایانی PSC استفاده میکند.
TCPdump را در ترمینال اجرا کنید
با کلیک روی File > New > Terminal، یک ترمینال را در Workbench باز کنید.
اگر با دیدن خروجی متن در ترمینال مشکل دارید، باید تم ترمینال خود را به روز کنید. این کار را در Settings > Terminal Theme > Light OR Dark انجام دهید.
از ترمینال
sudo tcpdump host 10.100.100.0
کد جمینی را به روز کنید
به نوت بوک برگردید، API Endpoint را به روز کنید و کد را دوباره اجرا کنید. توجه داشته باشید که نقطه پایانی API را به <YOUR_REGION>-aiplatform**-psc4googep.p**.googleapis.com تغییر دادیم. این با فرمت API خاص PSC <service>-<endpointname>.p.googleapis.com مطابقت دارد.
از نوت بوک JupyterLab
API_ENDPOINT="https://<YOUR_REGION>-aiplatform-psc4googep.p.googleapis.com" # API Endpoint
از نوت بوک JupyterLab
from google import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting, )
از نوت بوک JupyterLab
from google import genai client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT}) prompt = "what weighs more, 1kg of feathers or 1kg of stones" safety_settings = [ SafetySetting( category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), ] response = client.models.generate_content( model=MODEL_ID, contents=prompt, config=GenerateContentConfig( safety_settings=safety_settings, ), ) # Response will be `None` if it is blocked. print(response.text)
نمونه پاسخ
They weigh the same. 1 kg is 1 kg, regardless of what it's made of.
TCPdump را بررسی کنید
به ترمینال برگردید و به دنبال تماس با نقطه پایانی PSC (10.100.100.0) باشید. پایان دادن به TCPdump (control+c)
خروجی نمونه
listening on ens4, link-type EN10MB (Ethernet), snapshot length 262144 bytes 19:12:01.473886 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [S], seq 3367930834, win 65320, options [mss 1420,sackOK,TS val 2933602967 ecr 0,nop,wscale 7], length 0 19:12:01.476561 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [S.], seq 1863301110, ack 3367930835, win 65535, options [mss 1366,sackOK,TS val 3004118895 ecr 2933602967,nop,wscale 8], length 0 19:12:01.476602 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 1, win 511, options [nop,nop,TS val 2933602969 ecr 3004118895], length 0 19:12:01.477283 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [P.], seq 1:1573, ack 1, win 511, options [nop,nop,TS val 2933602970 ecr 3004118895], length 1572 19:12:01.478836 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [.], ack 1573, win 1045, options [nop,nop,TS val 3004118898 ecr 2933602970], length 0 19:12:01.480181 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [P.], seq 1:6041, ack 1573, win 1045, options [nop,nop,TS val 3004118899 ecr 2933602970], length 6040 19:12:01.480183 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [P.], seq 6041:8378, ack 1573, win 1045, options [nop,nop,TS val 3004118899 ecr 2933602970], length 2337 19:12:01.480215 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 6041, win 485, options [nop,nop,TS val 2933602973 ecr 3004118899], length 0 19:12:01.480225 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 8378, win 473, options [nop,nop,TS val 2933602973 ecr 3004118899], length 0 19:12:01.482580 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [P.], seq 1573:1653, ack 8378, win 501, options [nop,nop,TS val 2933602975 ecr 3004118899], length 80
موفقیت!
11. مراحل پاکسازی
نوت بوک JupyterLab را ببندید و به Cloud Shell برگردید. مطمئن شوید که Cloud Shell شما تمام نشده است. اگر چنین است، متغیرهای خود را بازنشانی کنید.
از Cloud Shell
gcloud config list project gcloud config set project <project-id> export project=$(gcloud config get-value project) export region=us-central1 export zone=$region-a echo $project echo $region echo $zone
تمام منابع را حذف کنید
از Cloud Shell
gcloud workbench instances delete workbench-$region --location=$zone -q gcloud iam service-accounts delete workbench-sa@$project.iam.gserviceaccount.com -q gcloud dns managed-zones delete peeringzone -q gcloud compute forwarding-rules delete psc4googep --global -q gcloud compute addresses delete psc-ip --global -q gcloud network-connectivity spokes delete $region-vpn-spoke --region=$region -q gcloud network-connectivity spokes delete routing-vpc --global -q gcloud network-connectivity hubs delete ncc-hub -q gcloud compute vpn-tunnels delete onprem-to-routing-tunnel1 --region=$region --project=$project -q gcloud compute vpn-tunnels delete onprem-to-routing-tunnel0 --region=$region --project=$project -q gcloud compute vpn-tunnels delete routing-to-onprem-tunnel1 --region=$region --project=$project -q gcloud compute vpn-tunnels delete routing-to-onprem-tunnel0 --region=$region --project=$project -q gcloud compute vpn-gateways delete onprem-gateway --region=$region --project=$project -q gcloud compute vpn-gateways delete routing-gateway --region=$region --project=$project -q gcloud compute routers nats delete onprem-$region-nat --router=onprem-$region-cr-4nat --region=$region -q gcloud compute routers delete onprem-$region-cr-4nat --region=$region -q gcloud compute routers delete onprem-$region-cr --region=$region -q gcloud compute routers delete routing-$region-cr --region=$region -q gcloud compute networks subnets delete onprem-$region-subnet --region=$region -q gcloud compute networks delete onprem-vpc -q gcloud compute networks delete routing-vpc -q
12. تبریک می گویم!
برای تکمیل کد لبه تبریک می گویم.
آنچه را پوشش داده ایم
- یک NCC Hub ایجاد کنید.
- اسپیک های VPC را در یک مرکز NCC پیکربندی کنید.
- یک Cloud HA VPN ایجاد کنید.
- اسپیک های هیبریدی را در یک هاب NCC پیکربندی کنید.
- یک PSC برای Google APIs endpoint ایجاد کنید.
- یک مسیر سفارشی را از طریق HA-VPN پیکربندی کنید.
- یک منطقه همتای DNS را پیکربندی کنید.
- یک نمونه Vertex Workbench را پیکربندی کنید
- کد Gemini Python را برای استفاده از PSC برای Google APIs API Endpoint پیکربندی کنید.