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.
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
- 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.
- 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.
- 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 :
Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :
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:
- 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
- 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
- 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
- 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
- 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
- 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.
- Accédez à Vertex AI, puis sélectionnez Model Garden.
- Recherchez Anthropic, puis sélectionnez Claude 3.5 Sonnet.
- Sélectionnez Activer. Vous devrez fournir certaines informations. Remplissez le formulaire, puis sélectionnez Suivant.
- Sur la page finale, sélectionnez Accepter pour activer Claude 3.5 Sonnet.
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
- Créez Cloud NAT.
gcloud compute routers create anthro-out-nat \ --network $networkid \ --region us-east1
- 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.
- 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
- Accédez aux instances de VM. Sélectionnez la VM commençant par anthro-vm. Sélectionnez SSH.
- Une fois connecté en SSH à anthro-vm,activez l'utilisateur racine en saisissant
sudo -i
. - Activez votre environnement venv:
cd py-anthro-env
source env/bin/activate
- 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
- 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.
- 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.
- 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
- 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
- Utilisons maintenant Python. Saisissez
ipython
pour activer l'interface ipython.
ipython
- 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)
- Appuyez sur Entrée pour exécuter la requête et afficher le résultat.
- Cette requête a accédé à Anthropic via l'API publique Vertex.
- 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.
- 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
- Vérifier l'adresse IP créée
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
- 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
- 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é.
- Accédez à l'instance de VM anthro-vm1. Sélectionner SSH et se connecter en SSH à la VM
- Obtenez un accès root en saisissant
sudo -i
. - 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.
- Accédez à "Services réseau", puis sélectionnez "Cloud DNS".
- 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
). - 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.
- 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 |
- 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 |
- 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 |
- Vous devriez voir une configuration avec un enregistrement A et un enregistrement CNAME comme suit :
- 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é.
- Accédez à l'instance de VM anthro-vm. Sélectionner SSH et se connecter en SSH à la VM
- Obtenez un accès root en saisissant
sudo -i
. - 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
- Vérifiez le chemin de connectivité avec un
ping
à l'aide de l'entrée DNS créée automatiquement pour les API Google PSC avecaiplatform-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
- 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
- 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.
- Obtenez un accès root en saisissant
sudo -i
. - 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
- Revenez maintenant à la première instance SSH de l'instance de VM anthro-vm.
- Activez l'environnement à l'aide de
cd py-gem-env
source env/bin/activate
- Testons maintenant Python. Saisissez
ipython
pour activer l'interface ipython.
ipython
- 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)
- Appuyez sur Entrée pour exécuter la requête et afficher le résultat.
- 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,