Private Service Connect uç noktası üzerinden Python SDK'sını kullanarak Gemini 3 Pro sohbetine erişme

1. Genel Bakış

Vertex AI API'ye internet üzerinden erişilebilir. Ancak kuruluşunuzda Vertex AI API'ye internet üzerinden gitmeden özel olarak erişmek isteyebilirsiniz. Bu laboratuvarda ilk olarak:

  • Python SDK'yı kullanarak Vertex üzerinden Gemini 3 Pro API'ye erişme
  • Bu, bir sanal makine örneğinde çalışır.
  • Bağlantı, Cloud NAT üzerinden herkese açık internete yapılır.

Ardından, Google API'leri için bir Private Service Connect uç noktası oluşturacak ve Gemini Chat API'ye bağlanmak üzere özel uç noktayı kullanmak için trafik akışını değiştireceksiniz. Yapılandırmalar Terraform, gcloud ve konsolun bir kombinasyonu olacaktır.

Bu laboratuvarda aşağıdaki kalıbı oluşturacaksınız.

Şekil 1.

304c579d349aec90.png

2. Hedef

Bu laboratuvarda aşağıdaki görevi nasıl gerçekleştireceğinizi öğreneceksiniz:

  • Python SDK'sını kullanmak için sanal makine örneğini ayarlama
  • Python komut dosyası aracılığıyla Gemini Chat'e bağlanma
  • Googleapis'e bağlanmak için PSC uç noktasını yapılandırma
  • Googleais'e bağlantı yolunu doğrulama
  • Manuel DNS girişlerini yapılandırma

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa oluşturmanız gerekir.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Alternatif olarak, kendi adınızı deneyip kullanılabilir olup olmadığını görebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir ancak bu codelab'de Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Google Cloud Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

Cloud Shell'i etkinleştirme

Ortamın sağlanması ve bağlantının kurulması yalnızca birkaç saniye sürer. İşlem tamamlandığında aşağıdakine benzer bir ekranla karşılaşırsınız:

Ortamın bağlandığını gösteren Google Cloud Shell terminalinin ekran görüntüsü

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde iyileştirilir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.

3. 1. görev: Terraform ile ortamı ayarlama

Güvenlik duvarı kuralları ve alt ağ içeren özel bir VPC oluşturacağız. Cloud Console'u açın ve kullanacağınız projeyi seçin.

  1. Konsolunuzun sağ üst kısmında bulunan Cloud Shell'i açın, Cloud Shell'de doğru proje kimliğini gördüğünüzden emin olun ve erişime izin vermek için tüm istemleri onaylayın. b51b80043d3bac90.png
  2. terraform-build adlı bir klasör oluşturun ve bu klasöre gidin.
mkdir terraform-build  && cd terraform-build
  1. main.tf ve variable.tf dosyası oluşturun.
touch main.tf variable.tf 
  1. Cloud Shell Düzenleyici görünümüne geçin. Düzenleyici'yi seçin ve arayüzün yüklenmesi için gerekli tüm istemlere izin verdiğinizden emin olun.
  2. Yüklendikten sonra File > Open Folder'a (Dosya > Klasörü Aç) gidin ve /home/your-user-name/terraform-build'a gidip Ok'u (Tamam) seçerek klasörü düzenleyicide açın. 39b3eb9a3e077bfd.png
  3. variable.tf dosyasını seçin ve aşağıdakileri ekleyin. your-project-id-here metnini tırnak içindeki gerçek proje kimliğinizle değiştirin.
variable "project_id" {
  type = string
  default = "your-project-id-here"
}

variable "network_id" {
  type = string
  default = "python-net"
}
  1. Ardından main.tf dosyasını açın. Aşağıda açıklandığı gibi çeşitli işlemleri gerçekleştirmek için bazı Terraform kodları ekleyeceğiz.

API'leri etkinleştirme

resource "google_project_service" "default"

python-net adlı VPC'yi oluşturun

resource "google_compute_network" "default"

Alt ağ ekleme

resource "google_compute_subnetwork" "default"

İki güvenlik duvarı kuralı ekleme

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

  1. Aşağıdakileri kopyalayıp main .tf dosyasına yapıştırın.
resource "google_project_service" "default" {
  project = var.project_id 
  for_each = toset([
    "dns.googleapis.com",
    "aiplatform.googleapis.com",
    "servicedirectory.googleapis.com"
  ])

  service            = each.value
  disable_on_destroy = false
}

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

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

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

  allow {
    protocol = "icmp"
  }

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

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

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

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-ssh"]
}
  1. Cloud Shell terminaline geri dönün, terraform-build dizininde olduğunuzdan emin olun cd terraform-build ve aşağıdaki komutları çalıştırın.

terraform init

Çalışma dizinini başlatır. Bu adımda, söz konusu yapılandırma için gerekli sağlayıcılar indirilir.

terraform plan

Terraform'un altyapınızı dağıtmak için hangi işlemleri yapacağını gösteren bir yürütme planı oluşturur.

  1. Şimdi kaynakları oluşturmak için terraform apply komutunu çalıştırın ve çalıştırmak için yes yazın.

4. 2. görev: Terraform ile NAT ağ geçidi ve sanal makineler oluşturma

İnternete giden harici erişim izni vermemiz gerekiyor. Bu nedenle, bir Cloud NAT ağ geçidi oluşturup ekleyelim.

  1. Cloud Shell'i açın, terraform-build klasörüne gidin ve aşağıdaki dosyaları oluşturun (toplam üç dosya). Bunları daha sonra düzenleyeceğiz.
touch nat-vm.tf psc.tf dns.tf
  1. Cloud Shell düzenleyici görünümüne geçin, nat-vm.tf dosyasını seçin ve aşağıdaki Terraform kodunu ekleyin. Bu işlem, bir NAT ağ geçidi ve iki sanal makine oluşturur.

Terraform nat-vm.tf

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

 bgp {
  asn = 64514
  }
}

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

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

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

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

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

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

  metadata_startup_script = <<-EOF
    #! /bin/bash
    sudo apt-get update
    sudo apt-get install python3 python3-dev python3-venv git -y
    sudo apt-get install tcpdump dnsutils -y    
    
      mkdir -p ~/py-gem-env
      cd ~/py-gem-env
      python3 -m venv env
      source env/bin/activate
      pip install --upgrade pip
      pip install ipython google-genai
    '
  EOF
}
  1. Cloud Shell terminaline geçin, terraform-build klasöründe olduğunuzdan emin olun ve terraform plan komutunu çalıştırın. Bu komut, 4 öğenin ekleneceğini gösterir. Ardından terraform apply komutunu çalıştırın ve NAT ağ geçidini ve sanal makineyi oluşturmak için yes yazın.

5. 3. görev: Sanal makineleri yapılandırma ve test etme

  1. Sanal makine örneklerine gidin. py-vm1 ile başlayan sanal makineyi seçin. SSH'yi seçin.
  2. py-vm1'e SSH ile bağlandıktan sonra sudo -i yazarak kök erişimini etkinleştirin.
  3. venv ortamınızı etkinleştirin:
cd py-gem-env
source env/bin/activate
  1. Şimdi de daha sonra test yapmak için bunu doğrulayalım. Sanal makinede aşağıdaki komutu çalıştırın ve istendiğinde y tuşuna basın.
gcloud auth application-default login
  1. Ardından, https:// ile başlayan URL'yi kopyalayın, laboratuvar tarayıcı pencerenizde yeni bir sekme açın ve URL'yi yapıştırın. İstemleri kabul edin.
  2. Aşağıdaki mesajı gördüğünüzde kopyala'yı seçin, py-vm1 oturumuna geri dönün ve Enter authorization code: (Yetkilendirme kodunu girin:) için kopyaladığınız kodu yapıştırıp kimlik doğrulamak üzere Enter tuşuna basın.

b703db7aa2aa286a.png

  1. Şimdi Vertex API'ye bağlanıp bağlanamayacağımızı görmek için hızlı bir test yapalım. Bu testte *-aiplatform.googleapis.com kullanılıyor. Bu nedenle, trafiğin nasıl yönlendirildiğini görmek için bu adrese dig işlemi yapacağız.
dig *-aiplatform.googleapis.com
  1. Buna benzer bir şey görmelisiniz (adres farklı olacaktır). API herkese açık bir API olduğundan yolun herkese açık IP adresleri üzerinden olduğunu unutmayın. KOPYALAMAYIN
; <<>> 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. Şimdi Python'ı kullanalım. ipython arayüzünü etkinleştirmek için ipython yazın.
ipython

845ef4291429888a.png

  1. Şimdi aşağıdakileri kopyalayıp yapıştırın. Bu işlem, Gemini'a "Google logosunun tüm renkleri nelerdir?" ve "Gökyüzünün rengi nedir?" sorularını sorar.
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. Çalıştırmak ve sonucu görmek için Enter tuşuna iki kez basın.
  2. Bu istek, herkese açık API aracılığıyla Vertex'e erişti.
  3. SSH oturumunu kapatıp devam edelim.

6. 4. görev: Terraform ile googleapis için PSC uç noktası oluşturma

Vertex API uç noktamıza özel bağlantıyı etkinleştirmek için Google API'leri için bir Private Service Connect uç noktası oluşturacağız. Bu sayede, trafiği ihtiyacımız olan Google API'lerine (bu örnekte Vertex) yönlendirmek için atadığımız özel bir IP adresini kullanabiliriz.

  1. Henüz açık değilse Cloud Shell'i düzenleyici görünümünde açın. Aşağıdakileri oluşturacağız:
  • PSC uç noktası 192.168.255.250 için bir IP oluşturun (resource "google_compute_global_address" "default")
  • Google API'leri için PSC uç noktası oluşturma (resource "google_compute_global_forwarding_rule" "default")

terraform-build klasöründe psc.tf dosyasını açın. Aşağıdaki kodu dosyaya ekleyin.

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 terminaline geçin ve terraform-build klasöründe olduğunuzdan emin olun. Ardından terraform init komutunu çalıştırın. Bu komut,2 öğenin ekleneceğini gösterir.
    Ardından terraform apply komutunu çalıştırın ve IP ile PSC Google API'leri uç noktasını oluşturmak için yes yazın.terraform plan
  2. Uç noktanın varlığını doğrulama
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

7. 5. görev: Terraform ile googleapis için manuel DNS girişi oluşturma

Özel DNS kullanarak PSC uç noktasına yönlendiren manuel bir DNS girişi oluşturabilirsiniz. Bu durum, atadığınız tüm ağları etkiler.

  1. Ağ hizmetleri'ne gidin ve Cloud DNS'yi seçin.
  2. Bölgelerde, Google API'leri için Private Service Connect'e yönelik otomatik olarak oluşturulmuş bir bölge görürsünüz. Bu bölgenin türü hizmet dizinidir. Bu, **SERVICE-ENDPOINT.p.googleapis.com biçiminde PSC uç noktasına bağlanmak için kullanılabilir. Örnek: aiplatform-pscvertexgemini.p.googleapis.com
  3. Bu durumda, özel bir DNS girişini manuel olarak oluşturmak istiyoruz. Yapılandırma şu şekilde olur:
  • "googleapis.com" için "googleapis-private" adlı bir gizli DNS bölgesi oluşturun ve bunu "python-net" ağıyla sınırlayın.
  • "googleapis.com"u "192.168.255.250" IP adresiyle eşlemek için bir A kaydı ekleyin.
  • "googleapis.com" alanının tüm alt alanlarını (ör. www.googleapis.com) "googleapis.com" alanına yönlendirmek için bir CNAME kaydı ekleyin.
  1. Henüz açık değilse Cloud Shell'i düzenleyici görünümünde açın. terraform-build klasöründe dns.tf dosyasını açın. Aşağıdaki kodu dosyaya ekleyin.

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 terminaline geçin ve terraform-build klasöründe olduğunuzdan emin olun. Ardından terraform plan komutunu çalıştırın. Bu komut,hangi öğelerin ekleneceğini gösterir.
    Ardından terraform apply komutunu çalıştırın ve özel DNS girişi oluşturmak için yes yazın.
  2. Şuna benzer bir A kaydı ve CNAME içeren bir kurulum görmelisiniz. 6d2fc061460cd983.png
  3. Ardından, py-vm1 üzerinde bu değişikliklerle bağlantıyı doğruluyoruz.

8. 6. görev: IP adresi üzerinden uç nokta bağlantısını doğrulama

Gemini'a bağlanmak için özel uç noktayı kullanarak bağlanalım.

  1. py-vm1 sanal makine örneğine gidin. SSH'yi seçin ve sanal makineye SSH üzerinden bağlanın.
  2. sudo -i yazarak kök erişimi elde edin.
  3. ping komutunu kullanarak aiplatform.googleapis.com adresine giden bağlantı yolunu kontrol edin. Bu işlem, googleapis için özel DNS'deki IP adresine A kaydı gönderir. Bu IP bir PSC uç noktasıdır ve ping işlemleriniz başarısız olur.
ping -c 2 aiplatform.googleapis.com
  1. aiplatform-pscvertexgemini.p.googleapis.com ile PSC Google API'leri için otomatik olarak oluşturulan DNS girişini kullanarak ping ile bağlantı yolunu kontrol edin. Bu, PSC uç noktasının IP adresini gösterir ve ping işlemleriniz başarısız olur.
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
  1. dig komutunu kullanarak aiplatform.googleapis.com adresine giden bağlantı yolunu kontrol edin. Bu, PSC uç noktasının IP adresi olmalıdır.
dig aiplatform.googleapis.com
  1. Konsola dönün ve py-vm1 sanal makine örneğinin başka bir örneğini açın. SSH'yi seçin ve sanal makineye SSH üzerinden bağlanın.
  2. sudo -i yazarak kök erişimi elde edin.
  3. TCP dökümündeki bağlantıyı görmek için aşağıdaki komutu çalıştırın.
sudo tcpdump -i any port 53 -n or host aiplatform.googleapis.com
  1. Şimdi py-vm1 sanal makine örneğinin ilk SSH örneğine geri dönün.
  2. Aşağıdaki komutu kullanarak ortamı etkinleştirin:
cd py-gem-env
source env/bin/activate
  1. Şimdi Python'ı test edelim. ipython arayüzünü etkinleştirmek için ipython yazın.
ipython
  1. Şimdi aşağıdakileri kopyalayıp yapıştırın. Bu işlem, Gemini'a "Yapay zeka bağlamında belirteçleştirici nedir? Tek bir kısa cümleyle özetle." ve "Balinalar harika mı değil mi?" sorularını sorar.
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. Çalıştırmak ve sonucu görmek için iki kez Enter tuşuna basın.
  2. Sanal makine örneği py-vm1'in ikinci örneğine geri dönün. TCPDUMP sonucunu görmeniz gerekir. Giriş ve çıkış trafiğinin yanı sıra VM'nin IP adresinin, aiplatform.googleapis.com adresine bağlanmak için PSC uç noktası IP adresini kullandığını fark edeceksiniz.

py-vm1 sanal makine örneğine yönelik tüm SSH oturumlarını kapatın.

9. Temizleme

  1. Cloud Shell'e gidin ve terraform-build dizininde olduğunuzdan emin olun. cd terraform-build
  2. Yapılacak tüm değişiklikleri görmek için terraform plan destroy komutunu çalıştırın.
terraform plan -destroy
  1. Ardından terraform destroy komutunu çalıştırın ve yes yazın. Terraform ile projenizde oluşturduğunuz tüm kaynaklar kaldırılır.
terraform destroy 

10. Tebrikler

Tebrikler, Vertex'e başarıyla bağlandınız ve Gemini 3 Pro'yu genel API adresi üzerinden ve Google API'leri için Private Service Connect uç noktasını kullanarak özel olarak kullandınız. Bu işlev, özel API bağlantısını (Interconnect, Cross-Cloud Interconnect ve VPC) aracılığıyla bağlanan şirket içi/diğer bulut ortamınıza genişletebilir.

Sonraki adımlar / Daha fazla bilgi

Vertex AI ağ iletişimi hakkında daha fazla bilgi edinebilirsiniz.

Codelab: Private Service Connect uç noktası aracılığıyla Python SDK ile Vertex AI'da Anthropic Claude'a erişme

Sonraki laboratuvarınıza katılın

Google Cloud ile görevinize devam edin ve aşağıdaki Google Cloud Öğrenim Merkezi laboratuvarlarına göz atın: