Anthropic Claude Opus 4.5 e Gemini 3 su Vertex AI con l'SDK Python tramite l'endpoint Private Service Connect

1. Panoramica

È possibile accedere all'API Vertex AI su internet, ma nella tua azienda potresti voler accedere all'API Vertex AI in privato senza passare da internet. In questo lab accederai prima ad Anthropic Claude Opus 4.5 e Gemini 3 Pro su Vertex tramite l'SDK Python in esecuzione su un'istanza VM tramite internet pubblico.

Poi creerai un endpoint Private Service Connect per Googleapis e modificherai il flusso di traffico in modo che utilizzi l'endpoint privato per connettersi all'API Vertex.

L'esempio di codice Python prende le domande di input, le passa a Claude Opus per generare una risposta, l'output viene passato a Gemini Pro 3 per creare un riepilogo del testo e generare un'immagine.

In questo lab creerai il seguente pattern.

Figura 1.

c8f37e193349bfd6.png

2. Obiettivi

In questo lab imparerai a:

  • Configura l'istanza VM per utilizzare l'SDK Python
  • Attivare la scheda del modello Anthropic in Vertex AI
  • Connettiti ad Anthropic Claude Opus 4.5 e Gemini 3 Pro tramite script Python
  • Configurare l'endpoint PSC per la connessione a Googleapis
  • Configurare le voci DNS manuali
  • Verifica il percorso di connettività a Googleais
  • Esegui lo script Python per eseguire query sui modelli

Configurazione del lab

Configurazione dell'ambiente autonoma

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

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Il nome del progetto è il nome visualizzato per i partecipanti a questo progetto. È una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarlo.
  • L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo l'impostazione). La console Cloud genera automaticamente una stringa univoca, di solito non ti interessa di cosa si tratta. Nella maggior parte dei codelab, dovrai fare riferimento all'ID progetto (in genere identificato come PROJECT_ID). Se non ti piace l'ID generato, puoi generarne un altro casuale. In alternativa, puoi provare a crearne uno e vedere se è disponibile. Non può essere modificato dopo questo passaggio e rimane per tutta la durata del progetto.
  • Per tua informazione, esiste un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
  1. Successivamente, devi abilitare la fatturazione in Cloud Console per utilizzare le risorse/API Cloud. Completare questo codelab non costa molto, se non nulla. Per arrestare le risorse ed evitare l'addebito di costi oltre a quelli previsti da questo tutorial, puoi eliminare le risorse che hai creato o il progetto. I nuovi utenti di Google Cloud possono usufruire del programma prova senza costi di 300$.

Avvia Cloud Shell

Anche se Google Cloud può 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:

Attiva Cloud Shell

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere un risultato simile a questo:

Screenshot del terminale Google Cloud Shell che mostra che l'ambiente è connesso

Questa macchina virtuale è caricata con 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 di rete e l'autenticazione. Tutto il lavoro in questo codelab può essere svolto all'interno di un browser. Non devi installare nulla.

3. Configura ambiente

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

Apri Cloud Shell, che si trova in alto a destra nella console. e configura come segue: b51b80043d3bac90.png

  1. Abilita 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 del VPC personalizzato (creerai il VPC 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 nel nuovo 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 regole firewall ICMP, SSH e HTTP al tuo 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

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

gcloud compute firewall-rules create $networkid-allow-web \
--project=$projectid \
--network=$networkid \
--description="Allows TCP connections on port 8080." \
--direction=INGRESS --priority=1000 \
--source-ranges=0.0.0.0/0 --action=ALLOW \
--rules=tcp:8080

4. Attivare Anthropic in Model Garden di Vertex

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

  1. Vai alla dashboard di Vertex AI e seleziona Model Garden.
  2. Cerca Anthropic e seleziona Claude Opus 4.5.

d8937fa7d5e216b7.png 3. Seleziona Attiva, dovrai compilare alcune informazioni. Compila il modulo e seleziona Avanti. Nell'ultima pagina, seleziona Accetto per attivare Claude 4.5 Opus.

6ccda2a237000dea.png

  1. 84fbda607163ab9a.png

5. Crea gateway NAT e VM

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

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 di 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-genai 'anthropic[vertex]'"

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

6. Configura la VM e testala

  1. In Google Cloud Shell, esegui SSH nella nuova VM denominata anthro-vm.
gcloud compute ssh anthro-vm \
    --project=$projectid \
    --zone=us-east1-b \
    --tunnel-through-iap \
    -- -L 8080:localhost:8080
  1. Una volta eseguito l'accesso SSH a anthro-vm,attiva l'ambiente venv:
sudo -i -- bash -c 'cd py-anthro-env && source env/bin/activate && exec bash'
  1. Ora autentichiamolo per eseguire alcuni test in un secondo momento. Esegui questo comando nella VM e premi y quando richiesto.
gcloud auth application-default login
  1. Copia quindi l'URL che inizia con https://, apri una nuova scheda nella finestra del browser del lab e incolla l'URL. Accetta le richieste.
  2. Quando vedi la seguente selezione di copia, torna alla sessione della VM anthro-vm e, per Inserisci codice di autorizzazione, incolla il codice che hai copiato e premi Invio per l'autenticazione.

b703db7aa2aa286a.png

  1. Ora eseguiamo un rapido test per verificare se riusciamo a connetterci all'API Vertex Gemini.
dig *-aiplatform.googleapis.com
  1. Dovresti vedere qualcosa di simile (gli indirizzi saranno diversi). Tieni presente che il percorso avviene tramite indirizzi IP pubblici, poiché l'API è un'API pubblica.
; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> *-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3728
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;*-aiplatform.googleapis.com.   IN      A

;; ANSWER SECTION:
*-aiplatform.googleapis.com. 300 IN     A       172.217.204.95
*-aiplatform.googleapis.com. 300 IN     A       172.217.203.95
*-aiplatform.googleapis.com. 300 IN     A       173.194.215.95
*-aiplatform.googleapis.com. 300 IN     A       142.250.98.95
*-aiplatform.googleapis.com. 300 IN     A       173.194.217.95
*-aiplatform.googleapis.com. 300 IN     A       142.251.107.95
*-aiplatform.googleapis.com. 300 IN     A       74.125.196.95
  1. Ora utilizziamo Python. Digita ipython per attivare l'interfaccia ipython.
ipython

845ef4291429888a.png

  1. Ora copia e incolla quanto segue. In questo modo, viene chiesto a Claude Opus 4.5 "Quali sono i passaggi chiave per creare l'AI agentica?" quindi prende l'output e lo passa a Gemini 3 Pro, che crea un riepilogo e genera un'immagine che salva sulla VM.
import os
import sys
import google.auth
from pathlib import Path
from google import genai
from google.genai import types
from anthropic import AnthropicVertex

# 1. Setup & Auth
print("--- Authenticating ---")
creds, project_id = google.auth.default()
LOCATION = "global"

# 2. Initialize Clients
print(f"--- Initializing Clients for Project: {project_id} ---")
google_client = genai.Client(vertexai=True, location=LOCATION, project=project_id)
claude_client = AnthropicVertex(region=LOCATION, project_id=project_id)

# 3. Define the Question
question = "What are the key steps to building Agentic AI?"
print(f"\n--- Asking Claude: {question} ---")

# 4. Get Claude's Research
msg = claude_client.messages.create(
    model="claude-opus-4-5@20251101",
    max_tokens=2048,
    messages=[{"role": "user", "content": question}]
)
claude_text = msg.content[0].text
print(f"✓ Claude Answered ({len(claude_text)} chars)")

# 5. Send to Gemini 3 for Image & Summary
print("\n--- Sending to Gemini 3 (Image + Text) ---")
gemini_prompt = f"""
I am providing you with a technical explanation generated by Claude Opus 4.5.
1. READ the text below.
2. GENERATE a concise, bulleted executive summary.
3. CREATE a high-quality, futuristic illustration for a tech blog header (16:9).

--- INPUT TEXT ---
{claude_text}
"""

response = google_client.models.generate_content(
    model="gemini-3-pro-image-preview",
    contents=gemini_prompt,
    config=types.GenerateContentConfig(
        response_modalities=['TEXT', 'IMAGE'],
        temperature=0.7
    )
)

# 6. Save and Display Results
print("\n--- Results ---")
for part in response.parts:
    if part.text:
        print(f"\n[SUMMARY]:\n{part.text.strip()[:500]}...\n(Summary truncated for brevity)")
    elif image := part.as_image():
        filename = "gemini_agentic_ai.png"
        image.save(filename)
        print(f"\n✓ IMAGE SAVED to: {os.path.abspath(filename)}")
  1. Premi Invio due volte per eseguire il comando e visualizzare il risultato del testo.
  2. Per visualizzare l'immagine, dobbiamo abilitare un servizio web in Python. Esegui il seguente comando nella sessione ipython
!python3 -m http.server 8080
  1. Ora vai all'opzione di anteprima web in Cloud Shell, seleziona Anteprima sulla porta 8080 6dcb2bf9a08aacaf.png
  2. Nella sessione web aperta, seleziona gemini_agentic_ai.png per visualizzare l'immagine generata. (Immagine di esempio generata dall'AI riportata di seguito)
    fdcb79d8410dadc5.png
  3. In Cloud Shell, per uscire dalla sessione premi Ctrl+C, poi digita exit e premi Invio (ripeti tre volte) per tornare alla home page di Cloud Shell.
  4. Continuiamo.

7. Crea l'endpoint PSC per googleapis

Per abilitare la connettività privata al nostro endpoint API Vertex, creeremo un endpoint Private Service Connect per googleapis. In questo modo potremo utilizzare un indirizzo IP privato che assegniamo per indirizzare il traffico alle API di Google di cui abbiamo bisogno, in questo caso Vertex Gemini.

  1. Apri Cloud Shell se non è già aperta. Crea un 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. Verifica che l'IP sia stato creato
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
  1. Poi 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 di Service Directory. Verifica l'esistenza dell'endpoint
gcloud compute forwarding-rules describe pscanthrovertex --global

8. Verifica la connettività dell'endpoint tramite la zona Service Directory automatica

Connettiamoci utilizzando l'endpoint privato per connetterci a Gemini.

  1. Vai all'istanza VM anthro-vm1. Seleziona SSH e accedi alla VM tramite SSH
  2. Controlla il percorso di connettività a aiplatform-pscanthrovertex.p.googleapis.com utilizzando il comando dig. Dovresti visualizzare l'IP dell'endpoint PSC 192.168.255.230
dig aiplatform-pscanthrovertex.p.googleapis.com
  1. Esci da tutte le sessioni SSH

9. Crea una voce DNS manuale per googleapis

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

Esegui questi comandi in Cloud Shell.

  1. Crea una zona DNS privata per googleapis.com e collegala alla rete anthropic-net.
gcloud dns managed-zones create googleapis-private \
    --description="Private DNS zone for googleapis.com" \
    --dns-name="googleapis.com." \
    --visibility="private" \
    --networks="anthropic-net"
  1. Crea un record A che mappa il dominio radice all'IP dell'endpoint Private Service Connect (192.168.255.230)
gcloud dns record-sets create "googleapis.com." \
    --zone="googleapis-private" \
    --type="A" \
    --ttl="300" \
    --rrdatas="192.168.255.230"
  1. Crea un record CNAME con caratteri jolly per reindirizzare tutti i sottodomini (ad es. aiplatform.googleapis.com) al record A principale
gcloud dns record-sets create "*.googleapis.com." \
    --zone="googleapis-private" \
    --type="CNAME" \
    --ttl="300" \
    --rrdatas="googleapis.com."
  1. Elenca i set di record nella zona per verificare che il record A e il record CNAME siano stati creati correttamente.
gcloud dns record-sets list --zone="googleapis-private"
  1. Nella visualizzazione della console dovrebbe avere questo aspetto. Dovresti visualizzare una configurazione con un record A e un record CNAME come questo: vedi a51a8b8caa7a0f1e.png
  2. Successivamente, verifichiamo la connettività con queste modifiche su anthro-vm

10. Verifica la connettività dell'endpoint tramite l'indirizzo IP

Connettiamoci utilizzando l'endpoint privato per connetterci a Gemini.

  1. In Google Cloud Shell, esegui SSH nella nuova VM denominata anthro-vm.
gcloud compute ssh anthro-vm \
    --project=$projectid \
    --zone=us-east1-b \
    --tunnel-through-iap \
    -- -L 8080:localhost:8080
  1. Una volta eseguito l'accesso SSH a anthro-vm,attiva l'ambiente venv:
sudo -i -- bash -c 'cd py-anthro-env && source env/bin/activate && exec bash'
  1. Ora eseguiamo un dig per verificare se riusciamo a connetterci all'API Vertex Gemini.
dig *-aiplatform.googleapis.com
  1. Dovresti vedere qualcosa di simile (l'indirizzo sarà diverso). Tieni presente che il percorso avviene tramite gli indirizzi IP dell'endpoint PSC.
; <<>> DiG 9.18.41-1~deb12u1-Debian <<>> *-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33703
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;*-aiplatform.googleapis.com.   IN      A

;; ANSWER SECTION:
*-aiplatform.googleapis.com. 300 IN     CNAME   googleapis.com.
googleapis.com.         300     IN      A       192.168.255.230

;; Query time: 8 msec
;; SERVER: 169.254.169.254#53(169.254.169.254) (UDP)
;; WHEN: Sat Nov 29 15:19:15 UTC 2025
;; MSG SIZE  rcvd: 86
  1. Utilizzo del comando ping. Possiamo fare un rapido test. Nota: questo IP è un endpoint PSC e i ping non andranno a buon fine.
ping -c 2 aiplatform.googleapis.com
  1. Ora utilizziamo Python. Digita ipython per attivare l'interfaccia ipython.
ipython

845ef4291429888a.png

  1. Ora copia e incolla quanto segue. In questo caso, Claude Opus 4.5 risponde alla domanda "Dammi una ricetta passo passo per preparare un roti per un principiante?". quindi prende l'output e lo passa a Gemini 3 Pro, che crea un riepilogo e genera un'immagine che salva sulla VM.
import os
import sys
import google.auth
from pathlib import Path
from google import genai
from google.genai import types
from anthropic import AnthropicVertex

# 1. Setup & Auth
print("--- Authenticating ---")
creds, project_id = google.auth.default()
LOCATION = "global"

# 2. Initialize Clients
print(f"--- Initializing Clients for Project: {project_id} ---")
google_client = genai.Client(vertexai=True, location=LOCATION, project=project_id)
claude_client = AnthropicVertex(region=LOCATION, project_id=project_id)

# 3. Define the Question
question = "Give me a step by step recipe to make a roti for a beginner?"
print(f"\n--- Asking Claude: {question} ---")

# 4. Get Claude's Research
msg = claude_client.messages.create(
    model="claude-opus-4-5@20251101",
    max_tokens=2048,
    messages=[{"role": "user", "content": question}]
)
claude_text = msg.content[0].text
print(f"✓ Claude Answered ({len(claude_text)} chars)")

# 5. Send to Gemini 3 for Image & Summary
print("\n--- Sending to Gemini 3 (Image + Text) ---")
gemini_prompt = f"""
I am providing you with a technical explanation generated by Claude Opus 4.5.
1. READ the text below.
2. GENERATE a concise, bulleted executive summary.
3. CREATE a high-quality, futuristic illustration for a tech blog header (16:9).

--- INPUT TEXT ---
{claude_text}
"""

response = google_client.models.generate_content(
    model="gemini-3-pro-image-preview",
    contents=gemini_prompt,
    config=types.GenerateContentConfig(
        response_modalities=['TEXT', 'IMAGE'],
        temperature=0.7
    )
)

# 6. Save and Display Results
print("\n--- Results ---")
for part in response.parts:
    if part.text:
        print(f"\n[SUMMARY]:\n{part.text.strip()[:500]}...\n(Summary truncated for brevity)")
    elif image := part.as_image():
        filename = "cookingroti.png"
        image.save(filename)
        print(f"\n✓ IMAGE SAVED to: {os.path.abspath(filename)}")
  1. Premi Invio due volte per eseguire il comando e visualizzare il risultato del testo.
  2. Per visualizzare l'immagine, dobbiamo abilitare un servizio web in Python, quindi esegui il seguente comando nella sessione ipython
!python3 -m http.server 8080
  1. Ora vai all'opzione di anteprima web in Cloud Shell, seleziona Anteprima sulla porta 8080
  2. Seleziona cookingroti.png per visualizzare l'immagine generata. (Esempio seguente generato dall'AI) bcf43fffede275cb.png
  3. In Cloud Shell, per uscire dalla sessione premi Ctrl+C, poi digita exit e premi Invio (ripeti tre volte) per tornare alla home page di Cloud Shell.

11. Complimenti

Congratulazioni, ti sei divertito e hai eseguito la connessione a Anthropic Claude Opus 4.5 e Gemini 3 Pro su Vertex utilizzando sia l'indirizzo API pubblico sia in privato utilizzando l'endpoint Private Service Connect per Googleapis. Questa funzionalità può estendere la connettività API privata al tuo ambiente on-premise/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 anthropic-net-allow-web --quiet

gcloud compute forwarding-rules delete pscanthrovertex --global --quiet

gcloud dns record-sets delete googleapis.com. --zone googleapis-private --type A --quiet

gcloud dns record-sets delete *.googleapis.com --zone googleapis-private --type CNAME --quiet

gcloud dns managed-zones delete googleapis-private --quiet

gcloud compute addresses delete anthro-ip --global --quiet

gcloud compute networks subnets delete vm-subnet --region=us-east1 --quiet

gcloud compute networks delete anthropic-net --quiet

Prossimi passi/Scopri di più

Puoi leggere di più sul networking di Vertex AI.

Codelab: accedi alla chat Gemini 3 Pro utilizzando Python SDK tramite l'endpoint Private Service Connect

Codelab: Building AI Agents with ADK:The Foundation

Segui il prossimo lab

Continua la Quest con Google Cloud e dai un'occhiata a questi altri lab Google Cloud Skills Boost: