Mengakses Gemini Chat dengan python sdk melalui endpoint Private Service Connect

Mengakses Gemini Chat dengan python sdk melalui endpoint Private Service Connect

Tentang codelab ini

subjectTerakhir diperbarui Okt 29, 2024
account_circleDitulis oleh Ammett Williams & Sampath Kumar Maddula

1. Ringkasan

Vertex AI API dapat diakses melalui internet, tetapi di perusahaan Anda, Anda mungkin ingin mengakses Vertex AI API secara pribadi tanpa melalui internet. Di lab ini, Anda akan terlebih dahulu mengakses Vertex Gemini chat API melalui python sdk yang berjalan di instance VM melalui internet publik.

Kemudian, Anda akan membuat endpoint Private Service Connect ke Google API, dan mengubah alur traffic untuk menggunakan endpoint pribadi guna terhubung ke API chat Gemini. Konfigurasi akan berupa kombinasi Terraform, gcloud, dan konsol.

Dalam lab ini, Anda akan membuat pola berikut.

Gambar 1.

8b283cc5684283c2.png

2. Tujuan

Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:

  • Menyiapkan instance VM untuk menggunakan python sdk
  • Menghubungkan ke Gemini Chat melalui skrip python
  • Mengonfigurasi endpoint PSC untuk terhubung ke Googleapis
  • Memverifikasi jalur konektivitas ke Googleais
  • Mengonfigurasi entri DNS manual

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:

55efc1aaa7a4d3ad.png

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

7ffe5cbb04455448.png

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.

3. Tugas 1. Menyiapkan Lingkungan dengan terraform

Kita akan membuat VPC kustom dengan aturan Firewall dan subnet. Buka konsol cloud dan pilih project yang akan Anda gunakan.

  1. Buka Cloud Shell yang terletak di bagian atas konsol di sebelah kanan, pastikan Anda melihat project ID yang benar di Cloud Shell, konfirmasi perintah apa pun untuk mengizinkan akses. 4261e776f64ea978.png
  2. Buat folder bernama terraform-build dan pindahkan ke folder
mkdir terraform-build  && cd terraform-build
  1. Buat file main.tf dan variable.tf.
touch main.tf variable.tf 
  1. Beralihlah ke tampilan Cloud Shell editor. Pilih editor, pastikan Anda mengizinkan perintah yang diperlukan agar antarmuka dapat dimuat.
  2. Setelah dimuat, buka File > Open Folder, lalu buka /home/your-user-name/terraform-build dan pilih Ok untuk membuka folder di editor. 78f5eb9f2f82f1b0.png
  3. Pilih file variable.tf dan tambahkan kode berikut. Ganti teks your-project-id-here dengan project ID Anda yang sebenarnya dalam tanda petik
variable "project_id" {
  type = string
  default = "your-project-id-here"
}

variable "network_id" {
  type = string
  default = "python-net"
}
  1. Selanjutnya, buka file main.tf. Kita akan menambahkan beberapa kode terraform untuk melakukan berbagai tindakan seperti yang dijelaskan di bawah.

Mengaktifkan API

resource "google_project_service" "default"

Membuat VPC bernama python-net

resource "google_compute_network" "default"

Tambahkan subnet

resource "google_compute_subnetwork" "default"

Menambahkan dua aturan Firewall

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

  1. Salin dan tempel kode berikut ke dalam file .tf utama.
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. Beralih kembali ke terminal Cloud Shell, pastikan Anda berada di direktori terraform-build cd terraform-build dan jalankan perintah berikut

terraform init

Menginisialisasi direktori kerja. Langkah ini mendownload penyedia yang diperlukan untuk konfigurasi yang diberikan.

terraform plan

Membuat rencana eksekusi, yang menunjukkan tindakan yang akan dilakukan Terraform untuk men-deploy infrastruktur Anda.

  1. Sekarang, untuk membuat resource, jalankan perintah terraform apply dan ketik yes untuk dijalankan.

4. Tugas 2. Membuat gateway NAT dan VM dengan Terraform

Kita perlu memberikan akses eksternal keluar ke internet, jadi mari kita buat gateway Cloud NAT dan melampirkannya.

  1. Buka Cloud Shell, buka folder terraform-build, lalu buat file berikut (total tiga file). Kita akan mengeditnya nanti.
touch nat-vm.tf psc.tf dns.tf
  1. Beralihlah ke tampilan editor Cloud Shell, lalu pilih file nat-vm.tf dan tambahkan kode Terraform berikut. Tindakan ini akan membuat gateway NAT dan dua VM.

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. Beralihlah ke terminal Cloud Shell, pastikan Anda berada di folder terraform-build dan jalankan terraform plan. Tindakan ini akan menunjukkan bahwa 4 item akan ditambahkan, lalu jalankan terraform apply dan ketik yes untuk membuat gateway NAT dan dua VM.

5. Tugas 3. Mengonfigurasi VM dan menguji

  1. Buka instance VM. Pilih VM yang dimulai dengan py-vm1. Pilih SSH.
  2. Setelah Anda menerapkan SSH ke py-vm1, aktifkan root dengan mengetik sudo -i
  3. Aktifkan lingkungan venv Anda:
cd py-gem-env
source env
/bin/activate
  1. Sekarang, mari kita autentikasi untuk melakukan beberapa pengujian nanti. Jalankan perintah berikut di VM, tekan y saat diminta.
gcloud auth application-default login
  1. Selanjutnya, salin URL yang muncul di awal dengan https://, buka tab baru di jendela browser lab Anda, lalu tempel URL. Setujui perintah.
  2. Saat Anda melihat salinan pilih berikut, beralihlah kembali ke sesi vm py-vm1 dan untuk Enter authorization code:, tempelkan kode yang Anda salin dan tekan enter untuk mengautentikasi.

c29615cdf9324209.png

  1. Sekarang, mari kita lakukan pengujian singkat untuk melihat apakah kita dapat terhubung ke Vertex Gemini API, yang menggunakan us-central1-aiplatform.googleapis.com sehingga kita akan melakukan dig ke alamat tersebut untuk melihat bagaimana traffic dirutekan.
dig us-central1-aiplatform.googleapis.com
  1. Anda akan melihat sesuatu yang serupa (alamatnya akan berbeda). Perhatikan bahwa jalurnya adalah melalui alamat IP publik karena API adalah API publik. JANGAN SALIN
; <<>> 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. Sekarang mari kita gunakan python. Ketik ipython untuk mengaktifkan antarmuka ipython.
ipython

4685b31f13df54e1.png

  1. Sekarang, salin dan tempel kode berikut. Perintah ini akan meminta Gemini "Apa saja warna logo Google" dan "Apa warna langit" . Ganti enter-your-project-id-here dengan project ID Anda dalam tanda petik
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. Tekan enter untuk menjalankan dan melihat hasilnya.
  2. Permintaan ini mengakses Vertex melalui API publik.
  3. Tutup sesi SSH, mari kita lanjutkan.

Sekarang konfigurasikan py-vm2 dengan konfigurasi yang sama

  1. Buka instance VM. Pilih VM yang dimulai dengan py-vm2. Pilih SSH.
  2. Setelah Anda menerapkan SSH ke py-vm2-****, aktifkan root dengan mengetik **sudo -i**
  3. Aktifkan lingkungan venv Anda:
cd py-gem-env
source env
/bin/activate
  1. Sekarang, mari kita autentikasi untuk melakukan beberapa pengujian nanti. Jalankan perintah berikut di VM
gcloud auth application-default login
  1. Selanjutnya, salin URL yang muncul di awal dengan https://, buka tab baru di jendela browser lab Anda, lalu tempel URL. Setujui perintah.
  2. Saat Anda melihat salinan pilih berikut, beralihlah kembali ke sesi vm py-vm2 dan untuk Enter authorization code:, tempelkan kode yang Anda salin dan tekan enter untuk mengautentikasi.

c29615cdf9324209.png

  1. Sekarang, mari kita lakukan pengujian cepat untuk melihat apakah kita dapat terhubung ke Vertex Gemini API. Perintah ini akan menggunakan 4 ping ke us-central1-aiplatform.googleapis.com sehingga kita akan mendapatkan respons dari alamat publik API.
ping -c 4 us-central1-aiplatform.googleapis.com
  1. Kita akan kembali untuk menguji VM ini nanti. Tutup sesi SSH dan mari kita lanjutkan.

6. Tugas 4. Membuat endpoint PSC ke googleapis dengan Terraform

Untuk mengaktifkan konektivitas pribadi ke endpoint Vertex API, kita akan membuat endpoint Private Service Connect untuk Google API. Tindakan ini akan memungkinkan kita menggunakan alamat IP pribadi yang ditetapkan untuk merutekan traffic ke Google API yang diperlukan, dalam hal ini Vertex.

  1. Buka Cloud Shell dalam tampilan editor jika belum terbuka. Kita akan membuat hal berikut:
  • Buat IP untuk endpoint PSC 192.168.255.250 (resource "google_compute_global_address" "default")
  • Membuat endpoint PSC ke Google API (resource "google_compute_global_forwarding_rule" "default")

Buka file psc.tf di folder terraform-build. Tambahkan kode berikut ke file.

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. Beralihlah ke terminal Cloud Shell, pastikan Anda berada di folder terraform-build. Kemudian, jalankan terraform init, lalu jalankan terraform plan. Tindakan ini akan menunjukkan bahwa 2 item akan ditambahkan,
    lalu jalankan terraform apply dan ketik yes untuk membuat endpoint Google API IP dan PSC.
  2. Memverifikasi keberadaan endpoint
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

7. Tugas 5. Memverifikasi konektivitas endpoint melalui alamat IP

Mari kita terhubung menggunakan endpoint pribadi untuk terhubung ke Gemini.

  1. Buka Instance VM py-vm1. Pilih SSH dan SSH ke VM
  2. Dapatkan akses root dengan mengetik sudo -i
  3. Kita hanya akan menggunakan instance individual ini untuk menguji endpoint PSC sehingga kita akan mengubah file host dengan entri berikut
echo 192.168.255.250 us-central1-aiplatform.googleapis.com >> /etc/hosts

cat
/etc/hosts
  1. Periksa jalur konektivitas ke us-central1-aiplatform.googleapis.com menggunakan perintah ping. Tindakan ini akan melakukan ping ke alamat IP yang Anda masukkan di file host. Ini adalah endpoint PSC dan ping Anda tidak akan berhasil.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. Kembali ke konsol dan buka instance lain dari Instance VM py-vm1. Pilih SSH dan SSH ke VM
  2. Dapatkan akses root dengan mengetik sudo -i
  3. Jalankan perintah berikut untuk melihat konektivitas dalam dump TCP
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
  1. Sekarang, beralihlah kembali ke instance SSH pertama Instance VM py-vm1
  2. Aktifkan env menggunakan
cd py-gem-env
source env
/bin/activate
  1. Sekarang, mari kita uji python. Ketik ipython untuk mengaktifkan antarmuka ipython. Kali ini traffic akan mengalir melalui endpoint PSC.
ipython
  1. Sekarang, salin dan tempel kode berikut. Tindakan ini akan meminta Gemini "Apa saja warna logo Google" dan "Jelaskan Air Terjun Niagara". Ganti enter-your-project-id-here dengan project ID Anda dalam tanda petik
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. Tekan enter untuk menjalankan dan melihat hasilnya.
  2. Beralih kembali ke instance kedua Instance VM py-vm1. Anda akan melihat hasil TCPDUMP. Anda akan melihat In dan Out dengan alamat IP VM dan juga alamat IP endpoint PSC untuk terhubung ke us-central1-aiplatform.googleapis.com
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. Menutup semua sesi SSH ke Instance VM py-vm1

8. Tugas 6. Membuat entri DNS Manual ke googleapis dengan Terraform (Opsional)

Anda dapat membuat entri DNS manual untuk mengarah ke endpoint PSC menggunakan DNS pribadi. Tindakan ini akan memengaruhi semua jaringan yang Anda tetapkan ke jaringan tersebut.

  1. Buka Layanan jaringan, lalu pilih Cloud DNS.
  2. Di zona, Anda akan melihat zona yang dibuat secara otomatis untuk Private Service Connect untuk Google API, dengan direktori layanan jenis zona. Ini dapat digunakan untuk terhubung ke endpoint PSC dengan format **SERVICE-ENDPOINT.p.googleapis.com Contoh: aiplatform-pscvertexgemini.p.googleapis.com
  3. Dalam hal ini, kita ingin membuat entri DNS pribadi secara manual. Konfigurasinya akan seperti berikut
  • Buat zona DNS pribadi bernama "googleapis-private" untuk "googleapis.com" dan batasi ke jaringan "python-net".
  • Tambahkan data A untuk memetakan "googleapis.com" ke alamat IP "192.168.255.250".
  • Tambahkan data CNAME untuk mengalihkan semua subdomain "googleapis.com" (misalnya, www.googleapis.com) ke "googleapis.com".
  1. Buka Cloud Shell dalam tampilan editor jika belum terbuka. Buka file dns.tf di folder terraform-build. Tambahkan kode berikut ke file.

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. Beralihlah ke terminal Cloud Shell, pastikan Anda berada di folder terraform-build. Kemudian, jalankan terraform plan untuk menampilkan item yang akan ditambahkan,
    Lalu, jalankan terraform apply dan ketik yes untuk membuat entri DNS pribadi.
  2. Anda akan melihat penyiapan dengan data A dan CNAME seperti ini, lihat b7f122f0d1fd2850.png
  3. Selanjutnya, kita akan memverifikasi konektivitas dengan perubahan ini di py-vm2

9. Tugas 7. Memverifikasi konektivitas endpoint melalui alamat IP (Opsional)

Mari kita terhubung menggunakan endpoint pribadi untuk terhubung ke Gemini.

  1. Buka Instance VM py-vm2. Pilih SSH dan SSH ke VM
  2. Dapatkan akses root dengan mengetik sudo -i
  3. Periksa jalur konektivitas ke us-central1-aiplatform.googleapis.com menggunakan perintah ping. Tindakan ini akan melakukan ping ke alamat IP di DNS pribadi, data A untuk googleapis. IP ini adalah endpoint PSC dan ping Anda tidak akan berhasil.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. Periksa jalur konektivitas dengan ping menggunakan entri DNS yang dibuat secara otomatis untuk PSC Google API dengan aiplatform-pscvertexgemini.p.googleapis.com. Ini mengarah ke alamat IP endpoint PSC dan ping Anda tidak akan berhasil.
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
  1. Periksa jalur konektivitas ke us-central1-aiplatform.googleapis.com menggunakan perintah dig. Ini harus berupa alamat IP endpoint PSC.
dig us-central1-aiplatform.googleapis.com
  1. Kembali ke konsol dan buka instance lain dari Instance VM py-vm2. Pilih SSH dan SSH ke VM
  2. Dapatkan akses root dengan mengetik sudo -i
  3. Jalankan perintah berikut untuk melihat konektivitas dalam dump TCP
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
  1. Sekarang, beralihlah kembali ke instance SSH pertama dari Instance VM py-vm2
  2. Aktifkan env menggunakan
cd py-gem-env
source env
/bin/activate
  1. Sekarang, mari kita uji python. Ketik ipython untuk mengaktifkan antarmuka ipython.
ipython
  1. Sekarang, salin dan tempel kode berikut. Perintah ini akan meminta Gemini "Apa saja warna logo Google" dan "Apa dua fitur Gemini pro". Ganti enter-your-project-id-here dengan project ID Anda dalam tanda petik
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. Tekan enter untuk menjalankan dan melihat hasilnya.
  2. Beralih kembali ke instance kedua Instance VM py-vm2. Anda akan melihat hasil TCPDUMP. Anda akan melihat masuk dan keluar serta alamat IP VM menggunakan alamat IP endpoint PSC untuk terhubung ke us-central1-aiplatform.googleapis.com

Menutup semua sesi SSH ke Instance VM py-vm2

10. Pembersihan

  1. Buka Cloud Shell, pastikan Anda berada di direktori terraform-build cd terraform-build dan jalankan perintah berikut terraform destroy dan ketik yes, semua resource yang Anda buat di project dengan Terraform akan dihapus.

11. Selamat

Selamat, Anda telah berhasil terhubung ke chat Vertex Gemini menggunakan alamat API publik dan secara pribadi menggunakan Endpoint Private Service Connect untuk Google API. Fungsi ini dapat memperluas konektivitas API pribadi ke lingkungan cloud lokal/cloud lainnya yang terhubung melalui (Interconnect, Cross-Cloud Interconnect, dan VPC).

Langkah berikutnya/Pelajari lebih lanjut

Anda dapat membaca selengkapnya tentang jaringan Vertex AI

Codelab: Mengakses Anthropic Claude di Vertex AI dengan python sdk melalui endpoint Private Service Connect

Ikuti lab berikutnya

Lanjutkan quest Anda dengan Google Cloud, dan lihat lab Google Cloud Skills Boost lainnya: