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, önce herkese açık internet üzerinden bir sanal makine örneğinde çalışan Python SDK'sı aracılığıyla Vertex'teki Anthropic Claude'a erişeceksiniz.
Ardından, Googleapis için bir Private Service Connect uç noktası oluşturur ve Vertex API'ye bağlanmak için özel uç noktasını kullanacak şekilde trafik akışını değiştirirsiniz.
Bu laboratuvarda aşağıdaki kalıbı oluşturacaksınız.
Şekil 1.
2. Hedefler
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 Anthropic Claude sohbet oturumuna bağlanma
- PSC uç noktasını Googleapis'e bağlanacak şekilde yapılandırma
- Manuel DNS girişlerini yapılandırma
- Googleais'e bağlantı yolunu doğrulama
Laboratuvar kurulumu
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 ihtiyacınız olan 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: Ortam Kurulumu
Güvenlik duvarı kuralları içeren özel bir VPC oluşturacağız. Halihazırda bir VPC ve projeniz varsa bu bölümü atlayabilirsiniz.
Konsolunuzun sağ üst kısmındaki Cloud Shell'i açın. Ardından aşağıdaki gibi yapılandırın:
- Bu laboratuvarda kullanacağımız API'lerden bazılarını etkinleştirme
gcloud services enable dns.googleapis.com gcloud services enable aiplatform.googleapis.com gcloud services enable servicedirectory.googleapis.com
- Bazı değişkenleri ayarlayın. Bu değişkenler, özel VPC'nin proje kimliği ve ağ kimliğidir (VPC'yi 4. adımda oluşturacaksınız).
projectid=$(gcloud config get-value project) networkid=anthropic-net echo $projectid echo $networkid clear
- Ardından anthropic-net adlı özel bir VPC oluşturun.
gcloud compute networks create $networkid \ --project=$projectid \ --subnet-mode=custom \ --mtu=1460 \ --bgp-routing-mode=global
- Yeni VPC'de vm1-subnet alt ağını oluşturun
gcloud compute networks subnets create vm-subnet \ --project=$projectid --range=10.0.88.0/24 \ --stack-type=IPV4_ONLY --network=$networkid \ --region=us-east1
- VPC'nize ICMP güvenlik duvarı kuralı ekleme
gcloud compute firewall-rules create $networkid-allow-icmp --project=$projectid \ --network=$networkid \ --description="Allows ICMP connections from any source to any instance on the network." \ --direction=INGRESS \ --priority=65534 \ --source-ranges=0.0.0.0/0 \ --action=ALLOW \ --rules=icmp
- VPC'nize SSH güvenlik duvarı kuralı ekleme
gcloud compute firewall-rules create $networkid-allow-ssh \ --project=$projectid \ --network=$networkid \ --description="Allows TCP connections from any source to any instance on the network using port 22." \ --direction=INGRESS --priority=65534 \ --source-ranges=0.0.0.0/0 --action=ALLOW \ --rules=tcp:22
4. 2. görev: Vertex model bahçesinde Anthropic'i etkinleştirme
İnternete giden harici erişim izni vermemiz gerekiyor. Bu nedenle, bir Cloud NAT ağı geçidi oluşturup ekleyelim.
- Vertex AI'ya gidin ve Model Garden'ı seçin.
- Anthropic'i arayın ve Claude 3.5 Sonnet'i seçin.
- Etkinleştir'i seçin. Bazı bilgileri doldurmanız gerekir. Formu doldurup Sonraki'yi seçin.
- Son sayfada Claude 3.5 Sonnet'i etkinleştirmek için Kabul et'i seçin
5. 3. görev: 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'de aşağıdaki komutları kullanın
- Cloud NAT'yi oluşturun.
gcloud compute routers create anthro-out-nat \ --network $networkid \ --region us-east1
- Cloud NAT ağ geçidini oluşturun.
gcloud compute routers nats create anthro-out-nat-gw \
--router-region us-east1 \
--router anthro-out-nat \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
Şimdi Python SDK'sı aracılığıyla Vertex AI'daki Anthropic'e erişmek için bir sanal makine oluşturalım.
Aşağıdaki paketlerin yüklü olduğu bir sanal makine oluşturacağız.
- Aynı Cloud Shell oturumunda aşağıdakileri kullanarak anthro-vm'yi oluşturun.
gcloud compute instances create anthro-vm \
--project=$projectid \
--zone=us-east1-b \
--network-interface=stack-type=IPV4_ONLY,subnet=vm-subnet,no-address,network=$networkid \
--metadata startup-script="#! /bin/bash
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-anthro-env
cd ~/py-anthro-env
python3 -m venv env
source env/bin/activate
pip install -U ipython google-cloud-aiplatform 'anthropic[vertex]'"
Herkese açık IP adresi olmayan bir sanal makine oluşturulduğunu görürsünüz. Şimdi sanal makinenin
6. 4. görev: Sanal makineyi yapılandırma ve test etme
- Sanal makine örneklerine gidin. anthro-vm ile başlayan sanal makineyi seçin. SSH'yi seçin.
- Anthro-vm'ye SSH ile bağlandıktan sonra
sudo -i
yazarak root kullanıcısını etkinleştirin. - venv ortamınızı etkinleştirin:
cd py-anthro-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 seçeneğini gördüğünüzde vm anthro-vm 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-east5-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-east5-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.
; <<>> DiG 9.16.48-Debian <<>> us-east5-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-east5-aiplatform.googleapis.com. IN A
;; ANSWER SECTION:
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.210.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.211.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.212.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.213.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.215.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.216.95
us-east5-aiplatform.googleapis.com. 300 IN A 108.177.12.95
us-east5-aiplatform.googleapis.com. 300 IN A 108.177.13.95
us-east5-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 komutla Claude'a "2024 Olimpiyatları nerede düzenlenecek?" diye sorulur. . Not:
YOUR-Project-ID-Here
yerine proje kimliğinizin adını yazın.
from anthropic import AnthropicVertex
project_id = "YOUR-Project-ID-Here"
region = "us-east5"
client = AnthropicVertex(project_id=project_id, region=region)
message = client.messages.create(
model="claude-3-5-sonnet@20240620",
max_tokens=100,
messages=[
{
"role": "user",
"content": "Where is the olympics being held in 2024!",
}
],
)
print(message)
- Çalıştırmak ve sonucu görmek için Enter tuşuna basın.
- Bu istek, Vertex herkese açık API'si üzerinden Anthropic'e erişmiştir.
- SSH oturumunu kapatın ve devam edelim.
7. 5. görev: googleapis için PSC uç noktasını oluşturma
Vertex API uç noktamıza özel bağlantıyı etkinleştirmek için googleapis için bir Private Service Connect uç noktası oluşturacağız. Bu sayede, trafiği ihtiyacımız olan googleapis'ye (bu durumda Vertex Gemini) yönlendirmek için atadığımız özel bir IP adresi kullanabiliriz.
- Henüz açık değilse Cloud Shell'i açın. PSC uç noktası için bir IP oluşturun. Bu örnekte 192.168.255.230 adresini kullanacağız.
gcloud compute addresses create anthro-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=192.168.255.230 \
--network=$networkid
- Oluşturulan IP'yi doğrulama
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
- Ardından PSC uç noktasını oluşturun
gcloud compute forwarding-rules create pscanthrovertex \
--global \
--network=$networkid \
--address=anthro-ip \
--target-google-apis-bundle=all-apis
- Bu işlem, bir uç nokta ve hizmet dizini girişi oluşturur. Uç noktanın varlığını doğrulama
gcloud compute forwarding-rules describe pscanthrovertex --global
8. 6. görev: Otomatik hizmet dizini bölgesi aracılığıyla uç nokta bağlantısını doğrulama
Gemini'ye bağlanmak için özel uç noktayı kullanarak bağlanalım.
- Anthro-vm1 sanal makine örneğine gidin. SSH'yi seçin ve sanal makineye SSH ile bağlanın
sudo -i
yazarak root erişimi elde etmedig
komutunu kullanarak aiplatform-pscanthrovertex.p.googleapis.com adresine giden bağlantı yolunu kontrol edin. PSC uç noktasının IP'sini görürsünüz.
dig aiplatform-pscanthrovertex.p.googleapis.com
9. 7. görev: 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 DNS girişi oluşturabilirsiniz. Bu işlem, 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 biçiminde PSC uç noktasına bağlanmak için kullanılabilir.p.googleapis.com Örnek
aiplatform-pscvertexgemini.p.googleapis.com
- Bu durumda, manuel olarak özel DNS girişi oluşturmak istiyoruz. Cloud DNS'ye gidip Alt Bölge Oluştur'u seçin.
- Aşağıdaki gibi yapılandırın
Yapılandırma | Ad |
Alt bölge türü | Gizli |
Alt bölge adı | googleapis-private |
DNS adı | googleapis.com |
Ağ ekle (eklediğinizde bitti'yi seçin) | anthropic-net |
Seçimi tamamlamak için | Oluştur |
- A kaydı eklemek için Bölge ayrıntıları alanında Standart ekle'yi seçin.
Yapılandırma | Ad |
Kaynak kaydı türü | A |
IPv4 adresi (uç noktanın IP adresini ekleyin) | 192.168.255.230 |
Seçimi tamamlamak için | Oluştur |
- Bölge ayrıntıları alanında CNAME kaydı eklemek için Standart ekle'yi seçin.
Yapılandırma | Ad |
DNS adı | * |
Kayıt kaynağı türü | CNAME |
Kurallı ad 1 | googleapis.com |
Seçimi tamamlamak için | Oluştur |
- A kaydı ve CNAME içeren bir kurulum görürsünüz.
- Ardından, anthro-vm üzerinde bu değişikliklerle bağlantıyı doğrularız.
10. 8. 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.
- anthro-vm sanal makine örneğine gidin. SSH'yi seçin ve sanal makineye SSH ile bağlanın
sudo -i
yazarak root erişimi elde etmeping
komutunu kullanarak us-east5-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-east5-aiplatform.googleapis.com
aiplatform-pscanthrovertex.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-pscanthrovertex.p.googleapis.com
dig
komutunu kullanarak us-east5-aiplatform.googleapis.com adresine giden bağlantı yolunu kontrol edin. Bu, PSC uç noktasının IP adresi olmalıdır.
dig us-east5-aiplatform.googleapis.com
- Konsola geri dönün ve anthro-vm 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-east5-aiplatform.googleapis.com
- Şimdi anthro-vm 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. Bu komutla Claude'a "Roti nedir?" sorusunu sorarsınız. Not:
YOUR-Project-ID-Here
yerine proje kimliğinizin adını yazın.
from anthropic import AnthropicVertex
project_id = "YOUR-Project-ID-Here"
region = "us-east5"
client = AnthropicVertex(project_id=project_id, region=region)
message = client.messages.create(
model="claude-3-5-sonnet@20240620",
max_tokens=100,
messages=[
{
"role": "user",
"content": "What is a roti?",
}
],
)
print(message)
- Çalıştırmak ve sonucu görmek için enter tuşuna basın.
- Anthro-vm sanal makine örneğinin ikinci örneğine geri dönün. TCPDUMP'un sonucunu göreceksiniz. Giden ve gelen trafiği ve sanal makinenin IP adresinin us-east5-aiplatform.googleapis.com adresine bağlanmak için PSC uç noktası IP adresini kullandığını göreceksiniz.
anthro-vm sanal makine örneğine yönelik tüm SSH oturumlarını kapatın
11. Tebrikler
Tebrikler, hem herkese açık API adresini hem de Googleapis için Private Service Connect uç noktasını kullanarak Vertex'teki Anthropic'e başarıyla bağlandınız. Bu işlev, özel API bağlantısını (ara bağlantı, bulutlar arası ara bağlantı ve VPC) üzerinden bağlı olan şirket içi/diğer bulut ortamınıza genişletebilir.
Temizleme
gcloud compute instances delete anthro-vm --zone=us-east1-b --quiet
gcloud compute routers nats delete anthro-out-nat-gw --router=anthro-out-nat --region=us-east1 --quiet
gcloud compute routers delete anthro-out-nat --region=us-east1 --quiet
gcloud compute firewall-rules delete anthropic-net-allow-icmp anthropic-net-allow-ssh --quiet
gcloud compute forwarding-rules delete pscanthrovertex --global
gcloud dns record-sets delete googleapis.com. --zone googleapis-private --type A
gcloud dns record-sets delete *.googleapis.com --zone googleapis-private --type CNAME
gcloud dns managed-zones delete googleapis-private
gcloud compute addresses delete anthro-ip --global
gcloud compute networks subnets delete vm-subnet --region=us-east1 --quiet
gcloud compute networks delete anthropic-net --quiet
Vertex AI ağ iletişimi hakkında daha fazla bilgi edinebilirsiniz.