Accedere ad Anthropic Claude su Vertex AI con l'SDK Python tramite l'endpoint Private Service Connect

Accedere ad Anthropic Claude su Vertex AI con l'SDK Python tramite l'endpoint Private Service Connect

Informazioni su questo codelab

subjectUltimo aggiornamento: set 6, 2024
account_circleScritto da: Ammett Williams & Sampath Kumar Maddula

1. Panoramica

È possibile accedere all'API Vertex AI tramite internet, ma nella tua azienda potresti voler accedere all'API Vertex AI in privato senza utilizzare internet. In questo lab accederai innanzitutto ad Anthropic Claude su Vertex tramite l'SDK Python in esecuzione su un'istanza VM tramite la rete internet pubblica.

Poi, crea un endpoint Private Service Connect per Googleapis e modifica il flusso di traffico in modo da utilizzare l'endpoint privato per connetterti all'API Vertex.

In questo lab creerai il seguente pattern.

Figura 1.

103967918b096e97.png

2. Obiettivi

In questo lab imparerai a:

  • Configura l'istanza VM per utilizzare l'SDK Python
  • Connettiti alla chat di Claude di Anthropic tramite script Python
  • Configura l'endpoint PSC per la connessione a Googleapis
  • Configura le voci DNS manuali
  • Verifica il percorso di connettività a Google Cloud

Configurazione del lab

Configurazione dell'ambiente a tuo ritmo

  1. Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Il nome del progetto è il nome visualizzato per i partecipanti al progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarlo.
  • L'ID progetto è univoco per tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca; di solito non ti interessa quale sia. Nella maggior parte dei codelab, dovrai fare riferimento al tuo ID progetto (in genere identificato come PROJECT_ID). Se l'ID generato non ti piace, puoi generarne un altro casuale. In alternativa, puoi provare il tuo e vedere se è disponibile. Non può essere modificato dopo questo passaggio e rimane invariato per tutta la durata del progetto.
  • Per tua informazione, esiste un terzo valore, un Numero progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
  1. Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare le API/risorse Cloud. La partecipazione a questo codelab non ha costi, o quasi. Per arrestare le risorse ed evitare di incorrere in fatturazione al termine di questo tutorial, puoi eliminare le risorse che hai creato o il progetto. I nuovi utenti di Google Cloud sono idonei al programma Prova senza costi di 300$.

Avvia Cloud Shell

Sebbene Google Cloud possa essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.

Nella console Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:

55efc1aaa7a4d3ad.png

Dovrebbe richiedere solo pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere qualcosa di simile a questo:

7ffe5cbb04455448.png

Questa macchina virtuale contiene tutti gli strumenti di sviluppo di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione di rete. Tutto il lavoro in questo codelab può essere svolto in un browser. Non devi installare nulla.

3. Attività 1: Configura l'ambiente

Creeremo una VPC personalizzata con regole firewall. Se hai già un VPC e un progetto, puoi saltare questa parte.

Apri Cloud Shell in alto a destra nella console. E configura come segue: 4261e776f64ea978.png

  1. Attiva alcune delle API che utilizzeremo in questo lab
gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable servicedirectory.googleapis.com
  1. Imposta alcune variabili. Queste variabili sono l'ID progetto e l'ID rete della VPC personalizzata (la VPC verrà creata nel passaggio 4).
projectid=$(gcloud config get-value project)
networkid=anthropic-net 
echo $projectid
echo $networkid
clear
  1. Ora crea un VPC personalizzato denominato anthropic-net.
gcloud compute networks create $networkid \
--project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
  1. Crea la subnet vm1 nella nuova VPC
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. Aggiungi una regola firewall ICMP alla 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. Aggiungi una regola firewall SSH alla tua 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. Attività 2: Attivare Anthropic in Model Garden di Vertex

Dobbiamo concedere l'accesso esterno in uscita a internet, quindi creiamo un gateway Cloud NAT e agganciamolo.

  1. Vai a Vertex AI e seleziona Model Garden
  2. Cerca Anthropic e seleziona Claude 3.5 Sonnet

4fd4338c598983d8.png

  1. Seleziona Attiva, ti verrà chiesto di compilare alcune informazioni. Compila il modulo e seleziona Avanti.
  2. Nella pagina finale, seleziona Accetta per attivare Claude 3.5 Sonnet b3961312feb6c383.png

5. Attività 3: Crea gateway NAT e VM

Dobbiamo concedere l'accesso esterno in uscita a internet, quindi creiamo un gateway Cloud NAT e agganciamolo.

In Cloud Shell, utilizza i seguenti comandi

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

Ora creiamo una VM per accedere ad Anthropic su Vertex AI tramite l'SDK Python.

Creeremo una VM da testare con i seguenti pacchetti installati

  1. Nella stessa sessione Cloud Shell, crea anthro-vm utilizzando quanto segue.
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]'"

Dovresti vedere una VM creata senza indirizzi IP pubblici. Ora configuriamo

6. Attività 4: Configura la VM e testa

  1. Vai alle istanze VM. Seleziona la VM che inizia con anthro-vm. Scegli SSH.
  2. Dopo aver eseguito l'accesso con SSH a anthro-vm,attiva il ruolo root digitando sudo -i
  3. Attiva l'ambiente venv:
cd py-anthro-env
source env/bin/activate
  1. Ora autentichiamoci per eseguire alcuni test in un secondo momento. Esegui il seguente comando nella VM, premi y quando richiesto.
gcloud auth application-default login
  1. Poi copia l'URL visualizzato all'inizio con https://, apri una nuova scheda nella finestra del browser del lab e incolla l'URL. Accetta le richieste.
  2. Quando viene visualizzato il seguente messaggio, seleziona Copia, torna alla sessione VM anthro-vm e incolla il codice che hai copiato in Inserisci codice di autorizzazione, quindi premi Invio per autenticarti.

c29615cdf9324209.png

  1. Ora facciamo un rapido test per vedere se riusciamo a connetterci all'API Vertex Gemini, che utilizza us-east5-aiplatform.googleapis.com, quindi eseguiremo un dig a quell'indirizzo per vedere come viene indirizzato il traffico.
dig us-east5-aiplatform.googleapis.com
  1. Dovresti vedere qualcosa di simile (l'indirizzo sarà diverso). Tieni presente che il percorso avviene tramite indirizzi IP pubblici, poiché l'API è pubblica.
; <<>> 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. Ora utilizziamo Python. Digita ipython per attivare l'interfaccia ipython.
ipython

4685b31f13df54e1.png

  1. Ora copia e incolla quanto segue. Chiedi a Claude "Dove si terranno le Olimpiadi nel 2024?" . P.S. Sostituisci YOUR-Project-ID-Here con il nome dell'ID progetto
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. Premi Invio per eseguire il comando e visualizzare il risultato.
  2. Questa richiesta ha eseguito l'accesso ad Anthropic tramite l'API pubblica di Vertex.
  3. Chiudi la sessione SSH e continuiamo.

7. Attività 5: Crea l&#39;endpoint PSC per googleapis

Per abilitare la connettività privata all'endpoint dell'API Vertex, creeremo un endpoint Private Service Connect per googleapis. In questo modo potremo utilizzare un indirizzo IP privato che assegneremo per instradare il traffico verso googleapis di cui abbiamo bisogno, in questo caso Vertex Gemini.

  1. Apri Cloud Shell, se non è già aperto. Crea un indirizzo IP per l'endpoint PSC. In questo caso utilizzeremo 192.168.255.230.
gcloud compute addresses create anthro-ip \
   
--global \
   
--purpose=PRIVATE_SERVICE_CONNECT \
   
--addresses=192.168.255.230 \
   
--network=$networkid
  1. Verificare l'IP creato
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
  1. Crea l'endpoint PSC
gcloud compute forwarding-rules create pscanthrovertex \
   
--global \
   
--network=$networkid \
   
--address=anthro-ip \
   
--target-google-apis-bundle=all-apis
  1. Verranno creati un endpoint e una voce della directory dei servizi. Verifica l'esistenza dell'endpoint
gcloud compute forwarding-rules describe pscanthrovertex --global

8. Attività 6: Verifica la connettività dell&#39;endpoint tramite la zona della directory dei servizi automatica

Eseguiamo la connessione utilizzando l'endpoint privato per collegarci a Gemini.

  1. Vai all'istanza VM anthro-vm1. Seleziona SSH e accedi tramite SSH alla VM
  2. Accedi all'accesso root digitando sudo -i
  3. Controlla il percorso di connettività ad aiplatform-pscanthrovertex.p.googleapis.com utilizzando il comando dig. Dovresti vedere l'IP dell'endpoint PSC
dig aiplatform-pscanthrovertex.p.googleapis.com

9. Attività 7: Crea una voce DNS manuale per googleapis (facoltativo)

Puoi creare una voce DNS manuale che rimandi all'endpoint PSC utilizzando il DNS privato. Ciò influirà su tutte le emittenti che assegni.

  1. Vai a Servizi di rete e seleziona Cloud DNS.
  2. In Zone dovresti vedere una zona creata automaticamente per Private Service Connect per le API di Google, con la directory dei servizi di tipo zona. Può essere utilizzato per connettersi all'endpoint PSC con il formato **SERVICE-ENDPOINT.p.googleapis.com Esempio aiplatform-pscvertexgemini.p.googleapis.com
  3. In questo caso vogliamo creare manualmente una voce DNS privata. Vai a Cloud DNS e seleziona Crea zona.
  4. Configura come segue

Configurazione

Nome

Tipo di zona

Privato

Nome zona

googleapis-private

Nome DNS

googleapis.com

Aggiungi emittenti (seleziona Fine al termine dell'aggiunta)

anthropic-net

Per completare la selezione

Crea

  1. Nell'area Dettagli zona, seleziona Aggiungi standard per aggiungere un record A.

Configurazione

Nome

Tipo di record di risorse

A

Indirizzo IPv4 (aggiungi l'indirizzo IP dell'endpoint)

192.168.255.230

Per completare la selezione

Crea

  1. Nell'area Dettagli zona, seleziona Aggiungi standard per aggiungere un record CNAME.

Configurazione

Nome

Nome DNS

*

Tipo di risorsa record

CNAME

Nome canonico 1

googleapis.com

Per completare la selezione

Crea

  1. Dovresti vedere una configurazione con un record A e CNAME come questa vedi b7f122f0d1fd2850.png
  2. Successivamente, verifichiamo la connettività con queste modifiche su anthro-vm

10. Attività 8: (Facoltativo) Verifica la connettività dell&#39;endpoint tramite indirizzo IP

Eseguiamo la connessione utilizzando l'endpoint privato per connetterci a Gemini.

  1. Vai all'istanza VM anthro-vm. Seleziona SSH e accedi tramite SSH alla VM
  2. Accedi all'accesso root digitando sudo -i
  3. Controlla il percorso di connettività a us-east5-aiplatform.googleapis.com utilizzando il comando ping. Verrà eseguito il ping dell'indirizzo IP nel DNS privato, il record A per googleapis. Questo IP è un endpoint PSC e i ping non andranno a buon fine.
ping -c 2 us-east5-aiplatform.googleapis.com
  1. Controlla il percorso di connettività con un ping utilizzando la voce DNS creata automaticamente per le API di Google PSC con aiplatform-pscanthrovertex.p.googleapis.com. Questo punta all'indirizzo IP dell'endpoint PSC e i ping non andranno a buon fine.
ping -c 2 aiplatform-pscanthrovertex.p.googleapis.com
  1. Controlla il percorso di connettività a us-east5-aiplatform.googleapis.com utilizzando il comando dig. Deve essere l'indirizzo IP dell'endpoint PSC.
dig us-east5-aiplatform.googleapis.com
  1. Torna alla console e apri un'altra istanza dell'istanza VM anthro-vm. Seleziona SSH e accedi tramite SSH alla VM
  2. Accedi all'accesso root digitando sudo -i
  3. Esegui il seguente comando per visualizzare la connettività in un dump TCP
sudo tcpdump -i any port 53 -n or host us-east5-aiplatform.googleapis.com
  1. Ora torna alla prima istanza SSH dell'istanza VM anthro-vm
  2. Attiva l'ambiente utilizzando
cd py-gem-env
source env/bin/activate
  1. Ora proviamo Python. Digita ipython per attivare l'interfaccia ipython.
ipython
  1. Ora copia e incolla quanto segue. In questo modo chiedi a Claude "Che cos'è un roti?". P.S. Sostituisci YOUR-Project-ID-Here con il nome dell'ID progetto
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. Premi Invio per eseguire il comando e visualizzare il risultato.
  2. Torna alla seconda istanza dell'istanza VM anthro-vm. Dovresti vedere il risultato di TCPDUMP. Noterai in e out e l'indirizzo IP della VM utilizza l'indirizzo IP dell'endpoint PSC per connettersi a us-east5-aiplatform.googleapis.com

Chiudi tutte le sessioni SSH con l'istanza VM anthro-vm

11. Complimenti

Congratulazioni, hai eseguito correttamente la connessione ad Anthropic su Vertex utilizzando sia l'indirizzo API pubblico sia l'endpoint Private Service Connect per le API di Google in privato. Questa funzionalità può estendere la connettività delle API private al tuo ambiente on-premise/di altro cloud connesso tramite (Interconnect, Cross-Cloud Interconnect e VPC).

Esegui la pulizia

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

Puoi scoprire di più sulla networking di Vertex AI