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

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

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

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

এরপর আপনি গুগল এপিআই-এর জন্য একটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করবেন এবং জেমিনি চ্যাট এপিআই-এর সাথে সংযোগ করার জন্য প্রাইভেট এন্ডপয়েন্টটি ব্যবহার করতে ট্র্যাফিক ফ্লো পরিবর্তন করবেন। এই কনফিগারেশনগুলো টেরাফর্ম, জিক্লাউড এবং কনসোলের সমন্বয়ে করা হবে।

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

চিত্র ১।

304c579d349aec90.png

২. উদ্দেশ্য

এই ল্যাবে তোমরা নিম্নলিখিত কাজটি কীভাবে সম্পাদন করতে হয় তা শিখবে:

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

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

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

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

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

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

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

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

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

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

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

৩. কাজ ১. টেরাফর্ম দিয়ে পরিবেশ সেটআপ করুন

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

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

এপিআই সক্রিয় করুন

resource "google_project_service" "default"

python-net নামে একটি VPC তৈরি করুন

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

একটি এক্সিকিউশন প্ল্যান তৈরি করে, যা দেখায় আপনার ইনফ্রাস্ট্রাকচার ডেপ্লয় করতে Terraform কী কী পদক্ষেপ নেবে।

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

৪. কাজ ২. Terraform ব্যবহার করে NAT গেটওয়ে এবং VM তৈরি করুন

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

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

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

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

b703db7aa2aa286a.png

  1. এখন চলুন একটি দ্রুত পরীক্ষা করে দেখি আমরা ভার্টেক্স এপিআই-এর সাথে সংযোগ করতে পারি কিনা। এটি * -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. এবার পাইথন ব্যবহার করা যাক। আইপাইথন ইন্টারফেসটি চালু করতে 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. এই অনুরোধটি পাবলিক এপিআই-এর মাধ্যমে ভার্টেক্স অ্যাক্সেস করেছে।
  3. SSH সেশনটি বন্ধ করে চলুন এগিয়ে যাই।

৬. কাজ ৪. Terraform ব্যবহার করে googleapis-এর জন্য PSC এন্ডপয়েন্ট তৈরি করুন।

আমাদের Vertex API এন্ডপয়েন্টে ব্যক্তিগত সংযোগ সক্ষম করতে, আমরা Google API-এর জন্য একটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করব। এর ফলে আমরা আমাদের নির্ধারিত একটি ব্যক্তিগত আইপি অ্যাড্রেস ব্যবহার করে প্রয়োজনীয় Google API-গুলোতে (এই ক্ষেত্রে Vertex) ট্র্যাফিক রাউট করতে পারব।

  1. ক্লাউড শেল আগে থেকে খোলা না থাকলে এডিটর ভিউতে খুলুন। আমরা নিম্নলিখিত বিষয়গুলো তৈরি করতে যাচ্ছি:
  • PSC এন্ডপয়েন্ট 192.168.255.250- এর জন্য একটি IP তৈরি করুন ( resource "google_compute_global_address" "default")
  • গুগল এপিআই-এর জন্য একটি PSC এন্ডপয়েন্ট তৈরি করুন ( 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 চালালে আপনি দেখতে পাবেন যে ২টি আইটেম যুক্ত হয়েছে।
    এরপর terraform apply চালান এবং IP ও PSC গুগল এপিআই এন্ডপয়েন্ট তৈরি করতে yes টাইপ করুন।
  2. এন্ডপয়েন্টের অস্তিত্ব যাচাই করুন
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

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

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

  1. নেটওয়ার্ক পরিষেবাগুলিতে যান এবং ক্লাউড ডিএনএস নির্বাচন করুন।
  2. জোনগুলিতে আপনি প্রাইভেট সার্ভিস কানেক্ট ফর গুগল এপিআই (Private Service Connect for Google APIs)-এর জন্য একটি স্বয়ংক্রিয়ভাবে তৈরি জোন দেখতে পাবেন, যার জোন টাইপ হবে সার্ভিস ডিরেক্টরি (service directory)। এটি ** 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 ফাইলটি খুলুন। ফাইলটিতে নিম্নলিখিত কোডটি যোগ করুন।

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

৮. কাজ ৬. আইপি অ্যাড্রেসের মাধ্যমে এন্ডপয়েন্ট কানেক্টিভিটি যাচাই করুন।

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

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

ভিএম ইনস্ট্যান্স py-vm1- এর সমস্ত SSH সেশন বন্ধ করুন।

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

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

১০. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে ভার্টেক্স-এর সাথে সংযুক্ত হয়েছেন এবং পাবলিক এপিআই অ্যাড্রেসের মাধ্যমে ও ব্যক্তিগতভাবে গুগল এপিআই-এর জন্য প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট ব্যবহার করে জেমিনি ৩ প্রো ব্যবহার করেছেন। এই কার্যকারিতাটি আপনার অন-প্রেম/অন্যান্য ক্লাউড পরিবেশে ব্যক্তিগত এপিআই সংযোগ প্রসারিত করতে পারে, যা (ইন্টারকানেক্ট, ক্রস-ক্লাউড ইন্টারকানেক্ট এবং ভিপিসি)-এর মাধ্যমে সংযুক্ত।

পরবর্তী পদক্ষেপ / আরও জানুন

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

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

আপনার পরবর্তী ল্যাব নিন

Google Cloud-এর সাথে আপনার অনুসন্ধান চালিয়ে যান, এবং Google Cloud Skills Boost-এর এই অন্যান্য ল্যাবগুলোও দেখে নিন: