Private Service Connect uç noktası üzerinden python sdk ile Gemini sohbetine erişme

1. Genel Bakış

Vertex AI API'ye internet üzerinden erişilebilir. Ancak kuruluşunuzda Vertex AI API'ye internet üzerinden erişmek yerine özel olarak erişmek isteyebilirsiniz. Bu laboratuvarda, Vertex Gemini Chat API'ye ilk olarak herkese açık internet üzerinden bir sanal makine örneğinde çalışan Python SDK'sı aracılığıyla erişeceksiniz.

Ardından, Google API'lerine yönelik bir Private Service Connect uç noktası oluşturacaksınız ve trafik akışını, Gemini chat API'ye bağlanmak için özel uç noktayı kullanacak şekilde değiştireceksiniz. Yapılandırmalar Terraform, gcloud ve console birleşiminden oluşur.

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

Şekil1.

8b283cc5684283c2.png

2. Hedef

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

  • Sanal makine örneğini, Python SDK'sını kullanacak şekilde ayarlama
  • Python komut dosyası aracılığıyla Gemini Chat'e bağlan
  • PSC uç noktasını Googleapis'e bağlanacak şekilde yapılandırın
  • Googleais bağlantı yolunu doğrulama
  • Manuel DNS girişlerini yapılandırma

Kendine ait tempoda ortam oluşturma

  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 hesap oluşturmanız gerekir.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Proje adı, bu projenin katılımcılarının görünen adıdı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 değiştirilemez (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dize otomatik olarak oluşturur. Bu dizenin ne olduğu genellikle önemli değildir. Çoğu kod laboratuvarında proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) referans vermeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele başka bir kimlik oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer (Proje Numarası) olduğunu belirtmek isteriz. Bu değerlerin üçü 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 çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmanın tekrarlanmasını önlemek amacıyla kaynakları kapatmak için oluşturduğunuz kaynakları silebilir veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz deneme programına uygundur.

Cloud Shell'i başlatma

Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de 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:

55efc1aaa7a4d3ad.png

Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. İşlem tamamlandığında aşağıdakine benzer bir ekran görürsünüz:

7ffe5cbb04455448.png

İhtiyacınız olan tüm geliştirme araçlarını bu sanal makinede bulabilirsiniz. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Hiçbir şey yüklemeniz gerekmez.

3. 1. görev: Terraform ile ortam oluşturma

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

  1. Konsolunuzun sağ üst tarafındaki Cloud Shell'i açın, Cloud Shell'de doğru proje kimliğini gördüğünüzden emin olun, erişime izin verme istemlerini onaylayın. 4261e776f64ea978.png
  2. Terraform-build adında bir klasör oluşturup bu klasöre taşıyın
mkdir terraform-build  && cd terraform-build
  1. Bir 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üklenebilmesi için gerekli tüm istemlere izin verdiğinizden emin olun.
  2. Dosya yüklendikten sonra Dosya > Klasörü Aç'a gidin ve /home/kullanıcı-adınız/terraform-build bölümüne gidip Tamam'ı seçerek klasörü düzenleyicide açın. 78f5eb9f2f82f1b0.png
  3. variable.tf dosyasını seçin ve aşağıdakini ekleyin. your-project-id-here metnini tırnak içinde 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 kodu ekleyeceğiz.

API'leri etkinleştirme

resource "google_project_service" "default"

python-net adlı VPC 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 ana .tf dosyasına yapıştırın.
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 terminaline geri dönün ve terraform-build dizininde cd terraform-build olduğunuzdan emin olun ve aşağıdaki komutları çalıştırın

terraform init

Çalışma dizinini başlatır. Bu adımda, belirli yapılandırma için gereken 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

 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 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çidi ile iki sanal makine 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 uygulaydıktan sonra sudo -i yazarak root'u etkinleştirin
  3. Venv ortamınızı etkinleştirin:
cd py-gem-env
source env/bin/activate
  1. Daha sonra test yapmak için kimlik doğrulaması yapalım. Sanal makinede aşağıdaki komutu çalıştırın. İstendiğinde y'ye basın.
gcloud auth application-default login
  1. Ardından, https:// ile başlayan URL'yi kopyalayın ve laboratuvar tarayıcı pencerenizde yeni bir sekme açın ve URL'yi yapıştırın. İstemleri kabul edin.
  2. Aşağıdaki seçili kopyayı gördüğünüzde py-vm1 sanal makinesinin oturumuna geri dönün ve EnterAuthorization code'a (Yetkilendirme kodu girin) geçin:Kopyaladığınız kodu yapıştırın ve kimlik doğrulaması yapmak için Enter tuşuna basın.

c29615cdf9324209.png

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

4685b31f13df54e1.png

  1. Şimdi aşağıdakileri kopyalayıp yapıştırın. Bu komut, Gemini'ye "Google logosunun tüm renkleri nelerdir?" ve "Göğün rengi nedir?" sorularını sorar. enter-your-project-id-here değerini, tırnak işareti içindeki proje kimliğinizle değiştirin
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. Çalıştırıp sonucu görmek için Enter tuşuna basın.
  2. Bu istek, herkese açık API aracılığıyla Vertex'e erişti.
  3. SSH oturumunu kapatın ve devam edelim.

Ardından py-vm2'yi aynı yapılandırmalarla yapılandırın

  1. Sanal makine örneklerine gidin. py-vm2 ile başlayan sanal makineyi seçin. SSH'yi seçin.
  2. py-vm2-**** SSH uygulamasına giriş yaptıktan sonra **sudo -i** yazarak root'u etkinleştirin
  3. venv ortamınızı etkinleştirin:
cd py-gem-env
source env/bin/activate
  1. Daha sonra test yapmak için kimlik doğrulaması yapalım. Sanal makinede aşağıdaki komutu çalıştırın
gcloud auth application-default login
  1. Ardından, https:// ile başlayan URL'yi kopyalayın ve laboratuvar tarayıcı pencerenizde yeni bir sekme açın ve URL'yi yapıştırın. İstemleri kabul edin.
  2. Aşağıdaki seçili kopyayı gördüğünüzde py-vm2 sanal makinesinin oturumuna geri dönün ve Enter yetkilendirme kodu girin: bölümüne geçin: Kopyaladığınız kodu yapıştırın ve kimlik doğrulaması için Enter tuşuna basın.

c29615cdf9324209.png

  1. Şimdi Vertex Gemini API'ye bağlanıp bağlanamayacağımızı görmek için kısa bir test yapalım. Bu komut us-central1-aiplatform.googleapis.com'a 4 ping kullanır, böylece API'nin herkese açık adresinden bir yanıt alırız.
ping -c 4 us-central1-aiplatform.googleapis.com
  1. Bu sanal makineyi daha sonra test etmek için tekrar geleceğiz. SSH oturumunu kapatın ve devam edelim.

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

Vertex API uç noktamızla özel bağlantıyı etkinleştirmek amacıyla 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 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 (resource "google_compute_global_address" "default")) için bir IP oluşturun
  • Google API'leri (resource "google_compute_global_forwarding_rule" "default")) için bir PSC uç noktası oluşturun

terraform-build klasöründeki psc.tf dosyasını açın. Dosyaya aşağıdaki kodu 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. Ardından terraform plan komutunu çalıştırın. Bu komut size 2 öğenin ekleneceğini gösterir
    ,ardından terraform apply komutunu çalıştırıp yes yazarak IP ve PSC Google API'leri uç noktasını oluşturun.
  2. Uç noktanın mevcut olduğunu doğrulama
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

7. 5. 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. Sanal makine içine SSH ve SSH'yi seçin
  2. sudo -i yazarak root erişimi elde edin
  3. Bu bağımsız örneği PSC uç noktasını test etmek için kullanacağız. Bu nedenle ana makine dosyasını aşağıdaki girişle değiştireceğiz.
echo 192.168.255.250 us-central1-aiplatform.googleapis.com >> /etc/hosts

cat /etc/hosts
  1. ping komutunu kullanarak us-central1-aiplatform.googleapis.com adresine giden bağlantı yolunu kontrol edin. Bu işlem, ana makine dosyalarında girdiğiniz IP adresini pingler. Bu bir PSC uç noktasıdır ve ping'leriniz başarısız olur.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. Konsola geri dönün ve py-vm1 sanal makine örneğinin başka bir örneğini açın. Sanal makine için SSH'yi ve SSH'yi seçin
  2. sudo -i yazarak root erişimi elde edin
  3. TCP dökümü'nde bağlantıyı görmek için aşağıdaki komutu çalıştırın.
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
  1. Şimdi py-vm1 Sanal Makine Örneğinin ilk SSH örneğine geri dönün
  2. Şunu kullanarak env'yi etkinleştirin:
cd py-gem-env
source env/bin/activate
  1. Şimdi Python'u test edelim. ipython arayüzünü etkinleştirmek için ipython yazın. Bu sefer trafik, PSC uç noktasından geçer.
ipython
  1. Ardından aşağıdakileri kopyalayıp yapıştırın. Gemini'a "Google logosunun tüm renkleri nedir" ve "Niagara Şelalesi'ni tarif edin" diye sorar. enter-your-project-id-here kısmını tırnak içinde proje kimliğinizle değiştirin.
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. Çalıştırıp sonucu görmek için Enter tuşuna basın.
  2. py-vm1 sanal makine örneğinin ikinci örneğine geri dönün. TCPDUMP'nin sonucunu görürsünüz. Sanal makinenin IP adreslerinin yanı sıra us-central1-aiplatform.googleapis.com adresine bağlanmak için PSC uç noktası IP adresini içeren Giden ve Gelen'i görürsünüz.
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 sanal makine örneğine yönelik tüm SSH oturumlarını kapatma

8. 6. görev: Terraform ile googleapis için manuel DNS girişi oluşturma (isteğe bağlı)

Gizli DNS kullanarak PSC uç noktasına işaret edecek manuel bir DNS girişi oluşturabilirsiniz. Bu, ona atadığınız tüm ağları etkiler.

  1. Network services (Ağ hizmetleri) seçeneğine gidip Cloud DNS'yi (Cloud DNS) seçin.
  2. Bölgelerde, Google API'leri için Private Service Connect'in otomatik olarak oluşturulmuş bir bölgesini, bölge türü hizmet dizini ile görürsünüz. Bu, PSC uç noktasına **SERVICE-ENDPOINTp.googleapis.com biçiminde bağlanmak için kullanılabilir Örnek: aiplatform-pscvertexgemini.p.googleapis.com
  3. Bu durumda, manuel olarak özel DNS girişi oluşturmak istiyoruz. Yapılandırma aşağıdaki gibi olacak
  • "googleapis.com" için "googleapis-private" adlı bir gizli DNS alt bölgesi oluşturun ve bunu "python-net" ağıyla kısıtlayın.
  • "googleapis.com"u "192.168.255.250" IP adresiyle eşlemek için bir A kaydı ekleyin.
  • "googleapis.com"un tüm alt alanlarını ("www.googleapis.com" gibi) "googleapis.com"a 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ündeki dns.tf dosyasını açın. Dosyaya aşağıdaki kodu 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'ü çalıştırın. Bu işlem, hangi öğelerin ekleneceğini gösterir.
    Ardından terraform apply'yi çalıştırın ve özel DNS girişini oluşturmak için yes yazın.
  2. A kaydı ve CNAME içeren bir kurulum görürsünüz. b7f122f0d1fd2850.png
  3. Ardından, py-vm2'de bu değişikliklerle bağlantıyı doğrularız.

9. 7. görev: IP adresi üzerinden uç nokta bağlantısını doğrulama (İsteğe bağlı)

Gemini'ye bağlanmak için özel uç noktayı kullanarak bağlantı kuralım.

  1. py-vm2 Sanal Makine Örneği'ne gidin. Sanal makine içine SSH ve SSH'yi seçin
  2. sudo -i yazarak root erişimi elde edin
  3. ping komutunu kullanarak us-central1-aiplatform.googleapis.com adresine giden bağlantı yolunu kontrol edin. Bu işlem, gizli DNS'deki IP adresini googleapis için A kaydı olarak pingler. Bu IP, PSC uç noktasıdır ve ping'leriniz başarısız olur.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. aiplatform-pscvertexgemini.p.googleapis.com ile PSC Google API'leri için otomatik olarak oluşturulan DNS girişini kullanarak bağlantı yolunu bir ping ile kontrol edin. Bu, PSC uç noktasının IP adresini gösterir ve ping'leriniz başarısız olur.
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
  1. dig komutunu kullanarak us-central1-aiplatform.googleapis.com adresine giden bağlantı yolunu kontrol edin. Bu, PSC uç noktasının IP adresi olmalıdır.
dig us-central1-aiplatform.googleapis.com
  1. Konsola geri dönün ve py-vm2 sanal makine örneğinin başka bir örneğini açın. SSH'yi seçin ve sanal makineye SSH ile bağlanın
  2. sudo -i yazarak root 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 us-central1-aiplatform.googleapis.com
  1. Şimdi py-vm2 Sanal Makine Örneğinin ilk SSH örneğine geri dönün
  2. Aşağıdakileri kullanarak env'yi etkinleştirin:
cd py-gem-env
source env/bin/activate
  1. Şimdi Python'u test edelim. ipython arayüzünü etkinleştirmek için ipython yazın.
ipython
  1. Ardından aşağıdakileri kopyalayıp yapıştırın. Gemini'a "Google logosunun tüm renkleri nedir" ve "Gemini Pro'nun iki özelliği nedir?" gibi sorular sorabilirsiniz. enter-your-project-id-here yerine tırnak işareti içindeki proje kimliğinizi yazın
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. Çalıştırıp sonucu görmek için Enter tuşuna basın.
  2. Sanal makine örneği py-vm2'nin ikinci örneğine geri dönün. TCPDUMP'nin sonucunu görürsünüz. Giden ve gelen trafiği ve sanal makinenin IP adresinin us-central1-aiplatform.googleapis.com adresine bağlanmak için PSC uç noktası IP adresini kullandığını göreceksiniz.

py-vm2 sanal makine örneğine yapılan tüm SSH oturumlarını kapatma

10. Temizleme

  1. Cloud Shell'e gidin. terraform-build dizininde cd terraform-build olduğunuzdan emin olun. Şu komutu çalıştırın: terraform destroy. Ardından, projenizde Terraform ile oluşturduğunuz tüm kaynaklar kaldırılacak.yes

11. Tebrikler

Tebrikler, hem herkese açık API adresini hem de Google API'leri için özel Service Connect uç noktasını kullanarak Vertex Gemini sohbet oturumuna başarıyla bağlandınız. Bu işlev, özel API bağlantısını (Interconnect, Bulutlar Arası Interconnect ve VPC) üzerinden bağlı olan ş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ı üzerinden python sdk ile Vertex AI'da Anthropic Claude'a erişme

Sonraki laboratuvarınıza katılın

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