প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টের মাধ্যমে পাইথন এসডিকে ব্যবহার করে জেমিনি ৩ প্রো চ্যাট অ্যাক্সেস করুন

1. সংক্ষিপ্ত বিবরণ

ভার্টেক্স এআই এপিআই ইন্টারনেটের মাধ্যমে অ্যাক্সেস করা যেতে পারে, তবে আপনার এন্টারপ্রাইজে আপনি ইন্টারনেটের মাধ্যমে না গিয়ে ব্যক্তিগতভাবে ভার্টেক্স এআই এপিআই অ্যাক্সেস করতে চাইতে পারেন। এই ল্যাবে আপনি প্রথমে এটি করবেন।

  • পাইথন এসডিকে ব্যবহার করে ভার্টেক্সের মাধ্যমে জেমিনি 3 প্রো এপিআই অ্যাক্সেস করুন
  • এটি একটি VM ইনস্ট্যান্সে চলবে।
  • পাবলিক ইন্টারনেটের সাথে ক্লাউড NAT এর মাধ্যমে সংযোগ স্থাপন করা হবে।

তারপর আপনি Google API-তে একটি Private Service Connect endpoint তৈরি করবেন এবং Gemini chat API-তে সংযোগ করার জন্য private endpoint ব্যবহার করার জন্য ট্রাফিক প্রবাহ পরিবর্তন করবেন। কনফিগারেশনগুলি Terraform, gcloud এবং console এর সংমিশ্রণে তৈরি হবে।

এই ল্যাবে, আপনি নিম্নলিখিত প্যাটার্নটি তৈরি করতে যাচ্ছেন।

চিত্র ১।

304c579d349aec90.png সম্পর্কে

2. উদ্দেশ্য

এই ল্যাবে আপনি নিম্নলিখিত কাজগুলি কীভাবে সম্পাদন করবেন তা শিখবেন:

  • পাইথন এসডিকে ব্যবহার করার জন্য ভিএম ইনস্ট্যান্স সেট আপ করুন
  • পাইথন স্ক্রিপ্টের মাধ্যমে জেমিনি চ্যাটে সংযোগ করুন
  • Googleapis- এর সাথে সংযোগ স্থাপনের জন্য PSC এন্ডপয়েন্ট কনফিগার করুন
  • Googleais-এর সাথে সংযোগের পথ যাচাই করুন
  • ম্যানুয়াল DNS এন্ট্রি কনফিগার করুন

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. গুগল ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন অথবা বিদ্যমান একটি পুনরায় ব্যবহার করুন। যদি আপনার ইতিমধ্যেই একটি জিমেইল বা গুগল ওয়ার্কস্পেস অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

295004821bab6a87.png সম্পর্কে

37d264871000675d.png সম্পর্কে

96d86d3d5655cdbe.png সম্পর্কে

  • এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রজেক্টের নামটি প্রদর্শন করা হবে। এটি একটি অক্ষর স্ট্রিং যা Google API গুলি ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • সমস্ত Google ক্লাউড প্রোজেক্টে প্রোজেক্ট আইডি অনন্য এবং অপরিবর্তনীয় (সেট করার পরে এটি পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটি কী তা নিয়ে চিন্তা করেন না। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রোজেক্ট আইডি (সাধারণত PROJECT_ID হিসাবে চিহ্নিত) উল্লেখ করতে হবে। যদি আপনি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি র্যান্ডম তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করে দেখতে পারেন, এবং এটি উপলব্ধ কিনা তা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকবে।
  • আপনার তথ্যের জন্য, তৃতীয় একটি মান আছে, একটি Project Number , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপর, ক্লাউড রিসোর্স/API ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবটি চালানোর জন্য খুব বেশি খরচ হবে না, এমনকি কিছু খরচও হবে না। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে রিসোর্স বন্ধ করতে, আপনি আপনার তৈরি রিসোর্সগুলি মুছে ফেলতে পারেন অথবা প্রকল্পটি মুছে ফেলতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা $300 USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।

গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

ক্লাউড শেল সক্রিয় করুন

পরিবেশের সাথে সংযোগ স্থাপন এবং সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি সম্পন্ন হলে, আপনি এরকম কিছু দেখতে পাবেন:

গুগল ক্লাউড শেল টার্মিনালের স্ক্রিনশট যা দেখায় যে পরিবেশটি সংযুক্ত হয়েছে

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সকল ডেভেলপমেন্ট টুল রয়েছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি অফার করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারেই করা যেতে পারে। আপনাকে কিছু ইনস্টল করার প্রয়োজন নেই।

৩. কাজ ১. টেরাফর্ম ব্যবহার করে পরিবেশ সেটআপ করা

আমরা ফায়ারওয়াল নিয়ম এবং সাবনেট সহ একটি কাস্টম ভিপিসি তৈরি করব। ক্লাউড কনসোলটি খুলুন এবং আপনি যে প্রকল্পটি ব্যবহার করবেন তা নির্বাচন করুন।

  1. ডানদিকে আপনার কনসোলের উপরে অবস্থিত ক্লাউড শেল খুলুন, নিশ্চিত করুন যে আপনি ক্লাউড শেলে সঠিক প্রজেক্ট আইডি দেখতে পাচ্ছেন, অ্যাক্সেসের অনুমতি দেওয়ার জন্য যেকোনো প্রম্পট নিশ্চিত করুন। b51b80043d3bac90.png সম্পর্কে
  2. টেরাফর্ম-বিল্ড নামে একটি ফোল্ডার তৈরি করুন এবং ফোল্ডারে যান।
mkdir terraform-build  && cd terraform-build
  1. একটি main.tf এবং variable.tf ফাইল তৈরি করুন।
touch main.tf variable.tf 
  1. ক্লাউড শেল এডিটর ভিউতে যান। এডিটর নির্বাচন করুন, নিশ্চিত করুন যে আপনি প্রয়োজনীয় প্রম্পটগুলিকে অনুমতি দিয়েছেন যাতে ইন্টারফেসটি লোড হতে পারে।
  2. লোড হয়ে গেলে, File > Open Folder-এ নেভিগেট করুন এবং /home/your-user-name/terraform-build- এ যান এবং এডিটরে ফোল্ডারটি খুলতে OK নির্বাচন করুন। 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 ফাইলটি খুলুন। আমরা নিচে ব্যাখ্যা করা বিভিন্ন ক্রিয়া সম্পাদনের জন্য কিছু টেরাফর্ম কোড যুক্ত করতে যাচ্ছি।

API গুলি সক্ষম করুন

resource "google_project_service" "default"

পাইথন-নেট নামে একটি ভিপিসি তৈরি করুন

resource "google_compute_network" "default"

একটি সাবনেট যোগ করুন

resource "google_compute_subnetwork" "default"

দুটি ফায়ারওয়াল নিয়ম যোগ করুন

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

  1. নিম্নলিখিতটি কপি করে মূল .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. ক্লাউড শেল টার্মিনালে ফিরে যান। নিশ্চিত করুন যে আপনি terraform-build ডিরেক্টরিতে আছেন cd terraform-build এবং নিম্নলিখিত কমান্ডগুলি চালান।

terraform init

কার্যকরী ডিরেক্টরিটি শুরু করে। এই ধাপটি প্রদত্ত কনফিগারেশনের জন্য প্রয়োজনীয় সরবরাহকারীদের ডাউনলোড করে।

terraform plan

আপনার পরিকাঠামো স্থাপনের জন্য টেরাফর্ম কী কী পদক্ষেপ নেবে তা দেখানোর জন্য একটি কার্যকর পরিকল্পনা তৈরি করে।

  1. এখন রিসোর্স তৈরি করতে terraform apply কমান্ডটি চালান এবং yes টাইপ করুন।

৪. কাজ ২. টেরাফর্ম দিয়ে NAT গেটওয়ে এবং ভিএম তৈরি করুন

আমাদের ইন্টারনেটে বহির্গামী বহিরাগত অ্যাক্সেস প্রদান করতে হবে তাই আসুন একটি ক্লাউড NAT গেটওয়ে তৈরি করি এবং এটি সংযুক্ত করি।

  1. ক্লাউড শেল খুলুন, টেরাফর্ম-বিল্ড ফোল্ডারে যান এবং নিম্নলিখিত ফাইলগুলি তৈরি করুন (মোট তিনটি ফাইল)। আমরা পরে এগুলি সম্পাদনা করব।
touch nat-vm.tf psc.tf dns.tf
  1. ক্লাউড শেল এডিটর ভিউতে স্যুইচ করুন এবং nat-vm.tf ফাইলটি নির্বাচন করুন এবং নিম্নলিখিত টেরাফর্ম কোডটি যুক্ত করুন। এটি একটি NAT গেটওয়ে এবং দুটি VM তৈরি করবে।

টেরাফর্ম 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. ক্লাউড শেল টার্মিনালে যান, নিশ্চিত করুন যে আপনি টেরাফর্ম-বিল্ড ফোল্ডারে আছেন এবং terraform plan চালান এটি আপনাকে দেখাবে যে 4 টি আইটেম যুক্ত হবে, তারপর terraform apply চালান এবং NAT গেটওয়ে এবং ভিএম তৈরি করতে yes টাইপ করুন।

৫. কাজ ৩. ভিএম কনফিগার করুন এবং পরীক্ষা করুন

  1. VM ইনস্ট্যান্সে নেভিগেট করুন। py-vm1 দিয়ে শুরু হওয়া vm নির্বাচন করুন। SSH নির্বাচন করুন।
  2. একবার আপনি py-vm1 এ SSH করলে, sudo -i লিখে রুট সক্রিয় করুন।
  3. আপনার ভেনভ পরিবেশ সক্রিয় করুন:
cd py-gem-env
source env/bin/activate
  1. এবার এটি প্রমাণীকরণ করা যাক যাতে পরে কিছু পরীক্ষা করা যায়। VM-এ নিম্নলিখিত কমান্ডটি চালান, প্রম্পট করলে y টিপুন।
gcloud auth application-default login
  1. এরপর https:// দিয়ে শুরুতে প্রদর্শিত URL টি কপি করুন, আপনার ল্যাব ব্রাউজার উইন্ডোতে একটি নতুন ট্যাব খুলুন এবং URL টি পেস্ট করুন। প্রম্পটগুলি গ্রহণ করুন।
  2. যখন আপনি নিম্নলিখিত সিলেক্ট কপিটি দেখতে পাবেন, তখন vm py-vm1 সেশনে ফিরে যান এবং Enter authorization code: এর জন্য আপনার কপি করা কোডটি পেস্ট করুন এবং প্রমাণীকরণের জন্য enter টিপুন।

b703db7aa2aa286a.png সম্পর্কে

  1. এখন আসুন আমরা Vertex API-এর সাথে সংযোগ করতে পারি কিনা তা দেখার জন্য একটি দ্রুত পরীক্ষা করি, এটি * -aiplatform.googleapis.com ব্যবহার করে তাই আমরা ট্র্যাফিক রুটগুলি কীভাবে তা দেখার জন্য সেই ঠিকানায় একটি dig করব।
dig *-aiplatform.googleapis.com
  1. তুমি একই রকম কিছু দেখতে পাবে (ঠিকানা আলাদা হবে)। মনে রাখবেন পাথটি পাবলিক আইপি অ্যাড্রেস দিয়ে তৈরি কারণ API একটি পাবলিক এপিআই। কপি করবেন না।
; <<>> 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. এবার পাইথন ব্যবহার করা যাক। আইপাইথন ইন্টারফেস সক্রিয় করতে ipython টাইপ করুন।
ipython

845ef4291429888a.png সম্পর্কে

  1. এবার নিচেরটি কপি করে পেস্ট করুন। এটি জেমিনিকে জিজ্ঞাসা করে " গুগলের লোগোর সব রঙ কী " এবং " আকাশের রঙ কী "।
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. রান করতে এবং ফলাফল দেখতে দুবার এন্টার টিপুন।
  2. এই অনুরোধটি পাবলিক API এর মাধ্যমে Vertex অ্যাক্সেস করেছে।
  3. SSH সেশন বন্ধ করুন, চলুন চালিয়ে যাই।

৬. টাস্ক ৪. টেরাফর্ম দিয়ে গুগলাপিসের জন্য পিএসসি এন্ডপয়েন্ট তৈরি করুন

আমাদের Vertex API এন্ডপয়েন্টে ব্যক্তিগত সংযোগ সক্ষম করার জন্য আমরা Google API গুলির জন্য একটি Private Service Connect এন্ডপয়েন্ট তৈরি করব। এটি আমাদের প্রয়োজনীয় Google API গুলিতে ট্র্যাফিক রুট করার জন্য নির্ধারিত একটি ব্যক্তিগত IP ঠিকানা ব্যবহার করার অনুমতি দেবে, এই ক্ষেত্রে Vertex।

  1. যদি ইতিমধ্যে খোলা না থাকে, তাহলে এডিটর ভিউতে ক্লাউড শেল খুলুন। আমরা নিম্নলিখিতগুলি তৈরি করতে যাচ্ছি:
  • PSC এন্ডপয়েন্ট 192.168.255.250 এর জন্য একটি IP তৈরি করুন ( resource "google_compute_global_address" "default")
  • গুগল এপিআই-তে একটি পিএসসি এন্ডপয়েন্ট তৈরি করুন ( resource "google_compute_global_forwarding_rule" "default")

terraform-build ফোল্ডারে psc.tf ফাইলটি খুলুন। ফাইলটিতে নিম্নলিখিত কোডটি যোগ করুন।

টেরাফর্ম 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. ক্লাউড শেল টার্মিনালে যান, নিশ্চিত করুন যে আপনি terraform-build ফোল্ডারে আছেন। তারপর terraform init চালান। তারপর terraform plan চালান। এটি আপনাকে দেখাবে যে 2টি আইটেম যোগ করা হবে,
    তারপর terraform apply চালান এবং yes টাইপ করুন IP এবং PSC Google API গুলির এন্ডপয়েন্ট তৈরি করতে।
  2. এন্ডপয়েন্ট বিদ্যমান কিনা তা যাচাই করুন
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

৭. টাস্ক ৫. টেরাফর্ম ব্যবহার করে গুগলাপিসে ম্যানুয়াল ডিএনএস এন্ট্রি তৈরি করুন

আপনি ব্যক্তিগত DNS ব্যবহার করে PSC এন্ডপয়েন্টে নির্দেশ করার জন্য একটি ম্যানুয়াল DNS এন্ট্রি তৈরি করতে পারেন। এটি আপনার নির্ধারিত সমস্ত নেটওয়ার্ককে প্রভাবিত করবে।

  1. নেটওয়ার্ক পরিষেবাগুলিতে নেভিগেট করুন এবং ক্লাউড ডিএনএস নির্বাচন করুন।
  2. জোনে আপনি Private Service Connect for Google API-এর জন্য একটি স্বয়ংক্রিয়ভাবে তৈরি জোন দেখতে পাবেন, যেখানে জোন টাইপ সার্ভিস ডিরেক্টরি থাকবে। ** SERVICE-ENDPOINT ফর্ম্যাট ব্যবহার করে PSC এন্ডপয়েন্টের সাথে সংযোগ স্থাপনের জন্য এটি ব্যবহার করা যেতে পারে। p.googleapis.com উদাহরণ: aiplatform-pscvertexgemini.p.googleapis.com
  3. এই ক্ষেত্রে আমরা ম্যানুয়ালি একটি ব্যক্তিগত DNS এন্ট্রি তৈরি করতে চাই। কনফিগারেশনটি নিম্নরূপ হবে
  • "googleapis.com" এর জন্য "googleapis-private" নামে একটি ব্যক্তিগত DNS জোন তৈরি করুন এবং এটি "python-net" নেটওয়ার্কের মধ্যে সীমাবদ্ধ করুন।
  • "googleapis.com" কে "192.168.255.250" আইপি ঠিকানায় ম্যাপ করার জন্য একটি A রেকর্ড যোগ করুন
  • "googleapis.com" (যেমন, www.googleapis.com) এর সকল সাবডোমেন "googleapis.com" এ পুনঃনির্দেশিত করতে একটি CNAME রেকর্ড যোগ করুন
  1. যদি ইতিমধ্যে খোলা না থাকে, তাহলে এডিটর ভিউতে ক্লাউড শেল খুলুন। terraform-build ফোল্ডারে dns.tf ফাইলটি খুলুন। ফাইলটিতে নিম্নলিখিত কোডটি যোগ করুন।

টেরাফর্ম 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. ক্লাউড শেল টার্মিনালে স্যুইচ করুন, নিশ্চিত করুন যে আপনি terraform-build ফোল্ডারে আছেন। তারপর terraform plan চালান এটি আপনাকে দেখাবে কোন আইটেমগুলি যোগ করা হবে,
    তারপর terraform apply চালান এবং yes টাইপ করে প্রাইভেট DNS এন্ট্রি তৈরি করুন।
  2. তুমি A রেকর্ড এবং CNAME সহ একটি সেট আপ দেখতে পাবে, যেমন দেখুন 6d2fc061460cd983.png সম্পর্কে
  3. এরপর আমরা py-vm1- এ এই পরিবর্তনগুলির সাথে সংযোগ যাচাই করব।

৮. কাজ ৬. আইপি ঠিকানার মাধ্যমে এন্ডপয়েন্ট সংযোগ যাচাই করুন

মিথুন রাশির সাথে সংযোগ স্থাপনের জন্য প্রাইভেট এন্ডপয়েন্ট ব্যবহার করে সংযোগ স্থাপন করা যাক।

  1. VM Instance py-vm1 এ যান। VM তে SSH এবং SSH নির্বাচন করুন।
  2. sudo -i টাইপ করে রুট অ্যাক্সেস পান
  3. ping কমান্ড ব্যবহার করে aiplatform.googleapis.com এর সংযোগ পথ পরীক্ষা করুন। এটি ব্যক্তিগত DNS-এ IP ঠিকানাটি পিং করবে, যা googleapis-এর জন্য একটি রেকর্ড। এই IP একটি PSC এন্ডপয়েন্ট এবং আপনার পিংগুলি ব্যর্থ হবে।
ping -c 2 aiplatform.googleapis.com
  1. aiplatform-pscvertexgemini.p.googleapis.com দিয়ে PSC Google API-এর জন্য স্বয়ংক্রিয়ভাবে তৈরি DNS এন্ট্রি ব্যবহার করে একটি ping দিয়ে সংযোগ পথ পরীক্ষা করুন। এটি PSC এন্ডপয়েন্টের IP ঠিকানা নির্দেশ করে এবং আপনার পিংগুলি ব্যর্থ হবে।
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
  1. dig কমান্ড ব্যবহার করে aiplatform.googleapis.com এর সংযোগ পথ পরীক্ষা করুন। এটি PSC এন্ডপয়েন্টের IP ঠিকানা হওয়া উচিত।
dig aiplatform.googleapis.com
  1. কনসোলে ফিরে যান এবং VM Instance py-vm1 এর আরেকটি ইনস্ট্যান্স খুলুন। VM-এ SSH এবং SSH নির্বাচন করুন।
  2. sudo -i টাইপ করে রুট অ্যাক্সেস পান
  3. একটি TCP ডাম্পে সংযোগ দেখতে অনুসরণ কমান্ডটি চালান।
sudo tcpdump -i any port 53 -n or host aiplatform.googleapis.com
  1. এখন VM Instance py-vm1 এর প্রথম SSH ইনস্ট্যান্সে ফিরে যান।
  2. ব্যবহার করে env সক্রিয় করুন
cd py-gem-env
source env/bin/activate
  1. এবার পাইথন পরীক্ষা করা যাক। আইপাইথন ইন্টারফেস সক্রিয় করতে ipython টাইপ করুন।
ipython
  1. এবার নিচেরটি কপি করে পেস্ট করুন। এটি জেমিনিকে জিজ্ঞাসা করে " একটি ছোট বাক্যে AI এর প্রেক্ষাপটে টোকেনাইজার কী তা সংক্ষেপে বলুন? " এবং " তিমিরা কি অসাধারণ নাকি? "।
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. রান করতে এবং ফলাফল দেখতে দুবার এন্টার টিপুন।
  2. VM Instance py-vm1 এর দ্বিতীয় ইনস্ট্যান্সে ফিরে যান। আপনি TCPDUMP এর ফলাফল দেখতে পাবেন। আপনি দেখতে পাবেন যে VM এর IP ঠিকানাটি aiplatform.googleapis.com এর সাথে সংযোগ করার জন্য PSC এন্ডপয়েন্ট IP ঠিকানা ব্যবহার করছে।

VM Instance py-vm1- এ সমস্ত SSH সেশন বন্ধ করুন

9. পরিষ্কার করা

  1. ক্লাউড শেলে যান এবং নিশ্চিত করুন যে আপনি terraform-build ডিরেক্টরিতে আছেন cd terraform-build
  2. করা সমস্ত পরিবর্তন দেখতে terraform plan destroy চালান।
terraform plan -destroy
  1. তারপর terraform destroy কমান্ডটি চালান এবং তারপর yes টাইপ করুন এবং Terraform দিয়ে আপনার প্রকল্পে তৈরি করা সমস্ত সংস্থান মুছে ফেলা হবে।
terraform destroy 

১০. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে Vertex-এর সাথে সংযুক্ত হয়েছেন এবং পাবলিক API ঠিকানার মাধ্যমে এবং Google API-এর জন্য Private Service Connect Endpoint ব্যবহার করে Gemini 3 pro ব্যবহার করেছেন। এই কার্যকারিতা আপনার অন-প্রেম/অন্যান্য ক্লাউড পরিবেশে (ইন্টারকানেক্ট, ক্রস-ক্লাউড ইন্টারকানেক্ট এবং VPC) ব্যক্তিগত API সংযোগ প্রসারিত করতে পারে।

পরবর্তী ধাপ / আরও জানুন

আপনি ভার্টেক্স এআই নেটওয়ার্কিং সম্পর্কে আরও পড়তে পারেন

কোডল্যাব: প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টের মাধ্যমে পাইথন এসডিকে দিয়ে ভার্টেক্স এআই-তে অ্যানথ্রপিক ক্লড অ্যাক্সেস করুন

তোমার পরবর্তী ল্যাবে যাও।

গুগল ক্লাউডের সাথে আপনার অনুসন্ধান চালিয়ে যান, এবং এই অন্যান্য গুগল ক্লাউড স্কিলস বুস্ট ল্যাবগুলি দেখুন: