Private Service Connect एंडपॉइंट के ज़रिए, Python SDK का इस्तेमाल करके Gemini 3 Pro की चैट सुविधा को ऐक्सेस करना

1. खास जानकारी

Vertex AI API को इंटरनेट पर ऐक्सेस किया जा सकता है. हालांकि, आपकी कंपनी में Vertex AI API को इंटरनेट पर ऐक्सेस किए बिना, निजी तौर पर ऐक्सेस किया जा सकता है. इस लैब में आपको सबसे पहले.

  • Python SDK का इस्तेमाल करके, Vertex के ज़रिए Gemini 3 Pro API को ऐक्सेस करना
  • यह VM इंस्टेंस पर चल रहा होगा
  • कनेक्शन, Cloud NAT के ज़रिए सार्वजनिक इंटरनेट से होगा.

इसके बाद, Google API से कनेक्ट करने के लिए एक Private Service Connect एंडपॉइंट बनाया जाएगा. साथ ही, Gemini Chat API से कनेक्ट करने के लिए, ट्रैफ़िक फ़्लो को बदलकर प्राइवेट एंडपॉइंट का इस्तेमाल किया जाएगा. कॉन्फ़िगरेशन, Terraform, gcloud, और कंसोल का कॉम्बिनेशन होगा.

इस लैब में, आपको यह पैटर्न बनाना है.

इमेज 1.

304c579d349aec90.png

2. मकसद

इस लैब में, आपको यह काम करने का तरीका बताया जाएगा:

  • Python SDK का इस्तेमाल करने के लिए, वीएम इंस्टेंस सेट अप करना
  • Python स्क्रिप्ट के ज़रिए Gemini Chat से कनेक्ट करना
  • Googleapis से कनेक्ट करने के लिए, पीएससी एंडपॉइंट कॉन्फ़िगर करना
  • Googleais से कनेक्ट होने के पाथ की पुष्टि करना
  • डीएनएस की मैन्युअल एंट्री कॉन्फ़िगर करना

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

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

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.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 आइकॉन पर क्लिक करें:

Cloud Shell चालू करें

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

Google Cloud Shell टर्मिनल का स्क्रीनशॉट. इसमें दिखाया गया है कि एनवायरमेंट कनेक्ट हो गया है

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

3. टास्क 1. Terraform की मदद से एनवायरमेंट सेट अप करना

हम फ़ायरवॉल के नियमों और सबनेट के साथ एक कस्टम वीपीसी बनाएंगे. क्लाउड कंसोल खोलें और वह प्रोजेक्ट चुनें जिसका आपको इस्तेमाल करना है.

  1. अपनी कंसोल के सबसे ऊपर दाईं ओर मौजूद Cloud Shell खोलें. पक्का करें कि आपको Cloud Shell में सही प्रोजेक्ट आईडी दिख रहा हो. साथ ही, ऐक्सेस की अनुमति देने के लिए दिखने वाले किसी भी प्रॉम्प्ट की पुष्टि करें. b51b80043d3bac90.png
  2. terraform-build नाम का फ़ोल्डर बनाओ और उसमें ले जाओ
mkdir terraform-build  && cd terraform-build
  1. main.tf और variable.tf फ़ाइल बनाएं.
touch main.tf variable.tf 
  1. Cloud Shell एडिटर व्यू पर स्विच करें. एडिटर को चुनें. साथ ही, पक्का करें कि आपने सभी ज़रूरी प्रॉम्प्ट को अनुमति दी हो, ताकि इंटरफ़ेस लोड हो सके.
  2. लोड होने के बाद, फ़ाइल > फ़ोल्डर खोलें पर जाएं. इसके बाद, /home/your-user-name/terraform-build पर जाएं और ठीक है को चुनें, ताकि फ़ोल्डर को एडिटर में खोला जा सके. 39b3eb9a3e077bfd.png
  3. variable.tf फ़ाइल चुनें और इसमें यह कोड जोड़ें. your-project-id-here टेक्स्ट की जगह, कोटेशन मार्क में अपना असल प्रोजेक्ट आईडी डालें
variable "project_id" {
  type = string
  default = "your-project-id-here"
}

variable "network_id" {
  type = string
  default = "python-net"
}
  1. इसके बाद, main.tf फ़ाइल खोलें. हम यहां कुछ टेराफ़ॉर्म कोड जोड़ने जा रहे हैं, ताकि नीचे बताई गई कार्रवाइयां की जा सकें.

एपीआई चालू करना

resource "google_project_service" "default"

python-net नाम का वीपीसी बनाएं

resource "google_compute_network" "default"

सबनेट जोड़ना

resource "google_compute_subnetwork" "default"

दो फ़ायरवॉल नियम जोड़ना

resource "google_compute_firewall" "allow_icmp"resource "google_compute_firewall" "allow_ssh"

  1. यहां दिए गए कोड को कॉपी करके, main .tf फ़ाइल में चिपकाएं.
resource "google_project_service" "default" {
  project = var.project_id 
  for_each = toset([
    "dns.googleapis.com",
    "aiplatform.googleapis.com",
    "servicedirectory.googleapis.com"
  ])

  service            = each.value
  disable_on_destroy = false
}

resource "google_compute_network" "default" {
  project                 = var.project_id
  name                    = var.network_id
  auto_create_subnetworks = false
  mtu                     = 1460
  routing_mode            = "GLOBAL"
}

resource "google_compute_subnetwork" "default" {
  name          = "vm1-subnet"
  ip_cidr_range = "10.0.11.0/24"
  project       = var.project_id
  region        = "us-east1"
  stack_type    = "IPV4_ONLY"
  network       = google_compute_network.default.id
}

resource "google_compute_firewall" "allow_icmp" {
  name    = "allow-icmp-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "icmp"
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-icmp"]
}

resource "google_compute_firewall" "allow_ssh" {
  name    = "allow-ssh-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "tcp"
    ports    = ["22"]
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-ssh"]
}
  1. Cloud Shell टर्मिनल पर वापस जाएं. पक्का करें कि आप terraform-build डायरेक्ट्री cd terraform-build में हों. इसके बाद, ये कमांड चलाएं

terraform init

इससे वर्किंग डायरेक्ट्री शुरू होती है. इस चरण में, दिए गए कॉन्फ़िगरेशन के लिए ज़रूरी प्रोवाइडर डाउनलोड किए जाते हैं.

terraform plan

यह एक एक्ज़ीक्यूशन प्लान जनरेट करता है. इससे पता चलता है कि आपके इन्फ़्रास्ट्रक्चर को डिप्लॉय करने के लिए, Terraform कौनसी कार्रवाइयां करेगा.

  1. अब संसाधन बनाने के लिए, terraform apply कमांड चलाएं और yes टाइप करके इसे चलाएं.

4. टास्क 2. Terraform की मदद से NAT गेटवे और वीएम बनाना

हमें इंटरनेट के लिए आउटबाउंड बाहरी ऐक्सेस देना होगा. इसलिए, चलिए एक Cloud NAT गेटवे बनाते हैं और उसे अटैच करते हैं.

  1. Cloud Shell खोलें. इसके बाद, terraform-build फ़ोल्डर पर जाएं और यहां दी गई तीन फ़ाइलें बनाएं. हम इनमें बाद में बदलाव करेंगे.
touch nat-vm.tf psc.tf dns.tf
  1. Cloud Shell एडिटर व्यू पर स्विच करें. इसके बाद, nat-vm.tf फ़ाइल चुनें और यह Terraform कोड जोड़ें. इससे एक NAT गेटवे और दो वीएम बन जाएंगे.

Terraform nat-vm.tf

resource "google_compute_router" "default" {
  name    = "py-outbound-nat"
  region  = "us-east1"
  network = google_compute_network.default.id
  project = var.project_id
  

 bgp {
  asn = 64514
  }
}

resource "google_compute_router_nat" "default" {
  name                               = "py-outbound-nat-gw"
  router                             = google_compute_router.default.name
  region                             = google_compute_router.default.region
  nat_ip_allocate_option             = "AUTO_ONLY"
  project                            = var.project_id
  source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"

  log_config {
    enable = true
    filter = "ERRORS_ONLY"
  }
}

resource "google_compute_instance" "vm1" {
  name         = "py-vm1"
  zone         = "us-east1-b"
  machine_type = "n2-standard-2"
  project      = var.project_id

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-12"
    }
  }

  network_interface {
    subnetwork = google_compute_subnetwork.default.id  
    stack_type = "IPV4_ONLY"
  }

  tags = ["allow-ssh", "allow-icmp"]

  metadata_startup_script = <<-EOF
    #! /bin/bash
    sudo apt-get update
    sudo apt-get install python3 python3-dev python3-venv git -y
    sudo apt-get install tcpdump dnsutils -y    
    
      mkdir -p ~/py-gem-env
      cd ~/py-gem-env
      python3 -m venv env
      source env/bin/activate
      pip install --upgrade pip
      pip install ipython google-genai
    '
  EOF
}
  1. Cloud Shell टर्मिनल पर जाएं. पक्का करें कि आप terraform-build फ़ोल्डर में हों. इसके बाद, terraform plan चलाएं. इससे आपको पता चलेगा कि चार आइटम जोड़े जाएंगे. इसके बाद, terraform apply चलाएं और NAT गेटवे और वीएम बनाने के लिए yes टाइप करें.

5. टास्क 3. वीएम कॉन्फ़िगर करना और उनकी जांच करना

  1. वीएम इंस्टेंस पर जाएं. py-vm1 से शुरू होने वाली वीएम चुनें. SSH को चुनें.
  2. py-vm1 में एसएसएच करने के बाद,sudo -i टाइप करके रूट चालू करें
  3. अपना venv एनवायरमेंट चालू करें:
cd py-gem-env
source env/bin/activate
  1. अब इसकी पुष्टि करते हैं, ताकि बाद में कुछ टेस्टिंग की जा सके. वीएम में यहां दिया गया निर्देश चलाएं. जब कहा जाए, तब y दबाएं.
gcloud auth application-default login
  1. इसके बाद, https:// से शुरू होने वाले यूआरएल को कॉपी करें. अपने लैब ब्राउज़र विंडो में एक नया टैब खोलें और यूआरएल चिपकाएं. प्रॉम्प्ट स्वीकार करें.
  2. जब आपको यह दिखे, तो कॉपी करें को चुनें. इसके बाद, py-vm1 सेशन पर वापस जाएं. Enter authorization code: के लिए, कॉपी किया गया कोड चिपकाएं और पुष्टि करने के लिए Enter दबाएं.

b703db7aa2aa286a.png

  1. अब हम एक क्विक टेस्ट करेंगे, ताकि यह पता चल सके कि हम Vertex API से कनेक्ट हो सकते हैं या नहीं. यह *-aiplatform.googleapis.com का इस्तेमाल करता है. इसलिए, हम उस पते पर dig करेंगे, ताकि यह पता चल सके कि ट्रैफ़िक कैसे रूट होता है.
dig *-aiplatform.googleapis.com
  1. आपको कुछ ऐसा दिखेगा (पता अलग होगा). ध्यान दें कि एपीआई एक सार्वजनिक एपीआई है, इसलिए पाथ सार्वजनिक आईपी पतों के ज़रिए होता है. कॉपी न करें
; <<>> DiG 9.18.41-1~deb12u1-Debian <<>> *-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60947
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;*-aiplatform.googleapis.com.   IN      A

;; ANSWER SECTION:
*-aiplatform.googleapis.com. 300 IN     A       173.194.216.95
*-aiplatform.googleapis.com. 300 IN     A       108.177.11.95
*-aiplatform.googleapis.com. 300 IN     A       192.178.219.95
*-aiplatform.googleapis.com. 300 IN     A       74.125.134.95
*-aiplatform.googleapis.com. 300 IN     A       74.125.139.95
*-aiplatform.googleapis.com. 300 IN     A       108.177.12.95
*-aiplatform.googleapis.com. 300 IN     A       173.194.210.95
*-aiplatform.googleapis.com. 300 IN     A       74.125.26.95
*-aiplatform.googleapis.com. 300 IN     A       173.194.212.95
*-aiplatform.googleapis.com. 300 IN     A       172.217.204.95
  1. अब Python का इस्तेमाल करते हैं. ipython इंटरफ़ेस को चालू करने के लिए, ipython टाइप करें.
ipython

845ef4291429888a.png

  1. अब इसे कॉपी करें और चिपकाएं. इस उदाहरण में, Gemini से पूछा गया है कि "Google के लोगो में कौन-कौनसे रंग हैं" और "आसमान का रंग क्या है" .
from google import genai
from google.genai import types
import os
import sys

LOCATION = "global"
MODEL_ID = "gemini-3-pro-preview" 

try:
    client = genai.Client(vertexai=True, location=LOCATION)
    print(f"Successfully initialized Google Gen AI Client (Vertex AI mode) in {LOCATION}")
except Exception as e:
    print(f"Error initializing client: {e}")
    print("Ensure you have installed the library: `pip install google-genai`")
    print("And authenticated: `gcloud auth application-default login`")
    sys.exit(1)

class SimpleChatSession:
    def __init__(self, model_id):
        self.model_id = model_id
        self.history = [] 

    def send_message(self, prompt, stream=True):
        user_content = types.Content(
            role="user",
            parts=[types.Part(text=prompt)]
        )
        self.history.append(user_content)

        try:
            response_stream = client.models.generate_content_stream(
                model=self.model_id,
                contents=self.history,
                config=types.GenerateContentConfig(
                    temperature=0.7 
                )
            )

            accumulated_text = ""
            
            for chunk in response_stream:
                if chunk.text:
                    yield chunk.text
                    accumulated_text += chunk.text
            
            model_content = types.Content(
                role="model",
                parts=[types.Part(text=accumulated_text)]
            )
            self.history.append(model_content)

        except Exception as e:
            print(f"\n[Error during generation: {e}]")

def get_chat_response(session: SimpleChatSession, prompt: str):
    print(f"\n--- User: {prompt} ---")
    print("--- Model: ", end="")
    
    stream_generator = session.send_message(prompt)
    
    full_text = ""
    for chunk_text in stream_generator:
        full_text += chunk_text
        print(chunk_text, end="", flush=True)

    print() 
    return full_text

if __name__ == "__main__":
    chat_session = SimpleChatSession(MODEL_ID)

    get_chat_response(chat_session, "Hello.")
    get_chat_response(chat_session, "What are all the colors of the Google logo?")
    get_chat_response(chat_session, "What color is the sky?")
  1. कोड चलाने और नतीजा देखने के लिए, दो बार Enter दबाएं.
  2. इस अनुरोध में, सार्वजनिक एपीआई के ज़रिए Vertex को ऐक्सेस किया गया था.
  3. SSH सेशन बंद करें और जारी रखें.

6. टास्क 4. Terraform की मदद से, googleapis के लिए पीएससी एंडपॉइंट बनाना

हम Google API के लिए एक Private Service Connect एंडपॉइंट बनाएंगे, ताकि हमारे Vertex API एंडपॉइंट से निजी तौर पर कनेक्ट किया जा सके. इससे हमें एक निजी आईपी पते का इस्तेमाल करने की अनुमति मिलेगी. हम इस पते को, Google के उन एपीआई पर ट्रैफ़िक भेजने के लिए असाइन करते हैं जिनकी हमें ज़रूरत होती है. इस मामले में, Vertex.

  1. अगर Cloud Shell पहले से खुला नहीं है, तो उसे एडिटर व्यू में खोलें. हम ये चीज़ें बनाने जा रहे हैं:
  • पीएसई एंडपॉइंट 192.168.255.250 के लिए आईपी बनाएं (resource "google_compute_global_address" "default")
  • Google API के लिए पीएससी एंडपॉइंट बनाएं (resource "google_compute_global_forwarding_rule" "default")

terraform-build फ़ोल्डर में मौजूद psc.tf फ़ाइल खोलें. फ़ाइल में यह कोड जोड़ें.

Terraform psc.tf

resource "google_compute_global_address" "default" {
  name         = "vertex-ip"
  purpose      = "PRIVATE_SERVICE_CONNECT"
  network      = google_compute_network.default.id
  address_type = "INTERNAL"
  address      = "192.168.255.250"
}

resource "google_compute_global_forwarding_rule" "default" {  
  name                  = "pscvertexgemini"
  target                = "all-apis"
  network               = google_compute_network.default.id
  ip_address            = google_compute_global_address.default.id
  load_balancing_scheme = ""
  }
  1. Cloud Shell टर्मिनल पर स्विच करें. पक्का करें कि आप terraform-build फ़ोल्डर में हों. इसके बाद, terraform init चलाएं. terraform plan इससे आपको पता चलेगा कि दो आइटम जोड़े जाएंगे.
    इसके बाद, terraform apply चलाएं और आईपी और पीएससी Google APIs एंडपॉइंट बनाने के लिए yes टाइप करें.
  2. एंडपॉइंट मौजूद होने की पुष्टि करना
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

7. टास्क 5. Terraform की मदद से, googleapis के लिए मैन्युअल डीएनएस एंट्री बनाना

प्राइवेट डीएनएस का इस्तेमाल करके, पीएससी एंडपॉइंट पर ले जाने वाली मैन्युअल डीएनएस एंट्री बनाई जा सकती है. इससे उन सभी नेटवर्क पर असर पड़ेगा जिन्हें आपने इससे असाइन किया है.

  1. नेटवर्क सेवाओं पर जाएं और Cloud DNS चुनें.
  2. आपको ज़ोन में, Google API के लिए Private Service Connect का अपने-आप बनाया गया ज़ोन दिखेगा. इसका ज़ोन टाइप, सेवा डायरेक्ट्री होगा. इसका इस्तेमाल, पीएससी एंडपॉइंट से कनेक्ट करने के लिए किया जा सकता है. इसका फ़ॉर्मैट **SERVICE-ENDPOINT.p.googleapis.com होता है. उदाहरण: aiplatform-pscvertexgemini.p.googleapis.com
  3. इस मामले में, हमें मैन्युअल तरीके से एक निजी डीएनएस एंट्री बनानी है. कॉन्फ़िगरेशन इस तरह होगा
  • "googleapis.com" के लिए, "googleapis-private" नाम का एक निजी डीएनएस ज़ोन बनाएं और इसे "python-net" नेटवर्क तक सीमित करें.
  • "googleapis.com" को आईपी पते "192.168.255.250" पर मैप करने के लिए, एक ए रिकॉर्ड जोड़ें.
  • "googleapis.com" के सभी सबडोमेन (जैसे, www.googleapis.com) को "googleapis.com" पर रीडायरेक्ट करने के लिए, CNAME रिकॉर्ड जोड़ें.
  1. अगर Cloud Shell पहले से खुला नहीं है, तो उसे एडिटर व्यू में खोलें. terraform-build फ़ोल्डर में मौजूद dns.tf फ़ाइल खोलें. फ़ाइल में यह कोड जोड़ें.

Terraform dns.tf

resource "google_dns_managed_zone" "private_zone" {
  name        = "googleapis-private"
  dns_name    = "googleapis.com."  
  visibility  = "private"
  project     = var.project_id     

  private_visibility_config {
    networks {
      network_url = google_compute_network.default.id  
    }
  }
}

resource "google_dns_record_set" "a_record" {
  name    = "googleapis.com."  
  type    = "A"
  ttl     = 300
  managed_zone = google_dns_managed_zone.private_zone.name
  project = var.project_id    

  rrdatas = ["192.168.255.250"]
}

resource "google_dns_record_set" "cname_record" {
 name    = "*.googleapis.com."
 type    = "CNAME"
 ttl     = 300
 managed_zone = google_dns_managed_zone.private_zone.name
 project = var.project_id    

 rrdatas = ["googleapis.com."]  
}
  1. Cloud Shell टर्मिनल पर स्विच करें. पक्का करें कि आप terraform-build फ़ोल्डर में हों. इसके बाद, terraform plan चलाएं. इससे आपको पता चलेगा कि कौनसे आइटम जोड़े जाएंगे.
    इसके बाद, terraform apply चलाएं और निजी डीएनएस एंट्री बनाने के लिए yes टाइप करें.
  2. आपको A रिकॉर्ड और CNAME वाला सेटअप इस तरह दिखेगा 6d2fc061460cd983.png देखें
  3. इसके बाद, हम py-vm1 पर इन बदलावों के साथ कनेक्टिविटी की पुष्टि करते हैं

8. टास्क 6. आईपी पते के ज़रिए एंडपॉइंट कनेक्टिविटी की पुष्टि करना

Gemini से कनेक्ट करने के लिए, आइए प्राइवेट एंडपॉइंट का इस्तेमाल करें.

  1. VM इंस्टेंस py-vm1 पर जाएं. एसएसएच चुनें और वीएम में एसएसएच करें
  2. sudo -i टाइप करके, रूट ऐक्सेस पाएं
  3. ping कमांड का इस्तेमाल करके, aiplatform.googleapis.com से कनेक्टिविटी का पाथ देखें. इससे, निजी डीएनएस में मौजूद आईपी पते को पिंग किया जाएगा. साथ ही, googleapis के लिए A रिकॉर्ड को भी पिंग किया जाएगा. यह आईपी, पीएससी एंडपॉइंट है. इसलिए, आपके पिंग पूरे नहीं हो पाएंगे.
ping -c 2 aiplatform.googleapis.com
  1. aiplatform-pscvertexgemini.p.googleapis.com के साथ पीएससी Google API के लिए, अपने-आप बनाई गई डीएनएस एंट्री का इस्तेमाल करके, ping के साथ कनेक्टिविटी पाथ की जांच करें. यह पीएससी एंडपॉइंट के आईपी पते की ओर ले जाता है. इसलिए, आपके पिंग पूरे नहीं हो पाएंगे.
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
  1. dig कमांड का इस्तेमाल करके, aiplatform.googleapis.com से कनेक्टिविटी का पाथ देखें. यह पीएससी एंडपॉइंट का आईपी पता होना चाहिए.
dig aiplatform.googleapis.com
  1. कंसोल पर वापस जाएं और VM इंस्टेंस py-vm1 का दूसरा इंस्टेंस खोलें. SSH को चुनें और वीएम में एसएसएच करें
  2. sudo -i टाइप करके, रूट ऐक्सेस पाएं
  3. टीसीपी डंप में कनेक्टिविटी देखने के लिए, यह कमांड चलाएं
sudo tcpdump -i any port 53 -n or host aiplatform.googleapis.com
  1. अब VM इंस्टेंस py-vm1 के पहले एसएसएच इंस्टेंस पर वापस जाएं
  2. इस कमांड का इस्तेमाल करके एनवायरमेंट चालू करें
cd py-gem-env
source env/bin/activate
  1. अब Python को टेस्ट करते हैं. ipython इंटरफ़ेस को चालू करने के लिए, ipython टाइप करें.
ipython
  1. अब इसे कॉपी करें और चिपकाएं. इससे Gemini से ये सवाल पूछे जाते हैं: "एक छोटे वाक्य में बताओ कि एआई के संदर्भ में टोकनाइज़र क्या होता है?" और "क्या व्हेल शानदार होती हैं या नहीं?".
from google import genai
from google.genai import types
import os
import sys

LOCATION = "global"
MODEL_ID = "gemini-3-pro-preview" 

try:
    client = genai.Client(vertexai=True, location=LOCATION)
    print(f"Successfully initialized Google Gen AI Client (Vertex AI mode) in {LOCATION}")
except Exception as e:
    print(f"Error initializing client: {e}")
    print("Ensure you have installed the library: `pip install google-genai`")
    print("And authenticated: `gcloud auth application-default login`")
    sys.exit(1)

class SimpleChatSession:
    def __init__(self, model_id):
        self.model_id = model_id
        self.history = [] 

    def send_message(self, prompt, stream=True):
        user_content = types.Content(
            role="user",
            parts=[types.Part(text=prompt)]
        )
        self.history.append(user_content)

        try:
            response_stream = client.models.generate_content_stream(
                model=self.model_id,
                contents=self.history,
                config=types.GenerateContentConfig(
                    temperature=0.7 
                )
            )

            accumulated_text = ""
            
            for chunk in response_stream:
                if chunk.text:
                    yield chunk.text
                    accumulated_text += chunk.text
            
            model_content = types.Content(
                role="model",
                parts=[types.Part(text=accumulated_text)]
            )
            self.history.append(model_content)

        except Exception as e:
            print(f"\n[Error during generation: {e}]")

def get_chat_response(session: SimpleChatSession, prompt: str):
    print(f"\n--- User: {prompt} ---")
    print("--- Model: ", end="")
    
    stream_generator = session.send_message(prompt)
    
    full_text = ""
    for chunk_text in stream_generator:
        full_text += chunk_text
        print(chunk_text, end="", flush=True)

    print() 
    return full_text

if __name__ == "__main__":
    chat_session = SimpleChatSession(MODEL_ID)

    get_chat_response(chat_session, "Hello.")
    get_chat_response(chat_session, "In one short sentence summarize what is a tokenizer in the context of AI?")
    get_chat_response(chat_session, "Are whales awesome or not?")
  1. इसे चलाने और इसका नतीजा देखने के लिए, दो बार enter दबाएं.
  2. VM इंस्टेंस py-vm1 के दूसरे इंस्टेंस पर वापस जाएं. आपको टीसीपीडंप का नतीजा दिखेगा. आपको दिखेगा कि वीएम का आईपी पता, aiplatform.googleapis.com से कनेक्ट करने के लिए, पीएससी एंडपॉइंट के आईपी पते का इस्तेमाल कर रहा है

वीएम इंस्टेंस py-vm1 के सभी एसएसएच सेशन बंद करें

9. क्लीन अप करें

  1. Cloud Shell पर जाएं. पक्का करें कि आप terraform-build डायरेक्ट्री में हों cd terraform-build
  2. terraform plan destroy को चलाकर देखें कि कौन-कौनसे बदलाव किए जाएंगे
terraform plan -destroy
  1. इसके बाद, terraform destroy कमांड चलाएं. फिर, yes टाइप करें. इससे, Terraform की मदद से आपके प्रोजेक्ट में बनाए गए सभी संसाधन हटा दिए जाएंगे.
terraform destroy 

10. बधाई हो

बधाई हो, आपने Vertex से कनेक्ट कर लिया है. साथ ही, आपने सार्वजनिक एपीआई पते के ज़रिए Gemini 3 pro का इस्तेमाल किया है. इसके अलावा, आपने Google API के लिए Private Service Connect Endpoint का इस्तेमाल करके, निजी तौर पर भी इसका इस्तेमाल किया है. इस सुविधा की मदद से, प्राइवेट एपीआई कनेक्टिविटी को अपने ऑन-प्रेम/अन्य क्लाउड एनवायरमेंट में बढ़ाया जा सकता है. ये एनवायरमेंट, इंटरकनेक्ट, क्रॉस-क्लाउड इंटरकनेक्ट, और वीपीसी के ज़रिए कनेक्ट किए जाते हैं.

अगले चरण / ज़्यादा जानें

Vertex AI नेटवर्किंग के बारे में ज़्यादा जानें

कोड लैब: Private Service Connect एंडपॉइंट के ज़रिए, Python SDK की मदद से Vertex AI पर Anthropic Claude को ऐक्सेस करना

अगली लैब पर जाएं

Google Cloud की मदद से अपनी क्वेस्ट जारी रखें. साथ ही, Google Cloud Skills Boost के इन अन्य लैब को आज़माएं: