Über den Private Service Connect-Endpunkt mit dem Python SDK auf Anthropic Claude in Vertex AI zugreifen

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.

103967918b096e97.png

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

55efc1aaa7a4d3ad.png

Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Minuten dauern. Wenn der Vorgang abgeschlossen ist, sollte in etwa Folgendes angezeigt werden:

7ffe5cbb04455448.png

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: 4261e776f64ea978.png

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

  1. Rufen Sie Vertex AI auf und wählen Sie Model Garden aus.
  2. Suchen Sie nach Anthropic und wählen Sie Claude 3.5 Sonnet aus.

4fd4338c598983d8.png

  1. Wählen Sie Aktivieren aus. Sie müssen einige Informationen eingeben. Füllen Sie das Formular aus und wählen Sie Weiter aus.
  2. Wählen Sie auf der letzten Seite Zustimmen aus, um Claude 3.5 Sonnet zu aktivieren. b3961312feb6c383.png

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.

  1. Erstellen Sie die Cloud NAT.
gcloud compute routers create anthro-out-nat \
    --network $networkid \
    --region us-east1 
  1. 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.

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

  1. Rufen Sie „VM-Instanzen“ auf. Wählen Sie die VM aus, die mit anthro-vm beginnt. Wählen Sie „SSH“ aus.
  2. Nachdem Sie eine SSH-Verbindung zu anthro-vm hergestellt haben, aktivieren Sie Root, indem Sie sudo -i eingeben.
  3. Aktivieren Sie Ihre venv-Umgebung:
cd py-anthro-env
source env/bin/activate
  1. 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
  1. 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.
  2. 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.

c29615cdf9324209.png

  1. 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
  1. 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
  1. Verwenden wir jetzt Python. Geben Sie ipython ein, um die ipython-Oberfläche zu aktivieren.
ipython

4685b31f13df54e1.png

  1. 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)
  1. Drücken Sie die Eingabetaste, um das Script auszuführen und das Ergebnis zu sehen.
  2. Bei dieser Anfrage wurde über die öffentliche Vertex API auf Anthropic zugegriffen.
  3. 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.

  1. Ö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
  1. Prüfen, ob IP-Adresse erstellt wurde
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
  1. 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
  1. 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.

  1. Rufen Sie die VM-Instanz anthro-vm1 auf. Wählen Sie „SSH“ aus und stellen Sie eine SSH-Verbindung zur VM her.
  2. Root-Zugriff durch Eingabe von sudo -i
  3. 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.

  1. Gehen Sie zu „Netzwerkdienste“ und wählen Sie „Cloud DNS“ aus.
  2. 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
  3. In diesem Fall möchten wir einen privaten DNS-Eintrag manuell erstellen. Rufen Sie Cloud DNS auf und wählen Sie Zone erstellen aus.
  4. 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

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

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

  1. Sie sollten eine Einrichtung mit einem A-Eintrag und einem CNAME wie in b7f122f0d1fd2850.png sehen.
  2. 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.

  1. Rufen Sie die VM-Instanz anthro-vm auf. Wählen Sie „SSH“ aus und stellen Sie eine SSH-Verbindung zur VM her.
  2. Root-Zugriff durch Eingabe von sudo -i
  3. 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
  1. Prüfen Sie den Verbindungspfad mit einer ping mit dem automatisch erstellten DNS-Eintrag für PSC-Google APIs mit aiplatform-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
  1. 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
  1. 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.
  2. Root-Zugriff durch Eingabe von sudo -i
  3. 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
  1. Wechseln Sie jetzt zurück zur ersten SSH-Instanz der VM-Instanz anthro-vm.
  2. Aktivieren Sie die Umgebung mit
cd py-gem-env
source env/bin/activate
  1. Testen wir jetzt Python. Geben Sie ipython ein, um die ipython-Oberfläche zu aktivieren.
ipython
  1. 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)
  1. Drücken Sie die Eingabetaste, um das Script auszuführen und das Ergebnis zu sehen.
  2. 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

Weitere Informationen zum Networking in Vertex AI