Accede a Anthropic Claude en Vertex AI con el SDK de Python a través del extremo de Private Service Connect

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 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 a las APIs de Google y cambiarás el flujo de tráfico para usar el extremo privado y conectarte a la API de Vertex.

En este lab, crearás el siguiente patrón.

Figura 1.

103967918b096e97.png

2. Objetivos

En este lab, aprenderás a realizar las siguientes tareas:

  • Configura la instancia de VM para usar el SDK de Python
  • Cómo conectarse al chat de Anthropic Claude a través de una secuencia de comandos de Python
  • Configura el extremo de PSC para conectarte a las APIs de Google
  • Configura entradas de DNS manuales
  • Verifica la ruta de conectividad a Googleais

Configuración del lab

Configuración del entorno de autoaprendizaje

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

55efc1aaa7a4d3ad.png

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:

7ffe5cbb04455448.png

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. Tarea 1. 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 de la consola, a la derecha. Y configura lo siguiente: 4261e776f64ea978.png

  1. 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
  1. Configura algunas variables. Estas variables son el ID del proyecto y el ID de 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
  1. Ahora, crea una VPC personalizada llamada anthropic-net.
gcloud compute networks create $networkid \
--project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
  1. Crea la subred vm1 en la VPC nueva
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. Agrega una regla de firewall de ICMP 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
  1. Agrega una regla de firewall de SSH a tu 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. Tarea 2: Habilita Anthropic en Model Garden de Vertex

Debemos otorgar acceso externo saliente a Internet, así que crearemos una puerta de enlace de Cloud NAT y la adjuntaremos.

  1. Ve a Vertex AI y selecciona Model Garden.
  2. Busca Anthropic y selecciona Claude 3.5 Sonnet.

4fd4338c598983d8.png

  1. Selecciona Habilitar. Se te pedirá que completes algunos datos. Completa el formulario y selecciona Siguiente.
  2. En la página final, selecciona Acepto para habilitar Claude 3.5 Sonnet b3961312feb6c383.png

5. Tarea 3: Crea la puerta de enlace NAT y las VMs

Debemos otorgar acceso externo saliente a Internet, así que crearemos una puerta de enlace de Cloud NAT y la adjuntaremos.

En Cloud Shell, usa los siguientes comandos

  1. Crea la Cloud NAT.
gcloud compute routers create anthro-out-nat \
    --network $networkid \
    --region us-east1 
  1. 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, crearemos una VM para acceder a Anthropic en Vertex AI a través del SDK de Python.

Crearemos una VM para probar con los siguientes paquetes instalados.

  1. En la misma sesión de Cloud Shell, crea anthro-vm con lo siguiente.
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]'"

Deberías ver una VM creada sin direcciones IP públicas. Ahora, configuremos los

6. Tarea 4: Configura la VM y realiza la prueba

  1. Navega a las instancias de VM. Selecciona la VM que comienza con anthro-vm. Elige SSH.
  2. Una vez que establezcas una conexión SSH a anthro-vm, escribe sudo -i para habilitar el usuario raíz.
  3. Activa tu entorno venv:
cd py-anthro-env
source env/bin/activate
  1. 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
  1. A continuación, copia la URL que aparece en el mensaje que comienza con https://, abre una pestaña nueva en la ventana del navegador del lab y pega la URL. Acepta las instrucciones.
  2. Cuando veas el siguiente mensaje, selecciona "Copiar", vuelve a la sesión de la VM anthro-vm y, en Escribe el código de autorización:, pega el código que copiaste y presiona Intro para autenticarte.

c29615cdf9324209.png

  1. Ahora, hagamos una prueba rápida para ver si podemos conectarnos a la API de Vertex Gemini, que usa us-east5-aiplatform.googleapis.com, por lo que haremos un dig a esa dirección para ver cómo se enruta el tráfico.
dig us-east5-aiplatform.googleapis.com
  1. Deberías ver algo similar (la dirección será diferente). Ten en cuenta que la ruta es a través de direcciones IP públicas, ya que la API es pública.
; <<>> 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. Ahora, usemos Python. Escribe ipython para activar la interfaz ipython.
ipython

4685b31f13df54e1.png

  1. Ahora, copia y pega lo siguiente. Esto le pregunta a Claude: "¿Dónde se llevarán a cabo los Juegos Olímpicos en 2024?". . P.D.: Reemplaza YOUR-Project-ID-Here por el nombre de tu ID de proyecto.
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. Presiona Intro para ejecutarlo y ver el resultado.
  2. Esta solicitud accedió a Anthropic a través de la API pública de Vertex.
  3. Cierra la sesión de SSH y continuemos.

7. Tarea 5. 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 asignaremos para enrutar el tráfico a la googleapis que necesitamos, en este caso, Vertex Gemini.

  1. Abre Cloud Shell si aún no lo hiciste. 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
  1. Verifica que se haya creado la IP
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
  1. 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
  1. Esto creará un extremo y una entrada del directorio de servicios. Verifica que exista el extremo
gcloud compute forwarding-rules describe pscanthrovertex --global

8. Tarea 6. Verifica la conectividad del extremo a través de la zona automática del directorio de servicios

Conectémonos con el extremo privado para conectarnos a Gemini.

  1. Ve a la instancia de VM anthro-vm1. Selecciona SSH y establece una conexión SSH a la VM
  2. Para obtener acceso raíz, escribe sudo -i.
  3. Verifica la ruta de conectividad a aiplatform-pscanthrovertex.p.googleapis.com con el comando dig. Deberías ver la IP del extremo de PSC.
dig aiplatform-pscanthrovertex.p.googleapis.com

9. Tarea 7. Crea una entrada de DNS manual en googleapis (opcional)

Puedes crear una entrada de DNS manual para dirigirla al extremo de PSC con el DNS privado. Esto afectaría a todas las redes que le asignes.

  1. Navega a Servicios de red y selecciona Cloud DNS.
  2. En Zonas, deberías ver una zona creada automáticamente para Private Service Connect para las APIs de Google, con el directorio de servicios de tipo de zona. Se puede usar para conectarse al extremo de PSC con el formato **EXTREMO-DEL-SERVICIO.p.googleapis.com Ejemplo aiplatform-pscvertexgemini.p.googleapis.com
  3. En este caso, queremos crear manualmente una entrada de DNS privada. Ve a Cloud DNS y selecciona Crear zona.
  4. Configura lo siguiente

Configuration

Nombre

Tipo de zona

Privado

Nombre de la zona

googleapis-private

Nombre de DNS

googleapis.com

Agregar redes (selecciona Listo cuando las agregues)

anthropic-net

Para completar la selección

Crear

  1. En el área Detalles de la zona, selecciona Agregar estándar para agregar un registro A.

Configuration

Nombre

Tipo de registro de recursos

A

Dirección IPv4 (agrega la dirección IP del extremo)

192.168.255.230

Para completar la selección

Crear

  1. En el área Detalles de la zona, selecciona Agregar estándar para agregar un registro CNAME.

Configuration

Nombre

Nombre de DNS

*

Tipo de recurso de registro

CNAME

Nombre canónico 1

googleapis.com

Para completar la selección

Crear

  1. Deberías ver una configuración con un registro A y CNAME como este, consulta b7f122f0d1fd2850.png
  2. A continuación, verificamos la conectividad con estos cambios en anthro-vm.

10. Tarea 8. Verifica la conectividad del extremo a través de la dirección IP (opcional)

Conectémonos con el extremo privado para conectarnos a Gemini.

  1. Ve a la instancia de VM anthro-vm. Selecciona SSH y establece una conexión SSH a la VM
  2. Para obtener acceso raíz, escribe sudo -i.
  3. Verifica la ruta de conectividad a us-east5-aiplatform.googleapis.com con el comando ping. Esto enviará un ping a la dirección IP en el DNS privado, el registro A de googleapis. Esta IP es un extremo de PSC y tus pings no se realizarán correctamente.
ping -c 2 us-east5-aiplatform.googleapis.com
  1. Verifica la ruta de conectividad con un ping usando la entrada de DNS creada automáticamente para las APIs de Google de PSC con aiplatform-pscanthrovertex.p.googleapis.com. Esto apunta a la dirección IP del extremo de PSC, y tus pings no se realizarán correctamente.
ping -c 2 aiplatform-pscanthrovertex.p.googleapis.com
  1. Verifica la ruta de conectividad a us-east5-aiplatform.googleapis.com con el comando dig. Esta debe ser la dirección IP del extremo de PSC.
dig us-east5-aiplatform.googleapis.com
  1. Regresa a la consola y abre otra instancia de la instancia de VM anthro-vm. Selecciona SSH y establece una conexión SSH a la VM.
  2. Para obtener acceso raíz, escribe sudo -i.
  3. Ejecuta el siguiente comando para ver la conectividad en un volcado de TCP:
sudo tcpdump -i any port 53 -n or host us-east5-aiplatform.googleapis.com
  1. Ahora, vuelve a la primera instancia de SSH de la instancia de VM anthro-vm.
  2. Activa el entorno con
cd py-gem-env
source env/bin/activate
  1. Ahora probemos Python. Escribe ipython para activar la interfaz de ipython.
ipython
  1. Ahora, copia y pega lo siguiente. Esto le pregunta a Claude: "¿Qué es un roti?". P.D.: Reemplaza YOUR-Project-ID-Here por el nombre de tu ID de proyecto.
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. Presiona Intro para ejecutar la fórmula y ver el resultado.
  2. Regresa a la segunda instancia de la instancia de VM anthro-vm. Deberías ver el resultado del TCPDUMP. Verás las entradas y salidas, y la dirección IP de la VM usará la dirección IP del extremo de PSC para conectarse a us-east5-aiplatform.googleapis.com.

Cierra todas las sesiones de SSH a la instancia de VM anthro-vm.

11. Felicitaciones

¡Felicitaciones! Te conectaste correctamente a Anthropic en Vertex con la dirección pública de la API y de forma privada con el extremo de Private Service Connect para las APIs de Google. Esta funcionalidad puede extender la conectividad de la API privada a tu entorno local o de otra nube que esté conectado a través de (Interconnect, Cross-Cloud Interconnect y VPC).

Realiza una limpieza

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

Puedes obtener más información sobre las redes de Vertex AI.