1. Übersicht
Sie können über das Internet auf die Vertex AI API zugreifen. In Ihrem Unternehmen möchten Sie jedoch möglicherweise privat auf die Vertex AI API zugreifen, ohne das Internet zu nutzen. In diesem Lab greifen Sie zuerst über das öffentliche Internet über das Python SDK auf Anthropic Claude in Vertex zu, das auf einer VM-Instanz ausgeführt wird.
Anschließend erstellen Sie einen Private Service Connect-Endpunkt für Google APIs und ändern den Trafficfluss so, dass der private Endpunkt für die Verbindung zur Vertex API verwendet wird.
In diesem Lab erstellen Sie das folgende Muster.
Abbildung 1.
2. Lernziele
In diesem Lab lernen Sie, wie Sie die folgenden Aufgaben ausführen:
- VM-Instanz für die Verwendung des Python SDK einrichten
- Über ein Python-Script eine Verbindung zum Anthropic Claude-Chat herstellen
- PSC-Endpunkt für die Verbindung zu Googleapis konfigurieren
- Manuelle DNS-Einträge konfigurieren
- Verbindungspfad zu Googleais prüfen
Lab einrichten
Einrichtung der Umgebung im eigenen Tempo
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie ein Konto erstellen.
- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es ist ein Zeichenstring, der von Google APIs nicht verwendet wird. Sie können ihn jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und kann nach der Festlegung nicht mehr geändert werden. In der Cloud Console wird automatisch ein eindeutiger String generiert. In der Regel spielt es keine Rolle, wie er lautet. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (normalerweise als
PROJECT_ID
gekennzeichnet). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige generieren. Alternativ können Sie Ihr eigenes Konto ausprobieren und prüfen, ob es verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Die Durchführung dieses Codelabs ist kostenlos oder kostet nur sehr wenig. Wenn Sie die Ressourcen herunterfahren möchten, um Kosten nach Abschluss dieser Anleitung zu vermeiden, können Sie die von Ihnen erstellten Ressourcen oder das Projekt löschen. Neuen Google Cloud-Nutzern steht das kostenlose Testprogramm mit einem Guthaben von 300$ zur Verfügung.
Cloud Shell starten
Sie können Google Cloud zwar per Fernzugriff von Ihrem Laptop aus nutzen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Klicken Sie in der Google Cloud Console rechts oben in der Symbolleiste auf das Cloud Shell-Symbol:
Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Minuten dauern. Wenn der Vorgang abgeschlossen ist, sollte in etwa Folgendes angezeigt werden:
Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Dadurch werden Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.
3. Aufgabe 1: Umgebung einrichten
Wir erstellen eine benutzerdefinierte VPC mit Firewallregeln. Wenn Sie bereits eine VPC und ein Projekt haben, können Sie diesen Teil überspringen.
Öffnen Sie rechts oben in der Konsole Cloud Shell. Konfigurieren Sie es dann so:
- Einige der APIs aktivieren, die wir in diesem Lab verwenden
gcloud services enable dns.googleapis.com gcloud services enable aiplatform.googleapis.com gcloud services enable servicedirectory.googleapis.com
- Legen Sie einige Variablen fest. Diese Variablen sind die Projekt-ID und die Netzwerk-ID des benutzerdefinierten VPC. Sie erstellen das VPC in Schritt 4.
projectid=$(gcloud config get-value project) networkid=anthropic-net echo $projectid echo $networkid clear
- Erstellen Sie nun eine benutzerdefinierte VPC mit dem Namen „anthropic-net“.
gcloud compute networks create $networkid \ --project=$projectid \ --subnet-mode=custom \ --mtu=1460 \ --bgp-routing-mode=global
- Erstellen Sie das vm1-Subnetz in der neuen 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
- VPC eine ICMP-Firewallregel hinzufügen
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
- VPC eine SSH-Firewallregel hinzufügen
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. Aufgabe 2: Anthropic im Vertex Model Garden aktivieren
Wir müssen ausgehenden externen Zugriff auf das Internet gewähren. Erstellen Sie dazu ein Cloud NAT-Gateway und hängen Sie es an.
- Rufen Sie Vertex AI auf und wählen Sie Model Garden aus.
- Suchen Sie nach Anthropic und wählen Sie Claude 3.5 Sonnet aus.
- Wählen Sie Aktivieren aus. Sie müssen einige Informationen eingeben. Füllen Sie das Formular aus und wählen Sie Weiter aus.
- Wählen Sie auf der letzten Seite Zustimmen aus, um Claude 3.5 Sonnet zu aktivieren.
5. Aufgabe 3: NAT-Gateway und VMs erstellen
Wir müssen ausgehenden externen Zugriff auf das Internet gewähren. Erstellen Sie dazu ein Cloud NAT-Gateway und hängen Sie es an.
Verwenden Sie in Cloud Shell die folgenden Befehle.
- Erstellen Sie die Cloud NAT.
gcloud compute routers create anthro-out-nat \ --network $networkid \ --region us-east1
- Erstellen Sie das Cloud NAT-Gateway.
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
Erstellen Sie jetzt eine VM, um über das Python SDK auf Anthropic in Vertex AI zuzugreifen.
Wir erstellen eine VM zum Testen mit den folgenden installierten Paketen.
- Erstellen Sie in derselben Cloud Shell-Sitzung anthro-vm mit dem folgenden Befehl:
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]'"
Sie sollten eine VM sehen, die ohne öffentliche IP-Adressen erstellt wurde. Konfigurieren wir jetzt die VM.
6. Aufgabe 4: VM konfigurieren und testen
- Rufen Sie „VM-Instanzen“ auf. Wählen Sie die VM aus, die mit anthro-vm beginnt. Wählen Sie „SSH“ aus.
- Nachdem Sie eine SSH-Verbindung zu anthro-vm hergestellt haben, aktivieren Sie Root, indem Sie
sudo -i
eingeben. - Aktivieren Sie Ihre venv-Umgebung:
cd py-anthro-env
source env/bin/activate
- Authentifizieren wir das jetzt, damit wir später einige Tests durchführen können. Führen Sie den folgenden Befehl in der VM aus und drücken Sie auf y, wenn Sie dazu aufgefordert werden.
gcloud auth application-default login
- Kopieren Sie als Nächstes die URL, die mit https:// beginnt, öffnen Sie einen neuen Tab in Ihrem Lab-Browserfenster und fügen Sie die URL ein. Akzeptieren Sie die Aufforderungen.
- Wenn Sie die folgende Auswahl sehen, wechseln Sie zurück zur VM-Sitzung anthro-vm und fügen Sie unter Autorisierungscode eingeben den kopierten Code ein. Drücken Sie dann die Eingabetaste, um sich zu authentifizieren.
- Führen wir nun einen kurzen Test durch, um zu sehen, ob wir eine Verbindung zur Vertex Gemini API herstellen können. Dazu verwenden wir us-east5-aiplatform.googleapis.com. Wir führen also einen
dig
an diese Adresse aus, um zu sehen, wie der Traffic weitergeleitet wird.
dig us-east5-aiplatform.googleapis.com
- Die Ausgabe sollte in etwa so aussehen (die Adresse unterscheidet sich). Hinweis: Der Pfad verläuft über öffentliche IP-Adressen, da es sich um eine öffentliche API handelt.
; <<>> 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
- Verwenden wir jetzt Python. Geben Sie
ipython
ein, um die ipython-Oberfläche zu aktivieren.
ipython
- Kopieren Sie nun den folgenden Befehl und fügen Sie ihn ein. Claude wird gefragt: Wo finden 2024 die Olympischen Spiele statt? . PS: Ersetzen Sie
YOUR-Project-ID-Here
durch den Namen Ihrer Projekt-ID.
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)
- Drücken Sie die Eingabetaste, um das Script auszuführen und das Ergebnis zu sehen.
- Bei dieser Anfrage wurde über die öffentliche Vertex API auf Anthropic zugegriffen.
- Schließen Sie die SSH. Fahren Sie fort.
7. Aufgabe 5: PSC-Endpunkt für googleapis erstellen
Um eine private Verbindung zu unserem Vertex API-Endpunkt zu ermöglichen, erstellen wir einen Private Service Connect-Endpunkt für googleapis. So können wir eine private IP-Adresse verwenden, die wir zuweisen, um Traffic an die benötigte googleapis-Adresse weiterzuleiten, in diesem Fall Vertex Gemini.
- Öffnen Sie Cloud Shell, falls noch nicht geschehen. Erstellen Sie eine IP-Adresse für den PSC-Endpunkt. In diesem Fall verwenden wir 192.168.255.230.
gcloud compute addresses create anthro-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=192.168.255.230 \
--network=$networkid
- Prüfen, ob IP-Adresse erstellt wurde
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
- Als Nächstes erstellen Sie den PSC-Endpunkt.
gcloud compute forwarding-rules create pscanthrovertex \
--global \
--network=$networkid \
--address=anthro-ip \
--target-google-apis-bundle=all-apis
- Dadurch werden ein Endpunkt und ein Eintrag im Dienstverzeichnis erstellt. Prüfen, ob Endpunkt vorhanden ist
gcloud compute forwarding-rules describe pscanthrovertex --global
8. Aufgabe 6: Endpunktverbindung über automatische Service Directory-Zone prüfen
Stellen wir über den privaten Endpunkt eine Verbindung zu Gemini her.
- Rufen Sie die VM-Instanz anthro-vm1 auf. Wählen Sie „SSH“ aus und stellen Sie eine SSH-Verbindung zur VM her.
- Root-Zugriff durch Eingabe von
sudo -i
- Prüfe mit dem Befehl
dig
den Verbindungspfad zu aiplatform-pscanthrovertex.p.googleapis.com. Die IP-Adresse des PSC-Endpunkts sollte angezeigt werden.
dig aiplatform-pscanthrovertex.p.googleapis.com
9. Aufgabe 7: Manuellen DNS-Eintrag für googleapis erstellen (optional)
Sie können einen manuellen DNS-Eintrag erstellen, der mit Privatem DNS auf den PSC-Endpunkt verweist. Das wirkt sich auf alle Netzwerke aus, die Sie ihm zuweisen.
- Gehen Sie zu „Netzwerkdienste“ und wählen Sie „Cloud DNS“ aus.
- Unter „Zonen“ sollte eine automatisch erstellte Zone für Private Service Connect für Google APIs mit dem Zonentyp „Service Directory“ angezeigt werden. Damit kann eine Verbindung zum PSC-Endpunkt im Format **SERVICE-ENDPOINT.p.googleapis.com hergestellt werden. Beispiel
aiplatform-pscvertexgemini.p.googleapis.com
- In diesem Fall möchten wir einen privaten DNS-Eintrag manuell erstellen. Rufen Sie Cloud DNS auf und wählen Sie Zone erstellen aus.
- So konfigurieren Sie die Funktion:
Configuration | Name |
Zonentyp | Privat |
Zonenname | googleapis-private |
DNS-Name | googleapis.com |
Netzwerke hinzufügen (nach dem Hinzufügen „Fertig“ auswählen) | anthropic-net |
Auswahl abschließen | Erstellen |
- Wählen Sie im Bereich „Zonendetails“ die Option Standard hinzufügen aus, um einen A‑Eintrag hinzuzufügen.
Configuration | Name |
Ressourceneintragstyp | A |
IPv4-Adresse (IP-Adresse des Endpunkts hinzufügen) | 192.168.255.230 |
Auswahl abschließen | Erstellen |
- Wählen Sie im Bereich Zonendetails die Option Standard hinzufügen aus, um einen CNAME-Eintrag hinzuzufügen.
Configuration | Name |
DNS-Name | * |
Ressourcentyp des Eintrags | CNAME |
Kanonischer Name 1 | googleapis.com |
Auswahl abschließen | Erstellen |
- Sie sollten eine Einrichtung mit einem A-Eintrag und einem CNAME wie in
sehen.
- Als Nächstes prüfen wir die Verbindung mit diesen Änderungen auf anthro-vm.
10. Aufgabe 8: Endpunktverbindung über IP-Adresse prüfen (optional)
Stellen wir über den privaten Endpunkt eine Verbindung zu Gemini her.
- Rufen Sie die VM-Instanz anthro-vm auf. Wählen Sie „SSH“ aus und stellen Sie eine SSH-Verbindung zur VM her.
- Root-Zugriff durch Eingabe von
sudo -i
- Prüfen Sie mit dem Befehl
ping
den Verbindungspfad zu us-east5-aiplatform.googleapis.com. Dadurch wird die IP-Adresse im privaten DNS, der A-Eintrag für googleapis, gepingt. Diese IP ist ein PSC-Endpunkt und Ihre Pings schlagen fehl.
ping -c 2 us-east5-aiplatform.googleapis.com
- Prüfen Sie den Verbindungspfad mit einer
ping
mit dem automatisch erstellten DNS-Eintrag für PSC-Google APIs mitaiplatform-pscanthrovertex.p.googleapis.com
. Dies verweist auf die IP-Adresse des PSC-Endpunkts und Ihre Pings sind nicht erfolgreich.
ping -c 2 aiplatform-pscanthrovertex.p.googleapis.com
- Prüfen Sie mit dem Befehl
dig
den Verbindungspfad zu us-east5-aiplatform.googleapis.com. Dies sollte die IP-Adresse des PSC-Endpunkts sein.
dig us-east5-aiplatform.googleapis.com
- Kehren Sie zur Console zurück und öffnen Sie eine weitere Instanz der VM-Instanz anthro-vm. Wählen Sie SSH aus und stellen Sie eine SSH-Verbindung zur VM her.
- Root-Zugriff durch Eingabe von
sudo -i
- Führen Sie den folgenden Befehl aus, um die Verbindung in einem TCP-Dump zu sehen.
sudo tcpdump -i any port 53 -n or host us-east5-aiplatform.googleapis.com
- Wechseln Sie jetzt zurück zur ersten SSH-Instanz der VM-Instanz anthro-vm.
- Aktivieren Sie die Umgebung mit
cd py-gem-env
source env/bin/activate
- Testen wir jetzt Python. Geben Sie
ipython
ein, um die ipython-Oberfläche zu aktivieren.
ipython
- Kopieren Sie nun den folgenden Befehl und fügen Sie ihn ein. Claude wird dann gefragt: Was ist ein Roti? PS: Ersetzen Sie
YOUR-Project-ID-Here
durch den Namen Ihrer Projekt-ID.
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)
- Drücken Sie die Eingabetaste, um das Script auszuführen und das Ergebnis zu sehen.
- Kehren Sie zur zweiten Instanz der VM-Instanz anthro-vm zurück. Sie sollten das Ergebnis des TCPDUMP sehen. Sie sehen „in“ und „out“ und die IP-Adresse der VM verwendet die IP-Adresse des PSC-Endpunkts, um eine Verbindung zu us-east5-aiplatform.googleapis.com herzustellen.
Alle SSH-Sitzungen zur VM-Instanz anthro-vm schließen
11. Glückwunsch
Herzlichen Glückwunsch! Sie haben sowohl über die öffentliche API-Adresse als auch privat über den Private Service Connect-Endpunkt für Google APIs eine Verbindung zu Anthropic auf Vertex hergestellt. Mit dieser Funktion können Sie die Private API-Konnektivität auf Ihre lokale Umgebung oder eine andere Cloud-Umgebung ausweiten, die über Interconnect, Cross-Cloud Interconnect und VPC verbunden sind.
Bereinigen
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