Accéder à Anthropic Claude sur Vertex AI avec le SDK Python via un point de terminaison Private Service Connect

1. Présentation

Vous pouvez accéder à l'API Vertex AI via Internet. Toutefois, dans votre entreprise, vous pouvez souhaiter accéder à l'API Vertex AI en privé, sans passer par Internet. Dans cet atelier, vous allez d'abord accéder à Anthropic Claude sur Vertex via le SDK Python exécuté sur une instance de VM via l'Internet public.

Vous allez ensuite créer un point de terminaison Private Service Connect vers Googleapis et modifier le flux de trafic pour utiliser le point de terminaison privé pour vous connecter à l'API Vertex.

Dans cet atelier, vous allez créer le motif suivant.

Figure 1.

103967918b096e97.png

2. Objectifs

Dans cet atelier, vous allez apprendre à effectuer la tâche suivante:

  • Configurer une instance de VM pour utiliser le SDK Python
  • Se connecter au chat Anthropic Claude via un script Python
  • Configurer le point de terminaison PSC pour se connecter à Googleapis
  • Configurer des entrées DNS manuelles
  • Vérifier le chemin de connectivité vers Googleais

Mettre en place l'atelier

Configuration de l'environnement au rythme de chacun

  1. Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. Si vous n'avez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pourrez toujours le modifier.
  • L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID de votre projet (généralement identifié par PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet.
  • Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
  1. Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.

Démarrer Cloud Shell

Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.

Dans la console Google Cloud, cliquez sur l'icône Cloud Shell dans la barre d'outils supérieure :

55efc1aaa7a4d3ad.png

Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :

7ffe5cbb04455448.png

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez effectuer toutes les tâches de cet atelier de programmation dans un navigateur. Vous n'avez rien à installer.

3. Tâche 1 : Configurer l'environnement

Nous allons créer un VPC personnalisé avec des règles de pare-feu. Si vous disposez déjà d'un VPC et d'un projet, vous pouvez ignorer cette partie.

Ouvrez Cloud Shell en haut à droite de la console. Configurez-le comme suit: 4261e776f64ea978.png

  1. Activer certaines des API que nous utiliserons dans cet atelier
gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable servicedirectory.googleapis.com
  1. Définissez des variables. Ces variables sont l'ID de projet et l'ID de réseau du VPC personnalisé (vous créerez le VPC à l'étape 4).
projectid=$(gcloud config get-value project)
networkid=anthropic-net 
echo $projectid
echo $networkid
clear
  1. Créez maintenant un VPC personnalisé appelé "anthropic-net".
gcloud compute networks create $networkid \
--project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
  1. Créer le sous-réseau vm1 dans le nouveau 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. Ajouter une règle de pare-feu ICMP à votre 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. Ajouter une règle de pare-feu SSH à votre 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. Tâche 2 : Activer Anthropic dans Vertex Model Garden

Nous devons accorder un accès Internet sortant externe. Créons donc une passerelle Cloud NAT et associons-la.

  1. Accédez à Vertex AI, puis sélectionnez Model Garden.
  2. Recherchez Anthropic, puis sélectionnez Claude 3.5 Sonnet.

4fd4338c598983d8.png

  1. Sélectionnez Activer. Vous devrez fournir certaines informations. Remplissez le formulaire, puis sélectionnez Suivant.
  2. Sur la page finale, sélectionnez Accepter pour activer Claude 3.5 Sonnet. b3961312feb6c383.png

5. Tâche 3 : Créer une passerelle NAT et des VM

Nous devons accorder un accès Internet sortant externe. Créons donc une passerelle Cloud NAT et associons-la.

Dans Cloud Shell, utilisez les commandes suivantes

  1. Créez Cloud NAT.
gcloud compute routers create anthro-out-nat \
    --network $networkid \
    --region us-east1 
  1. Créez la passerelle 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

Créons maintenant une VM pour accéder à Anthropic sur Vertex AI via le SDK Python.

Nous allons créer une VM de test avec les packages suivants installés.

  1. Dans la même session Cloud Shell, créez anthro-vm à l'aide de la commande suivante.
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]'"

Une VM sans adresse IP publique devrait être créée. Maintenant, configurons les

6. Tâche 4 : Configurer la VM et effectuer des tests

  1. Accédez aux instances de VM. Sélectionnez la VM commençant par anthro-vm. Sélectionnez SSH.
  2. Une fois connecté en SSH à anthro-vm,activez l'utilisateur racine en saisissant sudo -i.
  3. Activez votre environnement venv:
cd py-anthro-env
source env/bin/activate
  1. Authentifions-le maintenant pour effectuer des tests plus tard. Exécutez la commande suivante dans la VM, puis appuyez sur y lorsque vous y êtes invité.
gcloud auth application-default login
  1. Copiez ensuite l'URL qui commence par https://, ouvrez un nouvel onglet dans la fenêtre de votre navigateur de laboratoire et collez l'URL. Acceptez les requêtes.
  2. Lorsque l'invite de sélection de copie suivante s'affiche, revenez à la session de la VM anthro-vm et collez le code que vous avez copié dans Enter authorization code: (Saisissez le code d'autorisation). Appuyez sur Entrée pour vous authentifier.

c29615cdf9324209.png

  1. Effectuons maintenant un test rapide pour voir si nous pouvons nous connecter à l'API Vertex Gemini, qui utilise us-east5-aiplatform.googleapis.com. Nous allons donc effectuer un dig à cette adresse pour voir comment le trafic est acheminé.
dig us-east5-aiplatform.googleapis.com
  1. Vous devriez voir quelque chose de semblable (l'adresse sera différente). Notez que le chemin passe par des adresses IP publiques, car l'API est une API publique.
; <<>> 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. Utilisons maintenant Python. Saisissez ipython pour activer l'interface ipython.
ipython

4685b31f13df54e1.png

  1. Copiez et collez le texte suivant. Claude demande alors : Où se tiendront les Jeux olympiques en 2024 ? . P.S. : Remplacez YOUR-Project-ID-Here par le nom de votre ID de projet.
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. Appuyez sur Entrée pour exécuter la requête et afficher le résultat.
  2. Cette requête a accédé à Anthropic via l'API publique Vertex.
  3. Fermez la session SSH et continuons.

7. Tâche 5 : Créer le point de terminaison PSC vers googleapis

Pour activer la connectivité privée à notre point de terminaison d'API Vertex, nous allons créer un point de terminaison Private Service Connect pour googleapis. Cela nous permettra d'utiliser une adresse IP privée que nous attribuerons pour acheminer le trafic vers le googleapis dont nous avons besoin, dans ce cas Vertex Gemini.

  1. Ouvrez Cloud Shell, si ce n'est pas déjà fait. Créez une adresse IP pour le point de terminaison PSC. Nous utiliserons 192.168.255.230 dans ce cas.
gcloud compute addresses create anthro-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=192.168.255.230 \
    --network=$networkid
  1. Vérifier l'adresse IP créée
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
  1. Créez ensuite le point de terminaison PSC.
gcloud compute forwarding-rules create pscanthrovertex \
    --global \
    --network=$networkid \
    --address=anthro-ip \
    --target-google-apis-bundle=all-apis
  1. Un point de terminaison et une entrée dans l'annuaire des services seront créés. Vérifier l'existence du point de terminaison
gcloud compute forwarding-rules describe pscanthrovertex --global

8. Tâche 6 : Vérifier la connectivité des points de terminaison via une zone d'annuaire des services automatique

Connectons-nous à Gemini à l'aide du point de terminaison privé.

  1. Accédez à l'instance de VM anthro-vm1. Sélectionner SSH et se connecter en SSH à la VM
  2. Obtenez un accès root en saisissant sudo -i.
  3. Vérifiez le chemin de connectivité vers aiplatform-pscanthrovertex.p.googleapis.com à l'aide de la commande dig. L'adresse IP du point de terminaison PSC doit s'afficher.
dig aiplatform-pscanthrovertex.p.googleapis.com

9. Tâche 7 : Créer une entrée DNS manuelle vers googleapis (facultatif)

Vous pouvez créer une entrée DNS manuelle pour faire pointer vers le point de terminaison PSC à l'aide d'un DNS privé. Cela affectera tous les réseaux que vous lui attribuerez.

  1. Accédez à "Services réseau", puis sélectionnez "Cloud DNS".
  2. Dans "Zones", vous devriez voir une zone créée automatiquement pour Private Service Connect pour les API Google, avec le type de zone "annuaire des services". Vous pouvez l'utiliser pour vous connecter au point de terminaison PSC au format **SERVICE-ENDPOINT.p.googleapis.com (exemple : aiplatform-pscvertexgemini.p.googleapis.com).
  3. Dans ce cas, nous souhaitons créer manuellement une entrée DNS privée. Accédez à Cloud DNS, puis sélectionnez Créer une zone.
  4. Configurez comme suit :

Configuration

Nom

Type de zone

Privé

Nom de la zone

googleapis-private

Nom DNS

googleapis.com

Ajouter des chaînes (sélectionnez "OK" lorsque vous avez terminé)

anthropic-net

Pour finaliser la sélection, sélectionnez

Créer

  1. Dans la zone "Détails de la zone", sélectionnez Ajouter un jeu d'enregistrements standard pour ajouter un enregistrement A.

Configuration

Nom

Type d'enregistrement de ressource

A

Adresse IPv4 (ajoutez l'adresse IP du point de terminaison)

192.168.255.230

Pour finaliser la sélection, sélectionnez

Créer

  1. Dans la zone Détails de la zone, sélectionnez Ajouter un jeu d'enregistrements standard pour ajouter un enregistrement CNAME.

Configuration

Nom

Nom DNS

*

Type de ressource d'enregistrement

CNAME

Nom canonique 1

googleapis.com

Pour finaliser la sélection, sélectionnez

Créer

  1. Vous devriez voir une configuration avec un enregistrement A et un enregistrement CNAME comme suit : b7f122f0d1fd2850.png
  2. Nous vérifions ensuite la connectivité avec ces modifications sur anthro-vm.

10. Tâche 8 : Vérifier la connectivité du point de terminaison via l'adresse IP (facultatif)

Connectons-nous à Gemini à l'aide du point de terminaison privé.

  1. Accédez à l'instance de VM anthro-vm. Sélectionner SSH et se connecter en SSH à la VM
  2. Obtenez un accès root en saisissant sudo -i.
  3. Vérifiez le chemin de connectivité vers us-east5-aiplatform.googleapis.com à l'aide de la commande ping. L'adresse IP du DNS privé, l'enregistrement A pour googleapis, sera pinguée. Cette adresse IP est un point de terminaison PSC. Vos pings échoueront.
ping -c 2 us-east5-aiplatform.googleapis.com
  1. Vérifiez le chemin de connectivité avec un ping à l'aide de l'entrée DNS créée automatiquement pour les API Google PSC avec aiplatform-pscanthrovertex.p.googleapis.com. Il pointe vers l'adresse IP du point de terminaison PSC, et vos pings ne seront pas acceptés.
ping -c 2 aiplatform-pscanthrovertex.p.googleapis.com
  1. Vérifiez le chemin de connectivité vers us-east5-aiplatform.googleapis.com à l'aide de la commande dig. Il doit s'agir de l'adresse IP du point de terminaison PSC.
dig us-east5-aiplatform.googleapis.com
  1. Revenez dans la console et ouvrez une autre instance de l'instance de VM anthro-vm. Sélectionnez SSH et connectez-vous en SSH à la VM.
  2. Obtenez un accès root en saisissant sudo -i.
  3. Exécutez la commande suivante pour afficher la connectivité dans un dump TCP
sudo tcpdump -i any port 53 -n or host us-east5-aiplatform.googleapis.com
  1. Revenez maintenant à la première instance SSH de l'instance de VM anthro-vm.
  2. Activez l'environnement à l'aide de
cd py-gem-env
source env/bin/activate
  1. Testons maintenant Python. Saisissez ipython pour activer l'interface ipython.
ipython
  1. Copiez et collez le texte suivant. Claude vous répond alors Qu'est-ce qu'un roti ? P.S. : Remplacez YOUR-Project-ID-Here par le nom de votre ID de projet.
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. Appuyez sur Entrée pour exécuter la requête et afficher le résultat.
  2. Revenez à la deuxième instance de l'instance de VM anthro-vm. Vous devriez voir le résultat de TCPDUMP. Vous remarquerez que l'adresse IP de la VM utilise l'adresse IP du point de terminaison PSC pour se connecter à us-east5-aiplatform.googleapis.com.

Fermez toutes les sessions SSH à l'instance de VM anthro-vm.

11. Félicitations

Félicitations, vous êtes parvenu à vous connecter à Anthropic sur Vertex à la fois à l'aide de l'adresse API publique et de manière privée à l'aide du point de terminaison Private Service Connect pour Googleapis. Cette fonctionnalité peut étendre la connectivité des API privées à votre environnement sur site/autre cloud connecté via (Interconnect, Cross-Cloud Interconnect et VPC).

Effectuer un nettoyage

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

Pour en savoir plus sur la mise en réseau Vertex AI,