1. Genel Bakış
Vertex AI API'ye internet üzerinden erişilebilir. Ancak kuruluşunuzda Vertex AI API'ye internete girmeden ö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'leri için bir Private Service Connect uç noktası oluşturur ve Gemini sohbet API'sine bağlanmak için özel uç noktasını kullanacak şekilde trafik akışını değiştirirsiniz. Yapılandırmalar Terraform, gcloud ve konsolun bir kombinasyonu olacaktır.
Bu laboratuvarda aşağıdaki kalıbı oluşturacaksınız.
Şekil 1.
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ğlanma
- PSC uç noktasını Googleapis'e bağlanacak şekilde yapılandırma
- Googleais'e bağlantı yolunu doğrulama
- Manuel DNS girişlerini yapılandırma
Kendine ait tempoda ortam oluşturma
- 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.
- 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 anahtarınızı deneyerek kullanılabilir olup olmadığını görebilirsiniz. Bu adımdan sonra değiştirilemez ve proje boyunca geçerli kalır. - Bazı API'lerin kullandığı üçüncü bir değer (Proje Numarası) olduğunu belirtmek isteriz. Bu üç değer hakkında daha fazla bilgiyi dokümanlar bölümünde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmak çok pahalı değildir. Bu eğitimden sonra faturalandırılmamak için kaynakları kapatmak istiyorsanız oluşturduğunuz kaynakları 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ılabilir olsa da bu kod laboratuvarında bulutta ç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:
Ortam sağlanıp bağlantı kurulabilmesi için birkaç saniye beklemeniz gerekir. İşlem tamamlandığında aşağıdakine benzer bir ekran görürsünüz:
Bu sanal makinede ihtiyaç duyacağınız tüm geliştirme araçları yüklüdür. 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.
- Konsolunuzun sağ üst kısmı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.
- terraform-build adlı bir klasör oluşturun ve klasöre taşıyın
mkdir terraform-build && cd terraform-build
- main.tf ve variable.tf dosyası oluşturun.
touch main.tf variable.tf
- Cloud Shell düzenleyici görünümüne geçin. Düzenleyici'yi seçin, arayüzün yüklenebilmesi için gerekli istemlere izin verdiğinizden emin olun.
- Yüklendikten sonra Dosya > Klasör Aç'a gidin ve /home/kullanıcı adınız/terraform-build adresine gidip klasörü düzenleyicide açmak için Tamam'ı seçin.
- variable.tf dosyasını seçin ve aşağıdakileri 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" }
- 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 |
|
python-net adlı VPC oluşturun |
|
Alt ağ ekleme |
|
İki güvenlik duvarı kuralı ekleme |
|
- 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"] }
- 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, 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.
- Şimdi kaynakları oluşturmak için
terraform apply
komutunu çalıştırın ve çalıştırmak içinyes
yazın.
4. 2. görev: Terraform ile NAT ağ geçidi ve sanal makine oluşturma
İnternete giden harici erişim izni vermemiz gerekiyor. Bu nedenle, bir Cloud NAT ağı geçidi oluşturup ekleyelim.
- Cloud Shell'i açın, terraform-build klasörüne gidin ve aşağıdaki dosyaları (toplam üç dosya) oluşturun. Bunları daha sonra düzenleyeceğiz.
touch nat-vm.tf psc.tf dns.tf
- 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
}
- 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ındanterraform apply
komutunu çalıştırın ve NAT ağ geçidi ile iki sanal makine oluşturmak içinyes
yazın.
5. 3. görev: Sanal makineleri yapılandırma ve test etme
- Sanal makine örneklerine gidin. py-vm1 ile başlayan sanal makineyi seçin. SSH'yi seçin.
- py-vm1'e SSH ile bağlandıktan sonra
sudo -i
yazarak root kullanıcısını etkinleştirin. - venv ortamınızı etkinleştirin:
cd py-gem-env
source env/bin/activate
- Şimdi, daha sonra bazı testler yapmak için kimliğini doğrulayalım. Sanal makinede aşağıdaki komutu çalıştırın, istendiğinde y tuşuna basın.
gcloud auth application-default login
- Ardından, https:// ile başlayan URL'yi kopyalayın. Laboratuvar tarayıcınızın penceresinde yeni bir sekme açın ve URL'yi yapıştırın. İstemleri kabul edin.
- Aşağıdaki seç kopyala ifadesini gördüğünüzde py-vm1 sanal makine oturumuna geri dönün ve Yetkilendirme kodunu girin: alanına kopyaladığınız kodu yapıştırın ve kimlik doğrulama için Enter tuşuna basın.
- Ş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
- Benzer bir şey görürsünüz (adres farklıdır). API herkese açık bir API olduğundan yolun herkese açık IP adresleri üzerinden olduğunu 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
- Şimdi Python'u kullanalım. ipython arayüzünü etkinleştirmek için
ipython
yazın.
ipython
- Ardından 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
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()
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))
- Çalıştırmak ve sonucu görmek için Enter tuşuna basın.
- Bu istek, herkese açık API aracılığıyla Vertex'e erişmiştir.
- SSH oturumunu kapatın ve devam edelim.
Ardından py-vm2'yi aynı yapılandırmalarla yapılandırın
- Sanal makine örneklerine gidin. py-vm2 ile başlayan sanal makineyi seçin. SSH'yi seçin.
- py-vm2'ye SSH ile bağlandıktan sonra **
sudo -i
** yazarak root'u etkinleştirin. - venv ortamınızı etkinleştirin:
cd py-gem-env
source env/bin/activate
- Şimdi, daha sonra bazı testler yapmak için kimliğini doğrulayalım. Sanal makinede aşağıdaki komutu çalıştırın
gcloud auth application-default login
- Ardından, https:// ile başlayan URL'yi kopyalayın. Laboratuvar tarayıcınızın penceresinde yeni bir sekme açın ve URL'yi yapıştırın. İstemleri kabul edin.
- Aşağıdaki seç kopyala seçeneğini gördüğünüzde, py-vm2 sanal makine oturumuna geri dönün ve Yetkilendirme kodunu girin: alanına kopyaladığınız kodu yapıştırın ve kimlik doğrulama için Enter tuşuna basın.
- Şimdi Vertex Gemini API'ye bağlanıp bağlanamayacağımızı görmek için hızlı bir test yapalım. Bu komut, us-central1-aiplatform.googleapis.com adresine 4 ping gönderir. Böylece API'nin herkese açık adresinden yanıt alırız.
ping -c 4 us-central1-aiplatform.googleapis.com
- Bu sanal makineyi daha sonra test etmek için tekrar geleceğiz. 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 adresi kullanabiliriz.
- 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ı için 192.168.255.250 (
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ündeki 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 = ""
}
- Cloud Shell terminaline geçin ve
terraform-build
klasöründe olduğunuzdan emin olun. Ardındanterraform init
çalıştırın.terraform plan
çalıştırdığınızda 2 öğenin ekleneceğini görürsünüz.
Ardındanterraform apply
çalıştırın ve IP ile PSC Google API'leri uç noktasını oluşturmak içinyes
yazın. - 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: IP adresi üzerinden uç nokta bağlantısını doğrulama
Gemini'ye bağlanmak için özel uç noktayı kullanarak bağlanalım.
- Sanal makine örneği py-vm1'e gidin. SSH'yi seçin ve sanal makineye SSH ile bağlanın
sudo -i
yazarak root erişimi elde etme- PSC uç noktasını test etmek için yalnızca bu tek örneği 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
ping
komutunu kullanarak us-central1-aiplatform.googleapis.com adresine giden bağlantı yolunu kontrol edin. Bu işlem, ana makine dosyalarına girdiğiniz IP adresine ping gönderir. Bu bir PSC uç noktasıdır ve ping'leriniz başarısız olur.
ping -c 2 us-central1-aiplatform.googleapis.com
- Konsola geri 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 ile bağlanın
sudo -i
yazarak root erişimi elde etme- 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
- Şimdi py-vm1 sanal makine örneğinin ilk SSH örneğine geri dönün.
- Aşağıdakileri kullanarak env'yi etkinleştirin:
cd py-gem-env
source env/bin/activate
- Şimdi Python'u test edelim. ipython arayüzünü etkinleştirmek için
ipython
yazın. Bu kez trafik PSC uç noktasından geçer.
ipython
- Ardından aşağıdakileri kopyalayıp yapıştırın. Bu komutla Gemini'ye "Google logosunun tüm renkleri nelerdir?" ve "Niagara Şelalesi'ni tanımla" diye sorabilirsiniz.
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))
- Çalıştırmak ve sonucu görmek için enter tuşuna basın.
- py-vm1 sanal makine örneğinin ikinci örneğine geri dönün. TCPDUMP sonucunu göreceksiniz. us-central1-aiplatform.googleapis.com adresine bağlanmak için sanal makinenin IP adreslerinin yanı sıra PSC uç noktası IP adresinin de gösterildiğini göreceksiniz.
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
- 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ı)
Özel DNS'yi kullanarak PSC uç noktasını işaretlemek için manuel bir DNS girişi oluşturabilirsiniz. Bu, atanan tüm ağları etkiler.
- Ağ hizmetleri'ne gidin ve Cloud DNS'yi seçin.
- 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, **HİZMET-UÇ-NOKTASI.p.googleapis.com biçiminde PSC uç noktasına bağlanmak için kullanılabilir. Örnek:
aiplatform-pscvertexgemini.p.googleapis.com
- Bu durumda, manuel olarak özel DNS girişi oluşturmak istiyoruz. Yapılandırma aşağıdaki gibi olacaktır
- "googleapis.com" için "googleapis-private" adlı bir özel DNS alt bölgesi oluşturun ve bu alt bölgeyi "python-net" ağı ile 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.
- 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. 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."]
}
- Cloud Shell terminaline geçin ve
terraform-build
klasöründe olduğunuzdan emin olun. Ardındanterraform plan
'ü çalıştırın. Bu işlem,hangi öğelerin ekleneceğini gösterir.
Ardındanterraform apply
'yi çalıştırın ve özel DNS girişini oluşturmak içinyes
yazın. - A kaydı ve CNAME içeren bir kurulum görürsünüz.
- Ardından, py-vm2'de bu değişikliklerle bağlantıyı doğrularız.
9. 7. görev: Uç nokta bağlantısını IP adresi üzerinden doğrulama (isteğe bağlı)
Gemini'ye bağlanmak için özel uç noktayı kullanarak bağlanalım.
- Sanal makine örneği py-vm2'ye gidin. SSH'yi seçin ve sanal makineye SSH ile bağlanın
sudo -i
yazarak root erişimi elde etmeping
komutunu kullanarak us-central1-aiplatform.googleapis.com adresine giden bağlantı yolunu kontrol edin. Bu işlem, googleapis için A kaydı olan özel DNS'deki IP adresini pingler. Bu IP, PSC uç noktasıdır ve ping'leriniz başarısız olur.
ping -c 2 us-central1-aiplatform.googleapis.com
aiplatform-pscvertexgemini.p.googleapis.com
ile PSC Google API'leri için otomatik olarak oluşturulan DNS girişini kullanarak bağlantı yolunuping
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
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
- 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
sudo -i
yazarak root erişimi elde etme- 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
- Şimdi py-vm2 sanal makine örneğinin ilk SSH örneğine geri dönün.
- Aşağıdakileri kullanarak env'yi etkinleştirin:
cd py-gem-env
source env/bin/activate
- Şimdi Python'u test edelim. ipython arayüzünü etkinleştirmek için
ipython
yazın.
ipython
- Ardından aşağıdakileri kopyalayıp yapıştırın. Gemini'ye "Google logosunun tüm renkleri nelerdir?" ve "Gemini Pro'nun iki özelliği nedir?" diye sorun.
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 = "What are two features of Gemini pro"
print(get_chat_response(chat_session, prompt))
- Çalıştırmak ve sonucu görmek için enter tuşuna basın.
- Sanal makine örneği py-vm2'nin ikinci örneğine geri dönün. TCPDUMP'un sonucunu göreceksiniz. 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 yönelik tüm SSH oturumlarını kapatma
10. Temizleme
- Cloud Shell'e gidin, terraform-build dizininde olduğunuzdan emin olun
cd terraform-build
ve aşağıdaki komutu çalıştırınterraform destroy
veyes
yazın. Terraform ile projenizde oluşturduğunuz tüm kaynaklar kaldırılır.
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.
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: