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.

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



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

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:

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: 
- 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
- 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
- Agora crie uma VPC personalizada chamada "anthropic-net".
gcloud compute networks create $networkid \
--project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
- 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
- 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.
- Acesse o painel da Vertex AI e selecione Model Garden.
- Pesquise Anthropic e selecione Claude Opus 4.5.
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.

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

- Agora vamos fazer um teste rápido para ver se conseguimos nos conectar à API Vertex Gemini.
dig *-aiplatform.googleapis.com
- 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
- Agora vamos usar o Python. Digite
ipythonpara ativar a interface ipython.
ipython

- 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)}")
- Pressione Enter duas vezes para executar e conferir o resultado do texto.
- 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
- Agora, acesse a opção de visualização da Web no Cloud Shell e selecione "Visualizar na porta 8080"

- Na sessão da Web aberta, selecione gemini_agentic_ai.png para ver a imagem gerada. (Exemplo de imagem gerada com IA abaixo)

- 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.
- 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.
- 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
- Verificar se o IP foi criado
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
- 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
- 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.
- Acesse a instância de VM anthro-vm1. Selecione "SSH" e faça login na VM
- Verifique o caminho de conectividade para aiplatform-pscanthrovertex.p.googleapis.com usando o comando
dig. O IP do endpoint do PSC192.168.255.230vai aparecer.
dig aiplatform-pscanthrovertex.p.googleapis.com
- 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.
- 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"
- 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"
- 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."
- 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"
- Na visualização do console, ele vai ficar assim. Você vai ver uma configuração com um registro A e um CNAME como este:

- 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.
- 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
- 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'
- Agora vamos fazer um
digpara ver se conseguimos nos conectar à API Gemini da Vertex.
dig *-aiplatform.googleapis.com
- 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
- 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
- Agora vamos usar o Python. Digite
ipythonpara ativar a interface ipython.
ipython

- 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)}")
- Pressione Enter duas vezes para executar e conferir o resultado do texto.
- 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
- Agora, acesse a opção de visualização da Web no Cloud Shell e selecione "Visualizar na porta 8080".
- Selecione cookingroti.png para conferir a imagem gerada. (Exemplo abaixo gerado por IA)

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