हाइब्रिड कनेक्शन पर Gemini को ऐक्सेस करने के लिए, Google API के लिए Private Service Connect का इस्तेमाल करना

1. परिचय

Google API के लिए Private Service Connect (PSC), Google Cloud की नेटवर्किंग सुविधा है. इसकी मदद से उपयोगकर्ता, वीपीसी में मौजूद प्राइवेट आईपी ग्लोबल एंडपॉइंट के ज़रिए प्राइवेट ऐक्सेस को कॉन्फ़िगर कर सकते हैं. जो उपयोगकर्ता, वीपीएन या इंटरकनेक्ट के ज़रिए Google Cloud से कनेक्ट किए गए हाइब्रिड एनवायरमेंट में कोड या क्लाइंट साइड ऐप्लिकेशन चला रहे हैं उनके लिए, PSC का इस्तेमाल उस प्राइवेट हाइब्रिड कनेक्शन पर Google API को ऐक्सेस करने के लिए किया जाता है.

Google API के लिए पीएससी, कई अलग-अलग डोमेन को हल कर सकता है. इनकी पूरी सूची यहां देखी जा सकती है. ज़्यादातर Google API, <API>.googleapis.com डोमेन का इस्तेमाल करते हैं. इस डोमेन के साथ-साथ, PSC उपयोगकर्ताओं को googleapis.com का एक ऐसा वर्शन भी उपलब्ध कराता है जो <API>-<PSC-ENDPOINT-NAME>.**p.**googleapis.com है. इस डोमेन का इस्तेमाल करके, उपयोगकर्ता ऐप्लिकेशन को कॉन्फ़िगर कर सकते हैं, ताकि वे खास PSC एंडपॉइंट का इस्तेमाल कर सकें. सबसे ज़्यादा इस्तेमाल किए जाने वाले मामले में, उपयोगकर्ताओं को यह चुनने की अनुमति मिलती है कि कौनसे ऐप्लिकेशन, हाइब्रिड कनेक्शन पर Google API ट्रैफ़िक को रूट करने के लिए PSC एंडपॉइंट का इस्तेमाल करें. साथ ही, अन्य ऐप्लिकेशन को सार्वजनिक एपीआई एंडपॉइंट पर ट्रैफ़िक को रूट करने की अनुमति मिलती है.

Gemini, Google Cloud के Vertex AI प्रॉडक्ट सुइट के तहत आता है. साथ ही, यह Google API की उस सूची में शामिल है जिसे Google API के लिए पीएससी की मदद से हल किया जा सकता है.

इस कोडलैब में, आपको एक सिम्युलेटेड हाइब्रिड एनवायरमेंट बनाना होगा. इसमें, आपको Workbench इंस्टेंस को ऑन-प्रेम होस्ट करना होगा. साथ ही, Gemini के Python कोड को चलाना होगा. यह कोड, HA वीपीएन के ज़रिए Gemini API को निजी तौर पर ऐक्सेस करता है. यह Google API के PSC एंडपॉइंट से कनेक्ट होता है.

आपको क्या सीखने को मिलेगा

  • एनसीसी हब बनाएं.
  • एनसीसी हब में वीपीसी स्पोक कॉन्फ़िगर करें.
  • Cloud HA VPN बनाएं.
  • एनसीसी हब में हाइब्रिड स्पोक कॉन्फ़िगर करना.
  • Google APIs के एंडपॉइंट के लिए पीएससी बनाएं.
  • HA-VPN पर कस्टम रूट कॉन्फ़िगर करें.
  • डीएनएस पियरिंग ज़ोन कॉन्फ़िगर करें.
  • Vertex Workbench इंस्टेंस को कॉन्फ़िगर करना
  • Google APIs API एंडपॉइंट के लिए पीएससी का इस्तेमाल करने के लिए, Gemini Python कोड को कॉन्फ़िगर करें.

आपको इन चीज़ों की ज़रूरत होगी

  • "मालिक" या "एडिटर" की पूरी अनुमतियों वाला Google Cloud प्रोजेक्ट.

2. टोपोलॉजी कोडलैब

74f1027c8c8085f6.png

इस कोडलैब के लिए, हाइब्रिड एनवायरमेंट को सिम्युलेट करने के लिए Google Cloud का इस्तेमाल किया जाएगा. इस कोडलैब में, Google Cloud से जुड़े कुछ ऐसे चरण होंगे जो कंपनी की इमारत में मौजूद सिस्टम से कॉन्फ़िगर किए जाने पर अलग होंगे. इन चरणों के बारे में बताया जाएगा.

आपको एक ऐसा एनसीसी हब बनाना होगा जिसमें राउटिंग-वीपीसी, वीपीसी स्पोक के तौर पर काम करेगा. उस वीपीसी में, ऑन-प्रेम वीपीसी के लिए HA-VPN कॉन्फ़िगर किया जाएगा. यह ऑन-प्रेम एनवायरमेंट की तरह काम करेगा. HA-VPN को NCC हब में हाइब्रिड स्पोक के तौर पर कॉन्फ़िगर किया जाएगा. ऑन-प्रिमाइसेस वीपीसी में, आपको एक सबनेट बनाना होगा. इसमें Workbench इंस्टेंस को होस्ट किया जाएगा. आपको एक Cloud NAT भी बनाना होगा, ताकि Workbench इंस्टेंस पर पैकेज डाउनलोड किए जा सकें.

आखिर में, आपको ऑन-प्रेम वीपीसी के लिए एक डीएनएस पियरिंग ज़ोन बनाना होगा, ताकि वह p.googleapis.com के लिए Service Directory Private zone का इस्तेमाल कर सके. यह ज़ोन, Google API के लिए पीएससी अपने-आप बनाता है.

3. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Google Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी (आम तौर पर PROJECT_ID के तौर पर पहचाना जाता है) का रेफ़रंस देना होगा. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहता है.
  • आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ पढ़ें.
  1. इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा समय नहीं लगेगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, बनाए गए संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त में आज़माने के प्रोग्राम के लिए ज़रूरी शर्तें पूरी करते हैं.

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें:

55efc1aaa7a4d3ad.png

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

7ffe5cbb04455448.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में मौजूद सभी टास्क, ब्राउज़र में किए जा सकते हैं. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.

4. शुरू करने से पहलेअवधि: 2:00

एपीआई चालू करें

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

प्रोजेक्ट में सभी ज़रूरी Google API चालू करें.

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. वीपीसी और सबनेट बनानाअवधि: 5:00

नेटवर्क बनाना

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 Router बनाएं, जिसका इस्तेमाल routing-vpc में HA VPN के साथ किया जाएगा.

Cloud Shell से

gcloud compute routers create routing-$region-cr \
    --network=routing-vpc \
    --region=$region \
    --asn=64512

एक Cloud Router बनाएं, जिसका इस्तेमाल onprem-vpc में HA VPN के साथ किया जाएगा.

Cloud Shell से

gcloud compute routers create onprem-$region-cr \
    --network=onprem-vpc \
    --region=$region \
    --asn=64513

एक Cloud Router बनाएं, जिसका इस्तेमाल onprem-vpc में Cloud NAT के साथ किया जाएगा.

Cloud Shell से

gcloud compute routers create onprem-$region-cr-4nat \
    --network=onprem-vpc \
    --region=$region

onprem-vpc में मौजूद Cloud NAT का इस्तेमाल, Vertex AI Workbench इंस्टेंस में पैकेज डाउनलोड करने के लिए किया जाएगा. इसे बाद के चरण में कॉन्फ़िगर किया जाएगा.

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 बनानाDuration: 7:00

वीपीएन गेटवे बनाएं.

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

रूटिंग-वीपीसी से वीपीएन टनल बनाएं.

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

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

routing-vpc से शुरू होने वाली दो टनल के लिए, BGP सेशन सेट अप करें.

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

onprem-vpc से शुरू होने वाले दो टनल के लिए, BGP सेशन सेट अप करें.

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

कंसोल में, नेटवर्क कनेक्टिविटी > वीपीएन पेज पर जाएं. साथ ही, पक्का करें कि आपके HA-VPN टनल और बीजीपी सेशन सही तरीके से कॉन्फ़िगर किए गए हों.

7. NCC हब और स्पोक कॉन्फ़िगर करनाDuration:10:00

NCC Hub बनाना

Cloud Shell से

gcloud network-connectivity hubs create ncc-hub \
    --project="$project" \
    --preset-topology="mesh"

एनसीसी स्पोक बनाना

एनसीसी gcloud के लिए ज़रूरी है कि सभी स्पोक, पूरे पाथ के नामों या यूआरआई के साथ कॉन्फ़िगर किए गए हों.

Cloud Shell से

gcloud compute networks describe routing-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

रूटिंग वीपीसी स्पोक कॉन्फ़िगर करना

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

रूटिंग-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. Google API के लिए Private Service Connect सेट अप करनाअवधि: 5:00

Google APIs के एंडपॉइंट के लिए पीएससी, ग्लोबल आईपी पतों से बनाए जाते हैं. ये पते, किसी क्षेत्रीय वीपीसी सबनेट में नहीं होते हैं. ग्लोबल आईपी पते को खास तौर पर 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 इंस्टेंस सेट अप करनाDuration: 5:00

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

gcloud कमांड के चलने के दौरान, Workbench इंस्टेंस को चालू होने में ज़्यादा समय लग सकता है.

10. Gemini Code Assist को आज़माएँDuration: 7:00

यूज़र इंटरफ़ेस (यूआई) में, "JupyterLab खोलें" पर क्लिक करें.

1b7ff959f1072aaa.png

JupyterLab में, नई Python 3 नोटबुक खोलें.

18c26d06183faca1.png

नोटबुक में यहां दिया गया कोड चलाएं. पक्का करें कि आपने कोड को अपडेट करके, उसमें अपने प्रोजेक्ट और क्षेत्र की जानकारी शामिल की हो.

JupyterLab Notebook से

pip install --upgrade google-genai

नोटबुक कर्नल को रीस्टार्ट करें.

fe7911ce8b54ff8a.png

एपीआई एंडपॉइंट नोट करें. यहां हम API एंडपॉइंट <YOUR_REGION>-aiplatform.googleapis.com का इस्तेमाल कर रहे हैं. यह Vertex AI के लिए स्टैंडर्ड API एंडपॉइंट है.

JupyterLab Notebook से

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 Notebook से

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.

उस एपीआई का नाम नोट करें जिसका इस्तेमाल आपने कोड को चलाने के लिए किया था. YOUR_REGION-aiplatform.googleapis.com, Vertex AI के लिए डिफ़ॉल्ट एपीआई का नाम है. हमें एपीआई का नाम बदलना होगा और कोड को फिर से चलाना होगा. हम यह पक्का कर सकते हैं कि कोड, पीएससी एंडपॉइंट का इस्तेमाल कर रहा है. इसके लिए, हमें वर्कबेंच इंस्टेंस पर टर्मिनल में टीसीपीडंप चलाना होगा.

टर्मिनल में TCPdump चलाना

Workbench पर टर्मिनल खोलने के लिए, फ़ाइल > नया > टर्मिनल पर क्लिक करें.

2cc405367de1f4c2.png

अगर आपको टर्मिनल में टेक्स्ट आउटपुट देखने में समस्याएं आ रही हैं, तो आपको टर्मिनल थीम अपडेट करनी होगी. इसके लिए, सेटिंग > टर्मिनल थीम > लाइट या डार्क पर जाएं.

टर्मिनल से

sudo tcpdump host 10.100.100.0

Gemini कोड अपडेट करना

नोटबुक पर वापस जाएं, एपीआई एंडपॉइंट अपडेट करें, और कोड को फिर से चलाएं. ध्यान दें कि हमने एपीआई एंडपॉइंट को <YOUR_REGION>-aiplatform**-psc4googep.p**.googleapis.com में बदल दिया है. यह पीएससी के लिए खास तौर पर बनाए गए एपीआई फ़ॉर्मैट <service>-<endpointname>.p.googleapis.com के मुताबिक है.

JupyterLab Notebook से

API_ENDPOINT="https://<YOUR_REGION>-aiplatform-psc4googep.p.googleapis.com" # API Endpoint

JupyterLab Notebook से

from google import genai
from google.genai.types import (
    GenerateContentConfig,
    HarmBlockThreshold,
    HarmCategory,
    Part,
    SafetySetting,
)

JupyterLab Notebook से

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. बधाई हो!

कोडलैब पूरा करने के लिए बधाई.

हमने क्या-क्या बताया

  • एनसीसी हब बनाएं.
  • एनसीसी हब में वीपीसी स्पोक कॉन्फ़िगर करें.
  • Cloud HA VPN बनाएं.
  • एनसीसी हब में हाइब्रिड स्पोक कॉन्फ़िगर करना.
  • Google APIs के एंडपॉइंट के लिए पीएससी बनाएं.
  • HA-VPN पर कस्टम रूट कॉन्फ़िगर करें.
  • डीएनएस पियरिंग ज़ोन कॉन्फ़िगर करें.
  • Vertex Workbench इंस्टेंस को कॉन्फ़िगर करना
  • Google APIs API एंडपॉइंट के लिए पीएससी का इस्तेमाल करने के लिए, Gemini Python कोड को कॉन्फ़िगर करें.