1. Descripción general
Se puede acceder a la API de Vertex AI a través de Internet. Sin embargo, en tu empresa, es posible que desees acceder a la API de Vertex AI de forma privada sin usar Internet. En este lab, primero accederás a Anthropic Claude Opus 4.5 y a Gemini 3 Pro en Vertex a través del SDK de Python que se ejecuta en una instancia de VM a través de Internet pública.
Luego, crearás un extremo de Private Service Connect para Googleapis y cambiarás el flujo de tráfico para usar el extremo privado y conectarte a la API de Vertex.
La muestra de código de Python tomará las preguntas de entrada, las pasará a Claude Opus para generar una respuesta, y esa salida se pasará a Gemini Pro 3 para crear un resumen de texto y generar una imagen.
En este lab, crearás el siguiente patrón.
Figura 1.

2. Objetivos
En este lab, aprenderás a realizar la siguiente tarea:
- Configura la instancia de VM para usar el SDK de Python
- Habilita la tarjeta del modelo de Anthropic en Vertex AI
- Conéctate a Anthropic Claude Opus 4.5 y Gemini 3 Pro a través de un script de Python
- Configura el extremo de PSC para conectarte a googleapis
- Configura entradas de DNS manuales
- Verifica la ruta de conectividad a Googleais
- Ejecuta la secuencia de comandos de Python para consultar los modelos
Configuración del lab
Configuración del entorno de autoaprendizaje
- Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.



- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
- El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como
PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto. - Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.
Inicia Cloud Shell
Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.
En Google Cloud Console, haz clic en el ícono de Cloud Shell en la barra de herramientas en la parte superior derecha:

El aprovisionamiento y la conexión al entorno deberían tomar solo unos minutos. Cuando termine el proceso, debería ver algo como lo siguiente:

Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Todo tu trabajo en este codelab se puede hacer en un navegador. No es necesario que instales nada.
3. Configura el entorno
Crearemos una VPC personalizada con reglas de firewall. Si ya tienes una VPC y un proyecto, puedes omitir esta parte.
Abre Cloud Shell, que se encuentra en la parte superior derecha de la consola. Configúralo de la siguiente manera: 
- Habilita algunas de las APIs que usaremos en este lab
gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable servicedirectory.googleapis.com
- Configura algunas variables. Estas variables son el ID del proyecto y el ID de la red de la VPC personalizada (crearás la VPC en el paso 4).
projectid=$(gcloud config get-value project)
networkid=anthropic-net
echo $projectid
echo $networkid
clear
- Ahora crea una VPC personalizada llamada anthropic-net.
gcloud compute networks create $networkid \
--project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
- Crea la subred vm1 en la nueva 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
- Agrega reglas de firewall de ICMP, SSH y HTTP a tu 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. Habilita Anthropic en Model Garden de Vertex
Debemos otorgar acceso externo saliente a Internet, por lo que crearemos una puerta de enlace de Cloud NAT y la adjuntaremos.
- Ve al panel de Vertex AI y selecciona Model Garden.
- Busca Anthropic y selecciona Claude Opus 4.5.
3. Selecciona Habilitar. Deberás completar algunos datos. Completa el formulario y selecciona Siguiente 4. En la página final, selecciona Aceptar para habilitar Claude 4.5 Opus.

5. Crea la puerta de enlace NAT y las VMs
Debemos otorgar acceso externo saliente a Internet, por lo que crearemos una puerta de enlace de Cloud NAT y la adjuntaremos.
En Cloud Shell, usa los siguientes comandos
- Crea Cloud NAT.
gcloud compute routers create anthro-out-nat \
--network $networkid \
--region us-east1
- Crea la puerta de enlace de 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
Ahora, creemos una VM para acceder a Anthropic en Vertex AI a través del SDK de Python.
Crearemos una VM para realizar pruebas con los siguientes paquetes instalados
- En la misma sesión de Cloud Shell, crea anthro-vm con el siguiente comando.
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]'"
Deberías ver una VM creada sin direcciones IP públicas. Ahora, configuremos la VM.
6. Configura la VM y realiza una prueba
- En Google Cloud Shell, permite el acceso SSH a la nueva VM llamada anthro-vm.
gcloud compute ssh anthro-vm \
--project=$projectid \
--zone=us-east1-b \
--tunnel-through-iap \
-- -L 8080:localhost:8080
- Una vez que establezcas una conexión SSH con anthro-vm, activa tu entorno de venv:
sudo -i -- bash -c 'cd py-anthro-env && source env/bin/activate && exec bash'
- Ahora autentiquemos esto para realizar algunas pruebas más adelante. Ejecuta el siguiente comando en la VM y presiona y cuando se te solicite.
gcloud auth application-default login
- A continuación, copia la URL que aparece y comienza con https://. Abre una pestaña nueva en la ventana del navegador del lab y pega la URL. Acepta las instrucciones.
- Cuando veas la siguiente opción, selecciona copiar, vuelve a la sesión de la VM anthro-vm y, en Enter authorization code:, pega el código que copiaste y presiona Intro para autenticarte.

- Ahora, hagamos una prueba rápida para ver si podemos conectarnos a la API de Vertex Gemini.
dig *-aiplatform.googleapis.com
- Deberías ver algo similar (las direcciones serán diferentes). Ten en cuenta que la ruta es a través de direcciones IP públicas, ya que la API es 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
- Ahora, usemos Python. Escribe
ipythonpara activar la interfaz de ipython.
ipython

- Ahora copia y pega lo siguiente. Esta instrucción le pide a Claude Opus 4.5 "¿Cuáles son los pasos clave para crear IA agentiva?". Luego, toma el resultado y lo pasa a Gemini 3 Pro, que crea un resumen y genera una imagen que guarda en la 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)}")
- Presiona Intro dos veces para ejecutar y ver el resultado de texto.
- Para ver la imagen, debemos habilitar un servicio web en Python. Ejecuta lo siguiente en la sesión de IPython:
!python3 -m http.server 8080
- Ahora, ve a la opción de vista previa en la Web en Cloud Shell y selecciona Vista previa en el puerto 8080
. - En la sesión web abierta, selecciona gemini_agentic_ai.png para ver la imagen generada. (La siguiente imagen de muestra se generó con IA).

- En Cloud Shell, presiona Ctrl C para salir de la sesión, luego escribe exit y presiona Intro (repite tres veces) para volver a la página principal de Cloud Shell.
- Continuemos.
7. Crea el extremo de PSC para googleapis
Para habilitar la conectividad privada a nuestro extremo de la API de Vertex, crearemos un extremo de Private Service Connect para googleapis. Esto nos permitirá usar una dirección IP privada que asignemos para enrutar el tráfico a las APIs de Google que necesitemos, en este caso, Vertex Gemini.
- Abre Cloud Shell si aún no está abierto. Crea una IP para el extremo de PSC. En este caso, usaremos 192.168.255.230.
gcloud compute addresses create anthro-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=192.168.255.230 \
--network=$networkid
- Verifica que se haya creado la IP
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
- A continuación, crea el extremo de PSC.
gcloud compute forwarding-rules create pscanthrovertex \
--global \
--network=$networkid \
--address=anthro-ip \
--target-google-apis-bundle=all-apis
- Esto creará un extremo y una entrada del directorio de servicios. Verifica que exista el extremo
gcloud compute forwarding-rules describe pscanthrovertex --global
8. Verifica la conectividad del extremo a través de la zona automática del directorio de servicios
Conectémonos a Gemini a través del extremo privado.
- Ve a la instancia de VM anthro-vm1. Selecciona SSH y establece una conexión SSH a la VM
- Verifica la ruta de conectividad a aiplatform-pscanthrovertex.p.googleapis.com con el comando
dig. Deberías ver la IP del extremo de PSC192.168.255.230.
dig aiplatform-pscanthrovertex.p.googleapis.com
- Sal de todas las sesiones de SSH.
9. Crea una entrada de DNS manual para googleapis
Puedes crear una entrada de DNS manual para que apunte al extremo de PSC con DNS privado. Esto afectaría a todas las redes que le asignes.
Ejecuta los siguientes comandos en Cloud Shell.
- Crea una zona de DNS privada para googleapis.com y conéctala a la red 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"
- Crea un registro A que asigne el dominio raíz a la IP del extremo de 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"
- Crea un registro CNAME de comodín para redireccionar todos los subdominios (p. ej., aiplatform.googleapis.com) al registro A raíz.
gcloud dns record-sets create "*.googleapis.com." \
--zone="googleapis-private" \
--type="CNAME" \
--ttl="300" \
--rrdatas="googleapis.com."
- Enumera los conjuntos de registros en la zona para confirmar que el registro A y el CNAME se crearon correctamente.
gcloud dns record-sets list --zone="googleapis-private"
- En la vista de la consola, debería verse así. Deberías ver una configuración con un registro A y un CNAME como este: consulta

- A continuación, verificamos la conectividad con estos cambios en anthro-vm.
10. Verifica la conectividad del extremo a través de la dirección IP
Conectémonos a Gemini a través del extremo privado.
- En Google Cloud Shell, establece una conexión SSH a la nueva VM llamada anthro-vm.
gcloud compute ssh anthro-vm \
--project=$projectid \
--zone=us-east1-b \
--tunnel-through-iap \
-- -L 8080:localhost:8080
- Una vez que establezcas una conexión SSH con anthro-vm, activa tu entorno de venv:
sudo -i -- bash -c 'cd py-anthro-env && source env/bin/activate && exec bash'
- Ahora, ejecutemos
digpara ver si podemos conectarnos a la API de Vertex Gemini.
dig *-aiplatform.googleapis.com
- Deberías ver algo similar (la dirección será diferente). Ten en cuenta que la ruta se realiza a través de las direcciones IP del extremo de 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
- Usa el comando
ping. Podemos hacer una prueba rápida. Nota: Esta IP es un extremo de PSC y tus pings no se realizarán correctamente.
ping -c 2 aiplatform.googleapis.com
- Ahora, usemos Python. Escribe
ipythonpara activar la interfaz de ipython.
ipython

- Ahora copia y pega lo siguiente. Esto le pide a Claude Opus 4.5 que "Give me a step by step recipe to make a roti for a beginner?" luego, toma el resultado y lo pasa a Gemini 3 Pro, que crea un resumen y genera una imagen que guarda en la 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)}")
- Presiona Intro dos veces para ejecutar y ver el resultado de texto.
- Para ver la imagen, debemos habilitar un servicio web en Python, por lo que ejecutaremos lo siguiente en la sesión de IPython:
!python3 -m http.server 8080
- Ahora, ve a la opción de vista previa en la Web en Cloud Shell y selecciona Vista previa en el puerto 8080.
- Selecciona cookingroti.png para ver la imagen generada. (La siguiente muestra se generó con IA)

- En Cloud Shell, presiona Ctrl C para salir de la sesión, luego escribe exit y presiona Intro (repite tres veces) para volver a la página principal de Cloud Shell.
11. Felicitaciones
Felicitaciones. Te divertiste y te conectaste correctamente a Anthropic Claude Opus 4.5 y Gemini 3 Pro en Vertex con la dirección de la API pública y de forma privada con el extremo de Private Service Connect para googleapis. Esta funcionalidad puede extender la conectividad de la API privada a tu entorno local o de otra nube que estén conectados a través de Interconnect, Cross-Cloud Interconnect y VPC.
Limpia
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óximos pasos y más información
Puedes obtener más información sobre las redes de Vertex AI.
Codelab: Accede al chat de Gemini 3 Pro con el SDK de Python a través del extremo de Private Service Connect
Codelab: Cómo compilar agentes de IA con el ADK:Los conceptos básicos
Realiza tu próximo lab
Continúa tu Quest con Google Cloud y consulta estos otros labs de Google Cloud Skills Boost:
