Anthropic Claude Opus 4.5 e Gemini 3 na Vertex AI com SDK do Python usando o endpoint do Private Service Connect

1. Visão geral

A API Vertex AI pode ser acessada pela Internet. No entanto, na sua empresa, talvez você queira acessar a API Vertex AI de maneira particular, sem usar a Internet. Neste laboratório, você vai acessar o Anthropic Claude Opus 4.5 e o Gemini 3 Pro na Vertex usando o SDK do Python em uma instância de VM pela Internet pública.

Em seguida, você vai criar um endpoint do Private Service Connect para o Googleapis e mudar o fluxo de tráfego para usar o endpoint particular e se conectar à API Vertex.

O exemplo de código Python vai receber as perguntas, passar para o Claude Opus gerar uma resposta, e essa saída será passada para o Gemini Pro 3 para criar um resumo de texto e gerar uma imagem.

Neste laboratório, você vai criar o seguinte padrão:

Figura 1.

c8f37e193349bfd6.png

2. Objetivos

Neste laboratório, você vai aprender a fazer o seguinte:

  • Configurar a instância de VM para usar o SDK do Python
  • Ativar o cartão de modelo da Anthropic na Vertex AI
  • Conectar-se ao Anthropic Claude Opus 4.5 e ao Gemini 3 Pro usando um script Python
  • Configurar o endpoint do PSC para se conectar às APIs do Google
  • Configurar entradas DNS manuais
  • Verificar o caminho de conectividade com o Googleais
  • Executar script Python para consultar os modelos

Configuração do laboratório

Configuração de ambiente autoguiada

  1. Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google e pode ser atualizada quando você quiser.
  • O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto.
  • Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
  1. Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não vai ser muito cara, se tiver algum custo. Para encerrar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou exclua o projeto. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.

Inicie o Cloud Shell

Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.

No Console do Google Cloud, clique no ícone do Cloud Shell na barra de ferramentas superior à direita:

Ativar o Cloud Shell

O provisionamento e a conexão com o ambiente levarão apenas alguns instantes para serem concluídos: Quando o processamento for concluído, você verá algo como:

Captura de tela do terminal do Google Cloud Shell mostrando que o ambiente foi conectado

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Neste codelab, todo o trabalho pode ser feito com um navegador. Você não precisa instalar nada.

3. Configurar o ambiente

Vamos criar uma VPC personalizada com regras de firewall. Se você já tiver uma VPC e um projeto, pule esta parte.

Abra o Cloud Shell, localizado na parte superior direita do console. E configure da seguinte forma: b51b80043d3bac90.png

  1. Ativar algumas das APIs que vamos usar neste laboratório
gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable servicedirectory.googleapis.com
  1. Defina algumas variáveis. Essas variáveis são o ID do projeto e o ID da rede da VPC personalizada (você vai criar a VPC na etapa 4).
projectid=$(gcloud config get-value project)
networkid=anthropic-net 
echo $projectid
echo $networkid
clear
  1. Agora crie uma VPC personalizada chamada "anthropic-net".
gcloud compute networks create $networkid \
--project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
  1. Crie a vm1-subnet na nova 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. Adicionar regras de firewall ICMP, SSH e HTTP à 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. Ativar a Anthropic no Model Garden da Vertex

Precisamos conceder acesso externo de saída à Internet. Portanto, vamos criar e anexar um gateway do Cloud NAT.

  1. Acesse o painel da Vertex AI e selecione Model Garden.
  2. Pesquise Anthropic e selecione Claude Opus 4.5.

d8937fa7d5e216b7.png 3. Selecione Ativar e preencha algumas informações. Preencha o formulário e selecione Próxima. Na página final, selecione Concordo para ativar o Claude 4.5 Opus.

6ccda2a237000dea.png

  1. 84fbda607163ab9a.png

5. Criar gateway NAT e VMs

Precisamos conceder acesso externo de saída à Internet. Portanto, vamos criar e anexar um gateway do Cloud NAT.

No Cloud Shell, use os seguintes comandos

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

Agora vamos criar uma VM para acessar a Anthropic na Vertex AI usando o SDK do Python.

Vamos criar uma VM para testar com os seguintes pacotes instalados

  1. Na mesma sessão do Cloud Shell, crie anthro-vm usando o seguinte.
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]'"

Uma VM será criada sem endereços IP públicos. Agora vamos configurar o

6. Configurar e testar a VM

  1. No Google Cloud Shell, conecte-se por SSH à nova VM chamada anthro-vm.
gcloud compute ssh anthro-vm \
    --project=$projectid \
    --zone=us-east1-b \
    --tunnel-through-iap \
    -- -L 8080:localhost:8080
  1. Depois de se conectar via SSH a anthro-vm,ative o ambiente venv:
sudo -i -- bash -c 'cd py-anthro-env && source env/bin/activate && exec bash'
  1. Agora vamos autenticar isso para fazer alguns testes mais tarde. Execute o seguinte comando na VM e pressione y quando solicitado.
gcloud auth application-default login
  1. Em seguida, copie o URL que aparece começando com https://, abra uma nova guia na janela do navegador do laboratório e cole o URL. Aceite os comandos.
  2. Quando você vir a seguinte seleção de cópia, volte para a sessão da VM anthro-vm e, em Inserir código de autorização, cole o código copiado e pressione "Enter" para autenticar.

b703db7aa2aa286a.png

  1. Agora vamos fazer um teste rápido para ver se conseguimos nos conectar à API Vertex Gemini.
dig *-aiplatform.googleapis.com
  1. Você vai ver algo parecido (os endereços serão diferentes). O caminho é por endereços IP públicos, já que a API é pública.
; <<>> 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. Agora vamos usar o Python. Digite ipython para ativar a interface ipython.
ipython

845ef4291429888a.png

  1. Copie e cole o seguinte. Isso pede ao Claude Opus 4.5: "Quais são as principais etapas para criar uma IA agêntica?" Em seguida, ele pega a saída e a transmite para o Gemini 3 Pro, que cria um resumo e gera uma imagem que é salva na 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. Pressione Enter duas vezes para executar e conferir o resultado do texto.
  2. Para ver a imagem, precisamos ativar um serviço da Web em Python. Execute o seguinte na sessão do ipython
!python3 -m http.server 8080
  1. Agora, acesse a opção de visualização da Web no Cloud Shell e selecione "Visualizar na porta 8080" 6dcb2bf9a08aacaf.png
  2. Na sessão da Web aberta, selecione gemini_agentic_ai.png para ver a imagem gerada. (Exemplo de imagem gerada com IA abaixo)
    fdcb79d8410dadc5.png
  3. No Cloud Shell, pressione Ctrl C para sair da sessão. Em seguida, digite "exit" e pressione Enter (repita três vezes) para voltar à página inicial do Cloud Shell.
  4. Vamos continuar.

7. Criar o endpoint do PSC para googleapis

Para ativar a conectividade particular com nosso endpoint da API Vertex, vamos criar um endpoint do Private Service Connect para o googleapis. Isso nos permite usar um endereço IP particular que atribuímos para rotear o tráfego para os googleapis de que precisamos, neste caso, o Vertex Gemini.

  1. Abra o Cloud Shell, se ele ainda não estiver aberto. Crie um IP para o endpoint do PSC. Vamos usar 192.168.255.230 neste caso.
gcloud compute addresses create anthro-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=192.168.255.230 \
    --network=$networkid
  1. Verificar se o IP foi criado
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
  1. Em seguida, crie o endpoint do PSC.
gcloud compute forwarding-rules create pscanthrovertex \
    --global \
    --network=$networkid \
    --address=anthro-ip \
    --target-google-apis-bundle=all-apis
  1. Isso vai criar um endpoint e uma entrada do Diretório de serviços. Verificar se o endpoint existe
gcloud compute forwarding-rules describe pscanthrovertex --global

8. Verificar a conectividade do endpoint pela zona automática do diretório de serviços

Vamos nos conectar usando o endpoint particular para acessar o Gemini.

  1. Acesse a instância de VM anthro-vm1. Selecione "SSH" e faça login na VM
  2. Verifique o caminho de conectividade para aiplatform-pscanthrovertex.p.googleapis.com usando o comando dig. O IP do endpoint do PSC 192.168.255.230 vai aparecer.
dig aiplatform-pscanthrovertex.p.googleapis.com
  1. Saia de todas as sessões SSH.

9. Criar entrada DNS manual para googleapis

É possível criar uma entrada DNS manual para apontar para o endpoint da PSC usando DNS particular. Isso afetaria todas as redes atribuídas a ele.

Execute os comandos a seguir no Cloud Shell.

  1. Crie uma zona DNS particular para googleapis.com e anexe-a à rede 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. Crie um registro A mapeando o domínio raiz para o IP do endpoint do 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. Crie um registro CNAME curinga para redirecionar todos os subdomínios (por exemplo, aiplatform.googleapis.com) para o registro A raiz.
gcloud dns record-sets create "*.googleapis.com." \
    --zone="googleapis-private" \
    --type="CNAME" \
    --ttl="300" \
    --rrdatas="googleapis.com."
  1. Liste os conjuntos de registros na zona para confirmar se o registro A e o CNAME foram criados corretamente.
gcloud dns record-sets list --zone="googleapis-private"
  1. Na visualização do console, ele vai ficar assim. Você vai ver uma configuração com um registro A e um CNAME como este: a51a8b8caa7a0f1e.png
  2. Em seguida, vamos verificar a conectividade com essas mudanças em anthro-vm.

10. Verificar a conectividade do endpoint com o endereço IP

Vamos nos conectar usando o endpoint particular para acessar o Gemini.

  1. No Google Cloud Shell, conecte-se por SSH à nova VM chamada anthro-vm.
gcloud compute ssh anthro-vm \
    --project=$projectid \
    --zone=us-east1-b \
    --tunnel-through-iap \
    -- -L 8080:localhost:8080
  1. Depois de se conectar via SSH a anthro-vm,ative o ambiente venv:
sudo -i -- bash -c 'cd py-anthro-env && source env/bin/activate && exec bash'
  1. Agora vamos fazer um dig para ver se conseguimos nos conectar à API Gemini da Vertex.
dig *-aiplatform.googleapis.com
  1. Você vai ver algo parecido (o endereço será diferente). O caminho é pelos endereços IP do endpoint do 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. Uso do comando ping. Podemos fazer um teste rápido. Observação: esse IP é um endpoint do PSC e seus pings não vão funcionar.
ping -c 2 aiplatform.googleapis.com
  1. Agora vamos usar o Python. Digite ipython para ativar a interface ipython.
ipython

845ef4291429888a.png

  1. Copie e cole o seguinte. Isso pede ao Claude Opus 4.5: Me dê uma receita de roti para iniciantes, com instruções detalhadas. e depois passa a saída para o Gemini 3 Pro, que cria um resumo e gera uma imagem que é salva na 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. Pressione Enter duas vezes para executar e conferir o resultado do texto.
  2. Para ver a imagem, precisamos ativar um serviço da Web em Python. Portanto, execute o seguinte na sessão do iPython:
!python3 -m http.server 8080
  1. Agora, acesse a opção de visualização da Web no Cloud Shell e selecione "Visualizar na porta 8080".
  2. Selecione cookingroti.png para conferir a imagem gerada. (Exemplo abaixo gerado por IA) bcf43fffede275cb.png
  3. No Cloud Shell, pressione Ctrl C para sair da sessão. Em seguida, digite "exit" e pressione Enter (repita três vezes) para voltar à página inicial do Cloud Shell.

11. Parabéns

Parabéns! Você se divertiu e se conectou com sucesso ao Anthropic Claude Opus 4.5 e ao Gemini 3 Pro no Vertex usando o endereço da API pública e de forma privada com o endpoint do Private Service Connect para Googleapis. Essa funcionalidade pode estender a conectividade de API particular para seu ambiente local/de outra nuvem conectado via Interconnect, Cross-Cloud Interconnect e VPC.

Limpar

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

Próximas etapas / Saiba mais

Leia mais sobre o networking da Vertex AI.

Codelab: Acessar o chat do Gemini 3 Pro usando o SDK do Python via endpoint do Private Service Connect

Codelab: Como criar agentes de IA com o ADK:os fundamentos

Comece o próximo laboratório

Continue sua Quest com o Google Cloud e confira estes outros laboratórios do Google Cloud Ensina: