Private Service Connect एंडपॉइंट की मदद से, Python SDK के साथ Gemini Chat को ऐक्सेस करना

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

Vertex AI API को इंटरनेट पर ऐक्सेस किया जा सकता है. हालांकि, अपने एंटरप्राइज़ में आपको इंटरनेट के बिना, Vertex AI API को निजी तौर पर ऐक्सेस करने की सुविधा मिल सकती है. इस लैब में, सबसे पहले आपको सार्वजनिक इंटरनेट से वीएम इंस्टेंस पर चलने वाले Python SDK के ज़रिए, Vertex Gemini Chat API को ऐक्सेस करना होगा.

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

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

पहली इमेज.

8b283cc5684283c2.png

2. मकसद

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

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

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

Cloud Shell शुरू करना

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

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

हम फ़ायरवॉल के नियमों और सबनेट के साथ, पसंद के मुताबिक VPC बनाएंगे. Cloud Console खोलें और वह प्रोजेक्ट चुनें जिसका इस्तेमाल करना है.

  1. अपने कंसोल में सबसे ऊपर दाईं ओर मौजूद Cloud Shell खोलें. पक्का करें कि आपको Cloud Shell में सही प्रोजेक्ट आईडी दिख रहा हो. ऐक्सेस की अनुमति देने के लिए, किसी भी प्रॉम्प्ट की पुष्टि करें. 4261e776f64ea978.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 पर जाएं और एडिटर में फ़ोल्डर खोलने के लिए OK को चुनें. 78f5eb9f2f82f1b0.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" {
  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"
  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

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

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

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

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

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

टेराफ़ॉर्म nat-vm.tf

resource "google_compute_router" "default" {
  name    = "py-outbound-nat"
  region  = "us-east1"
  network = google_compute_network.default.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"
  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"

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

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

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

  metadata_startup_script = <<-EOF
    sudo apt-get update
    sudo apt-get install python3 python3-dev python3-venv -y
    sudo apt-get install tcpdump dnsutils -y
    sudo -i
    sudo mkdir -p ~/py-gem-env
    cd ~/py-gem-env
    python3 -m venv env
    source env/bin/activate
    pip install ipython google-cloud-aiplatform
  EOF
}

resource "google_compute_instance" "vm2" {
  name         = "py-vm2"
  zone         = "us-east1-b"
  machine_type = "n2-standard-2"

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

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

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

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

5. तीसरा टास्क. वर्चुअल मशीन (वीएम) कॉन्फ़िगर करें और जांच करें

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

c29615cdf9324209.png

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

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

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.210.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.211.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.212.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.213.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.215.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.216.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.12.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.13.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.26.95
  1. अब आइए, Python का इस्तेमाल करते हैं. ipython इंटरफ़ेस को चालू करने के लिए, ipython टाइप करें.
ipython

4685b31f13df54e1.png

  1. अब इन्हें कॉपी करें और चिपकाएं. इससे Gemini से पूछा जाता है कि "Google के लोगो के सभी रंग कौनसे हैं" और "आसमान का रंग क्या है" . कोटेशन में मौजूद enter-your-project-id-here की जगह अपना प्रोजेक्ट आईडी डालें
import vertexai
from vertexai.generative_models import GenerativeModel, ChatSession

project_id = "enter-your-project-id-here" 
location = "us-central1" 

vertexai.init(project=project_id, location=location)
model = GenerativeModel("gemini-1.5-pro")
chat_session = model.start_chat()  

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    text_response = []
    responses = chat.send_message(prompt, stream=True)
    for chunk in responses:
        text_response.append(chunk.text)
    return "".join(text_response)

prompt = "Hello."
print(get_chat_response(chat_session, prompt)) 

prompt = "What are all the colors of the Google logo?"
print(get_chat_response(chat_session, prompt)) 

prompt = "What color is the sky?"
print(get_chat_response(chat_session, prompt))
  1. इसे चलाने और नतीजा देखने के लिए, Enter दबाएं.
  2. इस अनुरोध ने सार्वजनिक एपीआई के ज़रिए Vertex को ऐक्सेस किया.
  3. एसएसएच सेशन बंद करें और आगे बढ़ें.

अब py-vm2 को उसी कॉन्फ़िगरेशन के साथ कॉन्फ़िगर करें

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

c29615cdf9324209.png

  1. आइए, अब फटाफट एक टेस्ट करके यह देखते हैं कि क्या इसे Vertex Gemini API के साथ कनेक्ट किया जा सकता है. यह निर्देश us-central1-aiplatform.googleapis.com पर 4 पिंग का इस्तेमाल करेगा ताकि हमें एपीआई के सार्वजनिक पते से जवाब मिल सके.
ping -c 4 us-central1-aiplatform.googleapis.com
  1. हम बाद में वापस आकर इस वीएम की जांच करेंगे. एसएसएच सेशन बंद करें और आगे बढ़ें.

6. टास्क 4. Teraform की मदद से, Google API के लिए PSC एंडपॉइंट बनाएं

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

  1. अगर Cloud Shell पहले से नहीं खुला है, तो उसे एडिटर व्यू में खोलें. हम ये चीज़ें बनाएंगे:
  • PSC एंडपॉइंट 192.168.255.250 (resource "google_compute_global_address" "default")
  • Google API के लिए एक PSC एंडपॉइंट बनाएं (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 चलाकर, IP और PSC Google API एंडपॉइंट बनाने के लिए yes टाइप करें.
  2. एंडपॉइंट की पुष्टि करें
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

7. टास्क 5. आईपी पते की मदद से, एंडपॉइंट की कनेक्टिविटी की पुष्टि करना

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

  1. VM इंस्टेंस py-vm1 पर जाएं. वीएम में एसएसएच और एसएसएच चुनें
  2. sudo -i टाइप करके रूट ऐक्सेस पाएं
  3. हम PSC एंडपॉइंट की जांच करने के लिए, सिर्फ़ इस इंस्टेंस का इस्तेमाल करेंगे. इसके बाद, हम होस्ट फ़ाइल में नीचे दी गई एंट्री के साथ बदलाव करेंगे
echo 192.168.255.250 us-central1-aiplatform.googleapis.com >> /etc/hosts

cat /etc/hosts
  1. ping निर्देश का इस्तेमाल करके, us-central1-aiplatform.googleapis.com पर कनेक्टिविटी पाथ की जांच करें. इससे वह आईपी पता पिंग हो जाएगा जो आपने होस्ट फ़ाइलों में डाला है. यह पीएससी एंडपॉइंट है और आपके पिंग काम नहीं करेंगे.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. कंसोल पर वापस जाएं और VM इंस्टेंस py-vm1 का दूसरा इंस्टेंस खोलें. वीएम में जाने के लिए, SSH और एसएसएच चुनें
  2. sudo -i टाइप करके रूट ऐक्सेस पाएं
  3. TCP डंप में कनेक्टिविटी देखने के लिए, यह कमांड चलाएं
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
  1. अब VM इंस्टेंस py-vm1 के पहले एसएसएच इंस्टेंस पर वापस स्विच करें
  2. env को चालू करने के लिए,
cd py-gem-env
source env/bin/activate
  1. आइए, अब Python को टेस्ट करें. ipython इंटरफ़ेस चालू करने के लिए, ipython टाइप करें. इस बार ट्रैफ़िक, PSC एंडपॉइंट से फ़्लो होगा.
ipython
  1. अब नीचे दी गई जानकारी को कॉपी करके चिपकाएं. यह Gemini से पूछें, "Google के लोगो के सभी रंग कौनसे हैं" और "नायग्रा फ़ॉल्स के बारे में बताएं". कोटेशन में मौजूद enter-your-project-id-here की जगह अपना प्रोजेक्ट आईडी डालें
import vertexai
from vertexai.generative_models import GenerativeModel, ChatSession

project_id = "enter-your-project-id-here" 
location = "us-central1" 

vertexai.init(project=project_id, location=location)
model = GenerativeModel("gemini-1.5-pro")
chat_session = model.start_chat()  # Corrected line

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    text_response = []
    responses = chat.send_message(prompt, stream=True)
    for chunk in responses:
        text_response.append(chunk.text)
    return "".join(text_response)

prompt = "Hello."
print(get_chat_response(chat_session, prompt)) 

prompt = "What are all the colors of the Google logo?"
print(get_chat_response(chat_session, prompt)) 

prompt = "Describe Niagara Falls"
print(get_chat_response(chat_session, prompt))
  1. Enter दबाकर, फ़ॉर्मूला चलाएं और नतीजा देखें.
  2. VM इंस्टेंस py-vm1 के दूसरे इंस्टेंस पर वापस जाएं. आपको TCPDUMP का नतीजा दिखेगा. आपको वीएम के आईपी पतों के साथ इन और आउट दिखेंगे. साथ ही, us-central1-aiplatform.googleapis.com से कनेक्ट करने के लिए, PSC एंडपॉइंट का आईपी पता भी दिखेगा
22:21:55.032433 ens4  Out IP 10.0.11.18.57114 > 192.168.255.250.443: Flags [.], ack 8606, win 501, options [nop,nop,TS val 1797790182 ecr 2593039209], length 0
22:21:55.468285 ens4  In  IP 192.168.255.250.443 > 10.0.11.18.57114: Flags [P.], seq 8606:8991, ack 5785, win 296, options [nop,nop,TS val 2593039645 ecr 1797790182], length 385
22:21:55.468320 ens4  Out IP 10.0.11.18.57114 > 192.168.255.250.443: Flags [.], ack 8991, win 501, options [nop,nop,TS val 1797790618 ecr 2593039645], length 0
  1. वीएम इंस्टेंस py-vm1 के सभी एसएसएच सेशन बंद करें

8. छठा टास्क. Terraform की मदद से, googleapis के लिए मैन्युअल डीएनएस एंट्री बनाएं (ज़रूरी नहीं)

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

  1. Network services पर जाएं और Cloud DNS चुनें.
  2. आपको ज़ोन में, Google API के लिए Private Service Connect के लिए अपने-आप बना ज़ोन दिखेगा. इसमें ज़ोन टाइप की सेवा डायरेक्ट्री भी होगी. इसका इस्तेमाल, **SERVICE-ENDPOINT फ़ॉर्मैट में PSC एंडपॉइंट से कनेक्ट करने के लिए किया जा सकता है.p.googleapis.com उदाहरण: aiplatform-pscvertexgemini.p.googleapis.com
  3. इस मामले में, हमें मैन्युअल रूप से निजी डीएनएस एंट्री बनानी है. कॉन्फ़िगरेशन इस तरह से होगा
  • "googleapis.com" के लिए "googleapis-private" नाम का निजी डीएनएस ज़ोन बनाएं और उसे "python-net" नेटवर्क तक सीमित रखें.
  • "googleapis.com" को "192.168.255.250" आईपी पते से मैप करने के लिए, A रिकॉर्ड जोड़ें.
  • "googleapis.com" के सभी सबडोमेन (उदाहरण के लिए, www.googleapis.com) को "googleapis.com" पर रीडायरेक्ट करने के लिए, CNAME रिकॉर्ड जोड़ें.
  1. अगर क्लाउड शेल पहले से नहीं खुला है, तो एडिटर व्यू में खोलें. 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 b7f122f0d1fd2850.png दिखेगा
  3. इसके बाद, हम py-vm2 पर इन बदलावों के साथ कनेक्टिविटी की पुष्टि करते हैं

9. सातवां टास्क. आईपी पते की मदद से, एंडपॉइंट कनेक्टिविटी की पुष्टि करें (ज़रूरी नहीं)

Gemini से कनेक्ट करने के लिए, निजी एंडपॉइंट की मदद से कनेक्ट करते हैं.

  1. VM इंस्टेंस py-vm2 पर जाएं. वीएम में एसएसएच और एसएसएच चुनें
  2. sudo -i टाइप करके रूट ऐक्सेस पाएं
  3. ping कमांड का इस्तेमाल करके, us-central1-aiplatform.googleapis.com के लिए कनेक्टिविटी पाथ देखें. इससे googleapis के निजी डीएनएस, A रिकॉर्ड में मौजूद आईपी पते को पिंग किया जाएगा. इस आईपी पते से PSC एंडपॉइंट और आपके पिंग को प्रोसेस नहीं किया जा सकेगा.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. aiplatform-pscvertexgemini.p.googleapis.com के साथ PSC Google API के लिए, अपने-आप जनरेट हुई डीएनएस एंट्री का इस्तेमाल करके, ping की मदद से कनेक्टिविटी पाथ की जांच करें. यह PSC एंडपॉइंट के आईपी पते पर ले जाता है. इसके बाद, आपके पिंग पूरे नहीं हो पाएंगे.
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
  1. dig कमांड का इस्तेमाल करके, us-central1-aiplatform.googleapis.com के लिए कनेक्टिविटी पाथ देखें. यह PSC एंडपॉइंट का आईपी पता होना चाहिए.
dig us-central1-aiplatform.googleapis.com
  1. कंसोल पर वापस जाएं और VM इंस्टेंस py-vm2 का दूसरा इंस्टेंस खोलें. वीएम में जाने के लिए, SSH और एसएसएच चुनें
  2. sudo -i टाइप करके रूट ऐक्सेस पाएं
  3. टीसीपी डंप में कनेक्टिविटी देखने के लिए, नीचे दिया गया निर्देश चलाएं
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
  1. अब VM इंस्टेंस py-vm2 के पहले एसएसएच इंस्टेंस पर वापस स्विच करें
  2. , का इस्तेमाल करके env चालू करें
cd py-gem-env
source env/bin/activate
  1. अब Python की जांच करते हैं. ipython इंटरफ़ेस चालू करने के लिए, ipython टाइप करें.
ipython
  1. अब नीचे दी गई जानकारी को कॉपी करके चिपकाएं. इसमें Gemini से पूछें, "Google के लोगो के सभी रंग कौनसे होते हैं" और "Gemini Pro की दो सुविधाएँ कौनसी हैं". कोटेशन में मौजूद enter-your-project-id-here की जगह अपना प्रोजेक्ट आईडी डालें
import vertexai
from vertexai.generative_models import GenerativeModel, ChatSession

project_id = "enter-your-project-id-here" 
location = "us-central1" 

vertexai.init(project=project_id, location=location)
model = GenerativeModel("gemini-1.5-pro")
chat_session = model.start_chat()  # Corrected line

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    text_response = []
    responses = chat.send_message(prompt, stream=True)
    for chunk in responses:
        text_response.append(chunk.text)
    return "".join(text_response)

prompt = "Hello."
print(get_chat_response(chat_session, prompt)) 

prompt = "What are all the colors of the Google logo?"
print(get_chat_response(chat_session, prompt)) 

prompt = "What are two features of Gemini pro"
print(get_chat_response(chat_session, prompt))
  1. चलाने के लिए enter दबाएं और नतीजा देखें.
  2. VM इंस्टेंस py-vm2 के दूसरे इंस्टेंस पर वापस जाएं. आपको TCPDUMP का परिणाम देखना चाहिए. आपको दिखेगा कि वीएम का आईपी पता, us-central1-aiplatform.googleapis.com से कनेक्ट करने के लिए PSC एंडपॉइंट का आईपी पता इस्तेमाल कर रहा है

सभी एसएसएच सेशन को VM इंस्टेंस py-vm2 पर बंद करें

10. स्टोरेज खाली करें

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

11. बधाई हो

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

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

Vertex AI नेटवर्किंग के बारे में ज़्यादा जानकारी पाई जा सकती है

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

अगला लैब लेना

Google Cloud के साथ अपनी तलाश जारी रखें और ये Google Cloud Skills Boost Lab देखें: