1. Übersicht
Auf die Vertex AI API kann über das Internet zugegriffen werden. 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, das auf einer VM-Instanz ausgeführt wird, auf Anthropic Claude Opus 4.6 und Gemini 3.1Pro in Vertex zu.
Anschließend erstellen Sie einen Private Service Connect-Endpunkt für Googleapis und ändern den Trafficfluss so, dass der private Endpunkt verwendet wird, um eine Verbindung zur Vertex API herzustellen.
Im Python-Codebeispiel werden die Eingabefragen an Claude Opus übergeben, um eine Antwort zu generieren. Diese Ausgabe wird dann an Gemini 3 übergeben, um eine Textzusammenfassung und ein Bild zu erstellen.
In diesem Lab erstellen Sie das folgende Muster.
Abbildung 1:

2. Ziele
Aufgaben in diesem Lab:
- VM-Instanz für die Verwendung des Python SDK einrichten
- Anthropic-Modellkarte in Vertex AI aktivieren
- Verbindung zu Anthropic Claude Opus 4.6 und Gemini 3.1 Pro über ein Python-Skript herstellen
- PSC-Endpunkt für die Verbindung zu Googleapis konfigurieren
- Manuelle DNS-Einträge konfigurieren
- Verbindungspfad zu Googleais prüfen
- Python-Skript zum Abfragen der Modelle ausführen
Lab einrichten
Umgebung zum selbstbestimmten Lernen einrichten
- 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 eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als
PROJECT_IDangegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er 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
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testzeitraum mit einem Guthaben von 300$ teilnehmen.
Cloud Shell starten
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, 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 Augenblicke dauern. Anschließend sehen Sie in etwa Folgendes:

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 in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.
3. 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 Cloud Shell oben rechts in der Konsole. Konfigurieren Sie sie so: 
- Einige der APIs aktivieren, die in diesem Lab verwendet werden
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 der benutzerdefinierten VPC, die Sie in Schritt 4 erstellen.
projectid=$(gcloud config get-value project)
networkid=anthropic-net
echo $projectid
echo $networkid
- Erstellen Sie nun eine benutzerdefinierte VPC (anthropic-net), ein Subnetz (vm1-subnet) und Firewallregeln.
gcloud compute networks create $networkid \
--project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
gcloud compute networks subnets create vm-subnet \
--project=$projectid --range=10.0.88.0/24 \
--stack-type=IPV4_ONLY --network=$networkid \
--region=us-east1
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
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
gcloud compute firewall-rules create $networkid-allow-web \
--project=$projectid \
--network=$networkid \
--description="Allows TCP connections on port 8080." \
--direction=INGRESS --priority=1000 \
--source-ranges=0.0.0.0/0 --action=ALLOW \
--rules=tcp:8080
4. Anthropic im Vertex Model Garden aktivieren
Wir müssen ausgehenden externen Zugriff auf das Internet gewähren. Erstellen wir also ein Cloud NAT-Gateway und hängen wir es an.
- Rufen Sie das Vertex AI-Dashboard auf und wählen Sie Model Garden aus.
- Suchen Sie nach Anthropic und wählen Sie Claude Opus 4.6 aus.

- Wählen Sie Aktivieren aus. Sie werden aufgefordert, einige Informationen einzugeben. Füllen Sie das Formular aus und wählen Sie Weiter aus.
- Wählen Sie auf der letzten Seite Zustimmen aus, um Claude 4.6 Opus zu aktivieren.

- Sie sollten die Erfolgsseite sehen.

5. NAT-Gateway und VMs erstellen
Wir müssen ausgehenden externen Zugriff auf das Internet gewähren. Erstellen wir also ein Cloud NAT-Gateway und hängen wir es an.
Verwenden Sie in Cloud Shell die folgenden Befehle
- Cloud NAT und Cloud NAT-Gateway erstellen
gcloud compute routers create anthro-out-nat \
--network $networkid \
--region us-east1
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 wir nun eine VM, um über das Python SDK auf Anthropic on Vertex AI zuzugreifen.
- Erstellen Sie in derselben Cloud Shell-Sitzung anthro-vm mit dem folgenden Befehl. Es kann 3 bis 4 Minuten dauern, bis die VM aktiv ist, während das Startskript installiert wird.
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
apt-get update
apt-get install python3 python3-dev python3-venv tcpdump dnsutils -y
python3 -m venv /opt/py-anthro-env
/opt/py-anthro-env/bin/pip install -U google-genai 'anthropic[vertex]' rich
chmod -R 777 /opt/py-anthro-env"
Sie sollten eine VM ohne öffentliche IP-Adressen sehen. Jetzt konfigurieren wir die VM.
6. VM konfigurieren und testen
- Stellen Sie in Google Cloud Shell eine SSH-Verbindung zur neuen VM mit dem Namen anthro-vm her. Es kann bis zu 3 Minuten dauern, bis die VM vollständig eingerichtet ist.
gcloud compute ssh anthro-vm \
--project=$projectid \
--zone=us-east1-b \
--tunnel-through-iap \
-- -L 8080:localhost:8080
- Führen wir nach der Verbindung einen kurzen Test durch, um zu sehen, ob wir eine Verbindung zur Vertex Gemini API herstellen können.
dig *-aiplatform.googleapis.com
- Die Ausgabe sollte in etwa so aussehen (die Adressen sind unterschiedlich). Beachten Sie, dass der Pfad über öffentliche IP-Adressen verläuft, da die API eine öffentliche API ist.
; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> *-aiplatform.googleapis.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3728 ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;*-aiplatform.googleapis.com. IN A ;; ANSWER SECTION: *-aiplatform.googleapis.com. 300 IN A 172.217.204.95 *-aiplatform.googleapis.com. 300 IN A 172.217.203.95 *-aiplatform.googleapis.com. 300 IN A 173.194.215.95 *-aiplatform.googleapis.com. 300 IN A 142.250.98.95 *-aiplatform.googleapis.com. 300 IN A 173.194.217.95 *-aiplatform.googleapis.com. 300 IN A 142.251.107.95 *-aiplatform.googleapis.com. 300 IN A 74.125.196.95
- Aktivieren Sie nun Ihre venv-Umgebung:
source /opt/py-anthro-env/bin/activate
- Wir authentifizieren das jetzt, um später einige Tests durchzuführen. Führen Sie den folgenden Befehl in der VM aus und drücken Sie bei Aufforderung y.
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. Nehmen Sie die Aufforderungen an.
- Kopieren Sie den Code, wechseln Sie zurück zur Sitzung der VM anthro-vm und fügen Sie den kopierten Code bei Autorisierungscode eingeben ein. Drücken Sie dann die Eingabetaste, um sich zu authentifizieren.

- Jetzt verwenden wir Python in unserem
env. Dadurch wird eine Python-Dateisuper-gen-ai.pyerstellt, in der Claude Opus 4.6 gefragt wird: What are the key steps to building Agentic AI? (Was sind die wichtigsten Schritte zum Erstellen von Agentic AI?). Die Ausgabe wird dann an Gemini 3.1 Pro übergeben, das eine Zusammenfassung erstellt. Anschließend generiert Gemini 3 Pro Image ein Bild, das auf der VM gespeichert wird.
Kopieren Sie den folgenden Befehl und fügen Sie ihn ein.
cat << 'EOF' > super-gen-ai.py
import os
import subprocess
import google.auth
from google import genai
from google.genai import types
from anthropic import AnthropicVertex
from rich.console import Console
from rich.panel import Panel
from rich.spinner import SPINNERS
from rich.text import Text
# Custom Super Me Animation Spinner - Now with moving power-up!
SPINNERS["super_me"] = {
"interval": 120,
"frames": [
"🧱🦖 🍄",
"🧱 🦖 🍄 ",
"🧱 🦖 🍄 ",
"🧱 🦕 🍄 ",
"🧱 🦖 🍄 ",
"🧱 🦖🍄 ",
"🧱 🌟 ",
"🧱 🌟 ",
"🧱 🌟 ",
"🧱 🌟 ",
"🧱 🌟 ",
"🧱 🌟 ",
"🧱 🌟 ",
"🧱 🌟 ",
"🧱 🌟 ",
"🧱 🌟 ",
"🧱 🌟 ",
"🧱 🌟 ",
"🧱🌟 "
]
}
console = Console()
def print_super_me_header():
super_me_art = """
[bold red] _____ [/bold red][bold green] __ __ _ [/bold green]
[bold red] / ____| [/bold red][bold green] | \/ | | |[/bold green]
[bold red] | (___ _ _ _ __ ___ _ __ [/bold red][bold green] | \ / | ___| |[/bold green]
[bold red] \___ \| | | | '_ \ / _ \ '__|[/bold red][bold green] | |\/| |/ _ \ |[/bold green]
[bold red] ____) | |_| | |_) | __/ | [/bold red][bold green] | | | | __/_|[/bold green]
[bold red] |_____/ \__,_| .__/ \___|_| [/bold red][bold green] |_| |_|\___(_)[/bold green]
[bold red] | | [/bold red][bold green] [/bold green]
[bold red] |_| [/bold red][bold green] [/bold green]
"""
console.print(super_me_art)
console.rule("[bold gold1]⭐ LEVEL 1-1: Vertex AI Orchestrator ⭐[/bold gold1]")
def main():
os.system('clear') # Clears the terminal for a clean UI
print_super_me_header()
# Create the images directory
os.makedirs("images", exist_ok=True)
with console.status("[bold yellow]🪙 Collecting Coins (Authenticating)...[/bold yellow]", spinner="super_me"):
try:
creds, project_id = google.auth.default()
LOCATION = "global"
except Exception as e:
console.print(f"[bold red]💥 GAME OVER! Authentication failed:[/bold red] {e}")
return
with console.status(f"[bold green]🍄 Powering up Clients for {project_id}...[/bold green]", spinner="super_me"):
google_client = genai.Client(vertexai=True, location=LOCATION, project=project_id)
claude_client = AnthropicVertex(region=LOCATION, project_id=project_id)
console.print("\n[bold cyan]The Kingdom needs a strategy![/bold cyan]")
# Auto-run prompt without user interaction
question = "What are the key steps to building Agentic AI?"
console.print(Panel(question, title="[bold green]Green Dino (Claude Opus) is entering the pipe...[/bold green]", border_style="green"))
with console.status("[bold green]🟢 Green Dino is clearing the level...\n[/bold green]", spinner="super_me"):
try:
msg = claude_client.messages.create(
model="claude-opus-4-6",
max_tokens=2048,
messages=[{"role": "user", "content": question}]
)
claude_text = msg.content[0].text
console.print(f"[bold green]✓ Level Cleared! Green Dino generated {len(claude_text)} bytes of strategy.[/bold green]\n")
except Exception as e:
console.print(f"[bold red]💥 BOSS ATTACK (Claude API Error):[/bold red] {e}")
return
with console.status("[bold red]🔴 Red Hero (Gemini 3.1 Pro Preview) is summarizing the map...\n[/bold red]", spinner="super_me"):
text_prompt = f"""
I am providing you with a response generated by Claude.
1. READ the text below.
2. GENERATE a concise, bulleted executive summary.
--- INPUT TEXT ---
{claude_text}
"""
try:
text_response = google_client.models.generate_content(
model="gemini-3.1-pro-preview",
contents=text_prompt,
config=types.GenerateContentConfig(temperature=0.7)
)
console.print("[bold red]✓ Super Me! Text Summary Complete.[/bold red]")
except Exception as e:
console.print(f"[bold red]💥 CHOMPER PLANT (Gemini Text Error):[/bold red] {e}")
return
with console.status("[bold blue]🔵 Mushroom Friend (Gemini 3 Pro Image) is painting the castle...\n[/bold blue]", spinner="super_me"):
image_prompt = f"""
CREATE a high-quality, futuristic illustration of autonomous AI agents for a tech blog header (16:9 aspect ratio).
Base the image directly on the following text summary:
{text_response.text}
"""
try:
image_response = google_client.models.generate_content(
model="gemini-3-pro-image-preview",
contents=image_prompt,
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE'],
temperature=0.7
)
)
console.print("[bold blue]✓ Masterpiece Complete![/bold blue]\n")
except Exception as e:
console.print(f"[bold red]💥 FALLING BLOCK (Gemini Image Error):[/bold red] {e}")
return
console.rule("[bold gold1]🚩 COURSE CLEAR! 🚩[/bold gold1]")
if text_response.text:
console.print(Panel(text_response.text.strip(),
title="[bold gold1]Gemini 3.1 Pro Summary[/bold gold1]",
border_style="gold1"))
for part in image_response.parts:
if image := part.as_image():
# Save inside the images folder with the focus-specific name
filename = "images/building-agentic.png"
image.save(filename)
console.print(f"\n[bold green]✓ REWARD SAVED:[/bold green] [underline]{os.path.abspath(filename)}[/underline]")
console.rule("[bold red]Web Server Warp Pipe[/bold red]")
with console.status("[bold yellow]Opening the warp pipe (HTTP server)...[/bold yellow]", spinner="super_me"):
# Kill any existing server first so it doesn't crash on port binding
os.system('pkill -f "http.server" > /dev/null 2>&1')
# Start the server with the root directory set specifically to 'images'
subprocess.Popen(
["python3", "-m", "http.server", "8080", "--directory", "images"],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL
)
console.print("[bold green]✓ Warp Pipe is open in the background![/bold green]")
console.print("[bold magenta]View your files here (Click Web Preview -> Preview on port 8080):[/bold magenta] [underline]http://localhost:8080/[/underline]\n")
if __name__ == "__main__":
main()
EOF
python3 super-gen-ai.py
Das Skript wird in einer ansprechenden Benutzeroberfläche ausgeführt und startet einen Webserver, damit Sie die Bildausgabe ansehen können. Geben Sie python3 super-gen-ai.py ein, um das Skript noch einmal auszuführen.
- Wählen Sie in Cloud Shell die Option „Webvorschau“ und dann „Vorschau auf Port 8080“
aus. - Wählen Sie in der geöffneten Websitzung building_agentic.png aus, um das generierte Bild anzusehen. (Beispielbild unten wurde von KI generiert)

- Führen Sie in der Cloud Shell den folgenden Befehl aus, um den Webserver zu beenden.
pkill -f "http.server"
- Geben Sie als Nächstes
exitein, um zur Cloud Shell-Startseite zurückzukehren. Wenn du damit fertig bist, können wir fortfahren.
7. 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ötigten Google APIs weiterzuleiten, in diesem Fall Vertex Gemini.
- Öffnen Sie Cloud Shell, falls noch nicht geschehen. Wir erstellen eine IP-Adresse für den PSC-Endpunkt und erstellen den Private Service Connect-Endpunkt. In diesem Fall verwenden wir 192.168.255.230.
projectid=$(gcloud config get-value project)
networkid=anthropic-net
gcloud compute addresses create anthro-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=192.168.255.230 \
--network=$networkid
gcloud compute forwarding-rules create pscanthrovertex \
--global \
--network=$networkid \
--address=anthro-ip \
--target-google-apis-bundle=all-apis
- Bestätigen
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
gcloud compute forwarding-rules describe pscanthrovertex --global
8. Manuellen DNS-Eintrag für googleapis erstellen
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. Sie erstellen jetzt Folgendes:
- Eine private DNS-Zone für googleapis.com, die an das Netzwerk „anthropic-net“ angehängt wird.
- Ein A-Eintrag, der die Stammdomain der IP-Adresse des Private Service Connect-Endpunkts (192.168.255.230) zuordnet
- Ein Platzhalter-CNAME-Eintrag, um alle Subdomains (z.B. aiplatform.googleapis.com) an den A-Stammdatensatz weiterzuleiten
- Führen Sie die folgenden Befehle in Cloud Shell aus.
gcloud dns managed-zones create googleapis-private \
--description="Private DNS zone for googleapis.com" \
--dns-name="googleapis.com." \
--visibility="private" \
--networks="anthropic-net"
gcloud dns record-sets create "googleapis.com." \
--zone="googleapis-private" \
--type="A" \
--ttl="300" \
--rrdatas="192.168.255.230"
gcloud dns record-sets create "*.googleapis.com." \
--zone="googleapis-private" \
--type="CNAME" \
--ttl="300" \
--rrdatas="googleapis.com."
- Listen Sie die Datensatzgruppen in der Zone auf, um zu bestätigen, dass der A-Eintrag und der CNAME-Eintrag richtig erstellt wurden.
gcloud dns record-sets list --zone="googleapis-private"
- In der Konsolenansicht sollte es so aussehen. Sie sollten eine Einrichtung mit einem A-Eintrag und einem CNAME-Eintrag wie in
sehen. - Als Nächstes prüfen wir die Verbindung mit diesen Änderungen auf anthro-vm.
9. Endpunktverbindung über IP-Adresse prüfen
Wir stellen eine Verbindung über den privaten Endpunkt her, um eine Verbindung zu Gemini herzustellen.
- Stellen Sie in Google Cloud Shell eine SSH-Verbindung zur neuen VM mit dem Namen anthro-vm her.
gcloud compute ssh anthro-vm \
--project=$projectid \
--zone=us-east1-b \
--tunnel-through-iap \
-- -L 8080:localhost:8080
- Prüfen Sie in Ihrer VM den Verbindungspfad zu aiplatform-pscanthrovertex.p.googleapis.com mit dem Befehl
dig. Sie sollten die IP-Adresse des PSC-Endpunkts192.168.255.230sehen.
dig aiplatform-pscanthrovertex.p.googleapis.com +noall +answer
Wir stellen eine Verbindung über den privaten Endpunkt her, um eine Verbindung zu Gemini herzustellen.
- Führen wir nun einen
digaus, um zu prüfen, ob wir eine Verbindung zur Vertex Gemini API herstellen können.
dig *-aiplatform.googleapis.com
- Die Ausgabe sollte in etwa so aussehen (die Adresse ist jedoch anders). Der Pfad verläuft über die IP-Adressen des PSC-Endpunkts.
; <<>> DiG 9.18.41-1~deb12u1-Debian <<>> *-aiplatform.googleapis.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33703 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;*-aiplatform.googleapis.com. IN A ;; ANSWER SECTION: *-aiplatform.googleapis.com. 300 IN CNAME googleapis.com. googleapis.com. 300 IN A 192.168.255.230 ;; Query time: 8 msec ;; SERVER: 169.254.169.254#53(169.254.169.254) (UDP) ;; WHEN: Sat Nov 29 15:19:15 UTC 2025 ;; MSG SIZE rcvd: 86
- Verwendung des
ping-Befehls. Wir können einen kurzen Test durchführen. Hinweis: Diese IP-Adresse ist ein PSC-Endpunkt. Ihre Pings sind nicht erfolgreich.
ping -c 2 aiplatform.googleapis.com
- Aktivieren Sie nun Ihre venv-Umgebung:
source /opt/py-anthro-env/bin/activate
- Jetzt verwenden wir Python in unserem
env. Dadurch wird eine Python-Dateistar-me.pyerstellt, in der Claude Opus 4.6 gefragt wird: Gib mir ein Schritt-für-Schritt-Rezept für die Zubereitung von Roti für Anfänger. Die Ausgabe wird dann an Gemini 3.1 Pro übergeben, das eine Zusammenfassung erstellt, und Gemini 3 Pro Image generiert ein Bild, das auf der VM gespeichert wird.
cat << 'EOF' > star-me.py
import os
import subprocess
import google.auth
from google import genai
from google.genai import types
from anthropic import AnthropicVertex
from rich.console import Console
from rich.panel import Panel
from rich.spinner import SPINNERS
from rich.text import Text
# Custom Star Me Animation Spinner - Directional Flight!
SPINNERS["star_me"] = {
"interval": 120,
"frames": [
"🌌 🚀 🛸 ",
"🌌 🚀 🛸 ",
"🌌 🚀 🛸 ",
"🌌 🚀 🛸 ",
"🌌 🚀 🛸 ",
"🌌 🚀 🛸 ",
"🌌 🚀 🛸 ",
"🌌 🚀🛸 ",
"🌌 💥 ",
"🌌 ✨ ✨ ",
"🌌 ✨ ✨ ",
"🌌 ✨ ✨ ",
"🌌 ✨ ✨ ",
"🌌 "
]
}
console = Console()
def print_star_me_header():
star_me_art = """
[bold cyan] _____ _______ _____ __ __ ______ [/bold cyan]
[bold cyan] / ____|__ __|/\ | __ \ | \/ | ____|[/bold cyan]
[bold cyan] | (___ | | / \ | |__) | | \ / | |__ [/bold cyan]
[bold cyan] \___ \ | | / /\ \ | _ / | |\/| | __| [/bold cyan]
[bold cyan] ____) | | |/ ____ \| | \ \ | | | | |____ [/bold cyan]
[bold cyan] |_____/ |_/_/ \_\_| \_\ |_| |_|______|[/bold cyan]
"""
console.print(star_me_art)
console.rule("[bold gold1]⭐ EPISODE I: The AI Awakening ⭐[/bold gold1]")
def main():
os.system('clear') # Clears the terminal for a clean UI
print_star_me_header()
# Create the images directory
os.makedirs("images", exist_ok=True)
with console.status("[bold yellow]🪙 Bypassing Security (Authenticating)...[/bold yellow]", spinner="star_me"):
try:
creds, project_id = google.auth.default()
LOCATION = "global"
except Exception as e:
console.print(f"[bold red]💥 COMM LINK SEVERED! Authentication failed:[/bold red] {e}")
return
with console.status(f"[bold cyan]📡 Establishing secure connection for {project_id}...[/bold cyan]", spinner="star_me"):
google_client = genai.Client(vertexai=True, location=LOCATION, project=project_id)
claude_client = AnthropicVertex(region=LOCATION, project_id=project_id)
console.print("\n[bold cyan]The Galaxy needs sustenance![/bold cyan]")
# Auto-run prompt for the recipe
question = "Give me a step by step recipe to make a roti for a beginner?"
console.print(Panel(question, title="[bold green]Space Master (Claude Opus) is searching the archives...[/bold green]", border_style="green"))
with console.status("[bold green]🟢 Space Master is compiling the ancient texts...\n[/bold green]", spinner="star_me"):
try:
msg = claude_client.messages.create(
model="claude-opus-4-6",
max_tokens=2048,
messages=[{"role": "user", "content": question}]
)
claude_text = msg.content[0].text
console.print(f"[bold green]✓ Archives Retrieved! Space Master generated a {len(claude_text)}-character Holocron.[/bold green]\n")
except Exception as e:
console.print(f"[bold red]💥 INTERFERENCE DETECTED (Claude API Error):[/bold red] {e}")
return
with console.status("[bold gold1]🟡 Protocol Bot (Gemini 3.1 Pro Preview) is translating the recipe...\n[/bold gold1]", spinner="star_me"):
text_prompt = f"""
I am providing you with a response generated by a Space Master.
1. READ the text below.
2. GENERATE a concise, bulleted executive summary.
--- INPUT TEXT ---
{claude_text}
"""
try:
text_response = google_client.models.generate_content(
model="gemini-3.1-pro-preview",
contents=text_prompt,
config=types.GenerateContentConfig(temperature=0.7)
)
console.print("[bold gold1]✓ Translation Complete! The Protocol Bot has summarized the steps.[/bold gold1]")
except Exception as e:
console.print(f"[bold red]💥 SYSTEM FAILURE (Gemini Text Error):[/bold red] {e}")
return
with console.status("[bold blue]🔵 Astro Bot (Gemini 3 Pro Image) is projecting the hologram...\n[/bold blue]", spinner="star_me"):
image_prompt = f"""
CREATE a high-quality, beautiful illustration for a blog header (16:9 aspect ratio) of someone making roti, but with a subtle sci-fi, cinematic lighting aesthetic.
Base the image directly on the following text summary:
{text_response.text}
"""
try:
image_response = google_client.models.generate_content(
model="gemini-3-pro-image-preview",
contents=image_prompt,
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE'],
temperature=0.7
)
)
console.print("[bold blue]✓ Hologram Projection Ready![/bold blue]\n")
except Exception as e:
console.print(f"[bold red]💥 BAD COMPRESSOR (Gemini Image Error):[/bold red] {e}")
return
console.rule("[bold cyan]🚩 MISSION ACCOMPLISHED 🚩[/bold cyan]")
if text_response.text:
console.print(Panel(text_response.text.strip(),
title="[bold gold1]Protocol Bot Recipe Summary[/bold gold1]",
border_style="gold1"))
for part in image_response.parts:
if image := part.as_image():
# Save inside the images folder with the focus-specific name
filename = "images/cookingroti.png"
image.save(filename)
console.print(f"\n[bold green]✓ DATA SECURED:[/bold green] [underline]{os.path.abspath(filename)}[/underline]")
console.rule("[bold cyan]Hyperlink Uplink[/bold cyan]")
with console.status("[bold yellow]Opening the frequencies (HTTP server)...[/bold yellow]", spinner="star_me"):
# Kill any existing server first so it doesn't crash on port binding
os.system('pkill -f "http.server" > /dev/null 2>&1')
# Start the server with the root directory set specifically to 'images'
subprocess.Popen(
["python3", "-m", "http.server", "8080", "--directory", "images"],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL
)
console.print("[bold green]✓ Transmitting on Port 8080![/bold green]")
console.print("[bold magenta]View your files here (Click Web Preview -> Preview on port 8080):[/bold magenta] [underline]http://localhost:8080/[/underline]\n")
if __name__ == "__main__":
main()
EOF
python3 star-me.py
Das Skript wird in einer ansprechenden Benutzeroberfläche ausgeführt und startet einen Webserver, damit Sie die Bildausgabe ansehen können. Wenn Sie das Skript noch einmal ausführen möchten, geben Sie python3 star-me.py ein.
- Wählen Sie in Cloud Shell die Option „Webvorschau“ und dann „Vorschau auf Port 8080“ aus.

- Wählen Sie cookingroti.png aus, um das generierte Bild anzusehen. (Das folgende Beispiel wurde von KI generiert.)

- Führen Sie in Cloud Shell den folgenden Befehl aus, um den Webserver zu beenden und zur VM zurückzukehren.
pkill -f "http.server"
- Geben Sie als Nächstes
exitein, um zur Cloud Shell-Startseite zurückzukehren.
10. Glückwunsch
Herzlichen Glückwunsch! Sie haben erfolgreich eine Verbindung zu Anthropic Claude Opus 4.6 und Gemini 3.1 Pro in Vertex AI hergestellt, sowohl über die öffentliche API-Adresse als auch privat über den Private Service Connect-Endpunkt für Google APIs. Mit dieser Funktion können Sie private API-Verbindungen auf Ihre lokale Umgebung oder andere Cloud-Umgebungen 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 anthropic-net-allow-web --quiet
gcloud compute forwarding-rules delete pscanthrovertex --global --quiet
gcloud dns record-sets delete googleapis.com. --zone googleapis-private --type A --quiet
gcloud dns record-sets delete *.googleapis.com --zone googleapis-private --type CNAME --quiet
gcloud dns managed-zones delete googleapis-private --quiet
gcloud compute addresses delete anthro-ip --global --quiet
gcloud compute networks subnets delete vm-subnet --region=us-east1 --quiet
gcloud compute networks delete anthropic-net --quiet
Weitere Informationen
Weitere Informationen zum Vertex AI-Netzwerk
Codelab: Zugriff auf Gemini 3 Pro-Chat über das Python SDK über einen Private Service Connect-Endpunkt
Codelab: KI-Agenten mit dem ADK erstellen:Grundlagen
Nächstes Lab absolvieren
Fahren Sie mit Google Cloud fort und sehen Sie sich die folgenden Labs von Google Cloud Skills Boost an: