Private Service Connect uç noktası üzerinden python sdk ile Vertex AI'da Anthropic Claude'a erişim

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.

103967918b096e97.png

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

  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 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.
  1. 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:

55efc1aaa7a4d3ad.png

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:

7ffe5cbb04455448.png

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: 4261e776f64ea978.png

  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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.

  1. Vertex AI'ya gidin ve Model Garden'ı seçin.
  2. Anthropic'i arayın ve Claude 3.5 Sonnet'i seçin.

4fd4338c598983d8.png

  1. Etkinleştir'i seçin. Bazı bilgileri doldurmanız gerekir. Formu doldurup Sonraki'yi seçin.
  2. Son sayfada Claude 3.5 Sonnet'i etkinleştirmek için Kabul et'i seçin b3961312feb6c383.png

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

  1. Cloud NAT'yi oluşturun.
gcloud compute routers create anthro-out-nat \
    --network $networkid \
    --region us-east1 
  1. 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.

  1. 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

  1. Sanal makine örneklerine gidin. anthro-vm ile başlayan sanal makineyi seçin. SSH'yi seçin.
  2. Anthro-vm'ye SSH ile bağlandıktan sonra sudo -i yazarak root kullanıcısını etkinleştirin.
  3. venv ortamınızı etkinleştirin:
cd py-anthro-env
source env/bin/activate
  1. Ş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
  1. 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.
  2. 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.

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-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
  1. 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
  1. Şimdi Python'u kullanalım. ipython arayüzünü etkinleştirmek için ipython yazın.
ipython

4685b31f13df54e1.png

  1. 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)
  1. Çalıştırmak ve sonucu görmek için Enter tuşuna basın.
  2. Bu istek, Vertex herkese açık API'si üzerinden Anthropic'e erişmiştir.
  3. 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.

  1. 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
  1. Oluşturulan IP'yi doğrulama
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
  1. 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
  1. 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.

  1. Anthro-vm1 sanal makine örneğine gidin. SSH'yi seçin ve sanal makineye SSH ile bağlanın
  2. sudo -i yazarak root erişimi elde etme
  3. dig 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.

  1. Ağ hizmetleri'ne gidin ve Cloud DNS'yi 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, **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
  3. Bu durumda, manuel olarak özel DNS girişi oluşturmak istiyoruz. Cloud DNS'ye gidip Alt Bölge Oluştur'u seçin.
  4. 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

  1. 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

  1. 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

  1. A kaydı ve CNAME içeren bir kurulum görürsünüz. b7f122f0d1fd2850.png
  2. 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.

  1. anthro-vm sanal makine örneğine gidin. SSH'yi seçin ve sanal makineye SSH ile bağlanın
  2. sudo -i yazarak root erişimi elde etme
  3. ping 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
  1. aiplatform-pscanthrovertex.p.googleapis.com ile PSC Google API'leri için otomatik olarak oluşturulan DNS girişini kullanarak bağlantı yolunu 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-pscanthrovertex.p.googleapis.com
  1. 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
  1. 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
  2. sudo -i yazarak root erişimi elde etme
  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-east5-aiplatform.googleapis.com
  1. Şimdi anthro-vm 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. 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)
  1. Çalıştırmak ve sonucu görmek için enter tuşuna basın.
  2. 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.