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

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

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

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

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

पहला चित्र.

8b283cc5684283c2.png

2. मकसद

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

  • Python SDK का इस्तेमाल करने के लिए, VM इंस्टेंस सेट अप करना
  • Python स्क्रिप्ट की मदद से Gemini Chat से कनेक्ट करना
  • 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 के संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब को चलाने के लिए, आपसे कोई शुल्क नहीं लिया जाएगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, बनाए गए संसाधनों को बंद किया जा सकता है या प्रोजेक्ट को मिटाया जा सकता है. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले कार्यक्रम में शामिल हो सकते हैं.

Cloud Shell शुरू करना

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

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

हम फ़ायरवॉल नियमों और सबनेट के साथ कस्टम वीपीसी बनाएंगे. 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 पर जाएं और फ़ोल्डर को Editor में खोलने के लिए, ठीक है को चुनें. 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 फ़ाइल खोलें. हम यहां बताए गए तरीके से अलग-अलग कार्रवाइयां करने के लिए, कुछ terraform कोड जोड़ने जा रहे हैं.

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

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

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

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

4. दूसरा टास्क. 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

 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 टर्मिनल पर स्विच करें. पक्का करें कि आप terraform-build फ़ोल्डर में हों और terraform plan चलाएं. इससे आपको पता चलेगा कि चार आइटम जोड़े जाएंगे. इसके बाद, NAT गेटवे और दो वर्चुअल मशीन बनाने के लिए, terraform apply चलाएं और yes टाइप करें.

5. तीसरा टास्क. वीएम कॉन्फ़िगर करना और टेस्ट करना

  1. वीएम इंस्टेंस पर जाएं. py-vm1 से शुरू होने वाला वर्चुअल मशीन चुनें. SSH चुनें.
  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. SSH सेशन बंद करें और आगे बढ़ें.

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

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

c29615cdf9324209.png

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

6. चौथा टास्क. Terraform की मदद से, googleapis के लिए 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 के लिए पीएससी एंडपॉइंट बनाना (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 चलाएं और आईपी और PSC Google API एंडपॉइंट बनाने के लिए yes टाइप करें.
  2. एंडपॉइंट के मौजूद होने की पुष्टि करना
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

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

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 के लिए मैन्युअल डीएनएस एंट्री बनाएं (ज़रूरी नहीं)

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

  1. नेटवर्क सेवाओं पर जाएं और 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. अगर 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 के साथ सेट अप दिखेगा. यह ऐसा दिखेगा b7f122f0d1fd2850.png
  3. इसके बाद, हम py-vm2 पर इन बदलावों के साथ कनेक्टिविटी की पुष्टि करते हैं

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

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

  1. वीएम इंस्टेंस py-vm2 पर जाएं. एसएसएच चुनें और वीएम में एसएसएच का इस्तेमाल करें
  2. sudo -i टाइप करके रूट ऐक्सेस पाएं
  3. ping कमांड का इस्तेमाल करके, us-central1-aiplatform.googleapis.com के लिए कनेक्टिविटी पाथ देखें. इससे googleapis के निजी डीएनएस, A रिकॉर्ड में मौजूद आईपी पते को पिंग किया जाएगा. यह आईपी एक पीएससी एंडपॉइंट है और आपके पिंग काम नहीं करेंगे.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. aiplatform-pscvertexgemini.p.googleapis.com के साथ पीएससी Google API के लिए अपने-आप जनरेट हुई डीएनएस एंट्री का इस्तेमाल करके, ping के साथ कनेक्टिविटी पाथ की जांच करें. यह पीएससी एंडपॉइंट के आईपी पते पर ले जाता है और आपके पिंग काम नहीं करेंगे.
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
  1. dig कमांड का इस्तेमाल करके, us-central1-aiplatform.googleapis.com के लिए कनेक्टिविटी पाथ देखें. यह पीएससी एंडपॉइंट का आईपी पता होना चाहिए.
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 एंडपॉइंट आईपी पते का इस्तेमाल कर रहा होगा

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

10. क्लीन अप

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

11. बधाई हो

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

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

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

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

अगला लैब लेना

Google Cloud के साथ अपनी खोज जारी रखें और Google Cloud Skills Boost के इन अन्य लैब को देखें: