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

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 Anthropic Claude di Vertex melalui python sdk yang berjalan di instance VM melalui internet publik.

Kemudian, Anda akan membuat endpoint Private Service Connect ke Googleapis, dan mengubah alur traffic untuk menggunakan endpoint pribadi guna terhubung ke Vertex API.

Dalam lab ini, Anda akan membuat pola berikut.

Gambar 1.

103967918b096e97.png

2. Tujuan

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

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

Penyiapan lab

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

Kita akan membuat VPC kustom dengan aturan Firewall. Jika sudah memiliki VPC dan Project, Anda dapat melewati bagian ini.

Buka Cloud Shell yang terletak di bagian atas konsol di sebelah kanan. Lalu konfigurasikan sebagai berikut: 4261e776f64ea978.png

  1. Mengaktifkan beberapa API yang akan kita gunakan di lab ini
gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable servicedirectory.googleapis.com
  1. Tetapkan beberapa variabel. Variabel ini adalah Project ID dan Network ID VPC kustom (Anda akan membuat VPC di langkah 4).
projectid=$(gcloud config get-value project)
networkid=anthropic-net 
echo $projectid
echo $networkid
clear
  1. Sekarang buat VPC kustom bernama anthropic-net.
gcloud compute networks create $networkid \
--project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
  1. Membuat vm1-subnet di VPC baru
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. Menambahkan aturan firewall ICMP ke VPC
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. Menambahkan aturan firewall SSH ke VPC
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. Tugas 2. Mengaktifkan Anthropic di model garden Vertex

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

  1. Buka Vertex AI, lalu pilih Model Garden
  2. Telusuri Anthropic dan pilih Claude 3.5 Sonnet

4fd4338c598983d8.png

  1. Pilih Aktifkan, Anda akan diminta untuk mengisi beberapa info. Isi formulir, lalu pilih Berikutnya
  2. Di halaman terakhir, pilih Setuju untuk mengaktifkan Claude 3.5 Sonnet b3961312feb6c383.png

5. Tugas 3. Membuat gateway NAT dan VM

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

Di Cloud Shell, gunakan perintah berikut

  1. Buat Cloud NAT.
gcloud compute routers create anthro-out-nat \
    --network $networkid \
    --region us-east1 
  1. Buat gateway Cloud NAT.
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

Sekarang, mari kita buat satu VM untuk mengakses Anthropic di Vertex AI melalui Python SDK.

Kita akan membuat VM untuk diuji dengan menginstal paket berikut

  1. Dalam sesi cloud shell yang sama, buat anthro-vm menggunakan perintah berikut.
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]'"

Anda akan melihat VM yang dibuat tanpa alamat IP publik. Sekarang, mari kita konfigurasikan

6. Tugas 4. Mengonfigurasi VM dan menguji

  1. Buka instance VM. Pilih VM yang dimulai dengan anthro-vm. Pilih SSH.
  2. Setelah Anda menerapkan SSH ke anthro-vm, aktifkan root dengan mengetik sudo -i
  3. Aktifkan lingkungan venv Anda:
cd py-anthro-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 anthro-vm 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-east5-aiplatform.googleapis.com sehingga kita akan melakukan dig ke alamat tersebut untuk melihat bagaimana rute traffic.
dig us-east5-aiplatform.googleapis.com
  1. Anda akan melihat sesuatu yang serupa (alamatnya akan berbeda). Perhatikan bahwa jalurnya melalui alamat IP publik karena API adalah API publik.
; <<>> 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. Sekarang mari kita gunakan python. Ketik ipython untuk mengaktifkan antarmuka ipython.
ipython

4685b31f13df54e1.png

  1. Sekarang, salin dan tempel kode berikut. Pertanyaan ini akan menanyakan kepada Claude "Di mana Olimpiade akan diadakan pada tahun 2024?" . Catatan: Ganti YOUR-Project-ID-Here dengan nama project ID Anda
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. Tekan enter untuk menjalankan dan melihat hasilnya.
  2. Permintaan ini mengakses Anthropic melalui API publik Vertex.
  3. Tutup sesi SSH, mari kita lanjutkan.

7. Tugas 5. Membuat endpoint PSC ke googleapis

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

  1. Buka Cloud Shell jika belum terbuka. Buat IP untuk endpoint PSC. Dalam hal ini, kita akan menggunakan 192.168.255.230.
gcloud compute addresses create anthro-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=192.168.255.230 \
    --network=$networkid
  1. Memverifikasi IP yang dibuat
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
  1. Selanjutnya, buat endpoint PSC
gcloud compute forwarding-rules create pscanthrovertex \
    --global \
    --network=$networkid \
    --address=anthro-ip \
    --target-google-apis-bundle=all-apis
  1. Tindakan ini akan membuat endpoint dan entri direktori layanan. Memverifikasi keberadaan endpoint
gcloud compute forwarding-rules describe pscanthrovertex --global

8. Tugas 6. Memverifikasi konektivitas endpoint melalui zona direktori layanan otomatis

Mari kita terhubung menggunakan endpoint pribadi untuk terhubung ke Gemini.

  1. Buka Instance VM anthro-vm1. Pilih SSH dan SSH ke VM
  2. Dapatkan akses root dengan mengetik sudo -i
  3. Periksa jalur konektivitas ke aiplatform-pscanthrovertex.p.googleapis.com menggunakan perintah dig. Anda akan melihat IP endpoint PSC
dig aiplatform-pscanthrovertex.p.googleapis.com

9. Tugas 7. Membuat entri DNS Manual ke googleapis (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. Buka Cloud DNS dan pilih Create Zone
  4. Konfigurasikan sebagai berikut

Konfigurasi

Nama

Jenis zona

Pribadi

Nama zona

googleapis-private

Nama DNS

googleapis.com

Menambahkan Jaringan (pilih selesai jika ditambahkan)

anthropic-net

Untuk menyelesaikan pemilihan

Buat

  1. Di area Detail zona, pilih Tambahkan standar untuk menambahkan data A

Konfigurasi

Nama

Jenis data resource

A

Alamat IPv4 (tambahkan alamat IP endpoint)

192.168.255.230

Untuk menyelesaikan pemilihan

Buat

  1. Di area Detail zona, pilih Tambahkan standar untuk menambahkan data CNAME

Konfigurasi

Nama

Nama DNS

*

Jenis resource data

CNAME

Nama kanonis 1

googleapis.com

Untuk menyelesaikan pemilihan

Buat

  1. Anda akan melihat penyiapan dengan data A dan CNAME seperti ini, lihat b7f122f0d1fd2850.png
  2. Selanjutnya, kita akan memverifikasi konektivitas dengan perubahan ini di anthro-vm

10. Tugas 8. Memverifikasi konektivitas endpoint melalui alamat IP (Opsional)

Mari kita terhubung menggunakan endpoint pribadi untuk terhubung ke Gemini.

  1. Buka Instance VM anthro-vm. Pilih SSH dan SSH ke VM
  2. Dapatkan akses root dengan mengetik sudo -i
  3. Periksa jalur konektivitas ke us-east5-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-east5-aiplatform.googleapis.com
  1. Periksa jalur konektivitas dengan ping menggunakan entri DNS yang dibuat secara otomatis untuk Google API PSC dengan aiplatform-pscanthrovertex.p.googleapis.com. Ini mengarah ke alamat IP endpoint PSC dan ping Anda tidak akan berhasil.
ping -c 2 aiplatform-pscanthrovertex.p.googleapis.com
  1. Periksa jalur konektivitas ke us-east5-aiplatform.googleapis.com menggunakan perintah dig. Ini harus berupa alamat IP endpoint PSC.
dig us-east5-aiplatform.googleapis.com
  1. Kembali ke konsol dan buka instance lain dari Instance VM anthro-vm. 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-east5-aiplatform.googleapis.com
  1. Sekarang, beralihlah kembali ke instance SSH pertama Instance VM anthro-vm
  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 menanyakan kepada Claude "Apa itu roti?". Catatan: Ganti YOUR-Project-ID-Here dengan nama project ID Anda
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. Tekan enter untuk menjalankan dan melihat hasilnya.
  2. Beralih kembali ke instance kedua Instance VM anthro-vm. Anda akan melihat hasil TCPDUMP. Anda akan melihat masuk dan keluar serta alamat IP VM menggunakan alamat IP endpoint PSC untuk terhubung ke us-east5-aiplatform.googleapis.com

Menutup semua sesi SSH ke Instance VM anthro-vm

11. Selamat

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

Pembersihan

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

Anda dapat membaca selengkapnya tentang jaringan Vertex AI