1. 概览
Vertex AI API 可以通过互联网访问,但在企业中,您可能希望以私密方式访问 Vertex AI API,而无需通过互联网。在本实验中,您将首先通过在虚拟机实例上运行的 Python SDK,经由公共互联网访问 Vertex 上的 Anthropic Claude Opus 4.5 和 Gemini 3 Pro。
然后,您将创建指向 Googleapis 的 Private Service Connect 端点,并更改流量流以使用专用端点连接到 Vertex API。
此 Python 代码示例将获取输入问题,将其传递给 Claude Opus 以生成回答,然后将该输出传递给 Gemini Pro 3 以创建文本摘要并生成图片。
在本实验中,您将创建以下模式。
图 1.

2. 目标
在本实验中,您将学习如何执行以下任务:
- 设置虚拟机实例以使用 Python SDK
- 在 Vertex AI 中启用 Anthropic 模型卡片
- 通过 Python 脚本连接到 Anthropic Claude Opus 4.5 和 Gemini 3 Pro
- 配置 PSC 端点以连接到 Googleapis
- 配置手动 DNS 条目
- 验证与 Googleais 的连接路径
- 执行 Python 脚本以查询模型
实验设置
自定进度的环境设置
- 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个。



- 项目名称是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时对其进行更新。
- 项目 ID 在所有 Google Cloud 项目中是唯一的,并且是不可变的(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常情况下,您无需关注该字符串。在大多数 Codelab 中,您都需要引用项目 ID(通常用
PROJECT_ID标识)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且此 ID 在项目期间会一直保留。 - 此外,还有第三个值,即部分 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档。
- 接下来,您需要在 Cloud 控制台中启用结算功能,以便使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有的话)。若要关闭资源以避免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除项目。Google Cloud 新用户符合参与 300 美元免费试用计划的条件。
启动 Cloud Shell
虽然可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。
在 Google Cloud 控制台 中,点击右上角工具栏中的 Cloud Shell 图标:

预配和连接到环境应该只需要片刻时间。完成后,您应该会看到如下内容:

这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证功能。您在此 Codelab 中的所有工作都可以在浏览器中完成。您无需安装任何程序。
3. 设置环境
我们将创建一个具有防火墙规则的自定义 VPC。如果您已有 VPC 和项目,则可以跳过此部分。
打开位于控制台右上角的 Cloud Shell。并按如下方式进行配置:
- 启用本实验中将使用的一些 API
gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable servicedirectory.googleapis.com
- 设置一些变量。这些变量是自定义 VPC 的项目 ID 和网络 ID(您将在第 4 步中创建 VPC)。
projectid=$(gcloud config get-value project)
networkid=anthropic-net
echo $projectid
echo $networkid
clear
- 现在,创建一个名为 anthropic-net 的自定义 VPC。
gcloud compute networks create $networkid \
--project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
- 在新 VPC 中创建 vm1-subnet
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 添加 ICMP、SSH 和 HTTP 防火墙规则
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. 在 Vertex Model Garden 中启用 Anthropic
我们需要授予出站外部互联网访问权限,因此我们来创建 Cloud NAT 网关并将其附加。
- 前往 Vertex AI 信息中心,然后选择 Model Garden
- 搜索 Anthropic,然后选择 Claude Opus 4.5
3. 选择启用,系统会要求您填写一些信息。填写表单,然后选择下一步。4. 在最终页面上,选择同意以启用 Claude 4.5 Opus

5. 创建 NAT 网关和虚拟机
我们需要授予出站外部互联网访问权限,因此我们来创建 Cloud NAT 网关并将其附加。
在 Cloud Shell 中使用以下命令
- 创建 Cloud NAT。
gcloud compute routers create anthro-out-nat \
--network $networkid \
--region us-east1
- 创建 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
现在,我们来创建一个虚拟机,以便通过 Python SDK 访问 Vertex AI 上的 Anthropic。
我们将创建一个虚拟机,并安装以下软件包以进行测试
- 在同一 Cloud Shell 会话中,使用以下命令创建 anthro-vm。
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-genai 'anthropic[vertex]'"
您应该会看到一个没有公共 IP 地址的虚拟机。现在,我们来配置虚拟机的
6. 配置虚拟机并进行测试
- 在 Google Cloud Shell 中,通过 SSH 连接到名为 anthro-vm 的新虚拟机。
gcloud compute ssh anthro-vm \
--project=$projectid \
--zone=us-east1-b \
--tunnel-through-iap \
-- -L 8080:localhost:8080
- 通过 SSH 连接到 anthro-vm 后,激活您的 venv 环境:
sudo -i -- bash -c 'cd py-anthro-env && source env/bin/activate && exec bash'
- 现在,我们来验证此账号,以便稍后进行一些测试。在虚拟机中运行以下命令,并在出现提示时按 y。
gcloud auth application-default login
- 接下来,复制以 https:// 开头的网址,在实验浏览器窗口中打开一个新标签页,然后粘贴该网址。接受提示。
- 看到以下内容后,选择复制,然后切换回虚拟机 anthro-vm 会话,在 Enter authorization code:(输入授权代码:)提示处粘贴复制的代码,然后按 Enter 键进行身份验证。

- 现在,我们来快速测试一下是否可以连接到 Vertex Gemini API。
dig *-aiplatform.googleapis.com
- 您应该会看到类似如下所示的内容(地址会有所不同)。请注意,由于该 API 是公共 API,因此路径是通过公共 IP 地址实现的。
; <<>> 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
- 现在,我们来使用 Python。输入
ipython以激活 ipython 界面。
ipython

- 现在,复制并粘贴以下内容。此提示会向 Claude Opus 4.5 提出问题:“构建智能体 AI 的关键步骤有哪些?”然后,将输出传递给 Gemini 3 Pro,后者会创建摘要并生成图像,然后将其保存在虚拟机上。
import os
import sys
import google.auth
from pathlib import Path
from google import genai
from google.genai import types
from anthropic import AnthropicVertex
# 1. Setup & Auth
print("--- Authenticating ---")
creds, project_id = google.auth.default()
LOCATION = "global"
# 2. Initialize Clients
print(f"--- Initializing Clients for Project: {project_id} ---")
google_client = genai.Client(vertexai=True, location=LOCATION, project=project_id)
claude_client = AnthropicVertex(region=LOCATION, project_id=project_id)
# 3. Define the Question
question = "What are the key steps to building Agentic AI?"
print(f"\n--- Asking Claude: {question} ---")
# 4. Get Claude's Research
msg = claude_client.messages.create(
model="claude-opus-4-5@20251101",
max_tokens=2048,
messages=[{"role": "user", "content": question}]
)
claude_text = msg.content[0].text
print(f"✓ Claude Answered ({len(claude_text)} chars)")
# 5. Send to Gemini 3 for Image & Summary
print("\n--- Sending to Gemini 3 (Image + Text) ---")
gemini_prompt = f"""
I am providing you with a technical explanation generated by Claude Opus 4.5.
1. READ the text below.
2. GENERATE a concise, bulleted executive summary.
3. CREATE a high-quality, futuristic illustration for a tech blog header (16:9).
--- INPUT TEXT ---
{claude_text}
"""
response = google_client.models.generate_content(
model="gemini-3-pro-image-preview",
contents=gemini_prompt,
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE'],
temperature=0.7
)
)
# 6. Save and Display Results
print("\n--- Results ---")
for part in response.parts:
if part.text:
print(f"\n[SUMMARY]:\n{part.text.strip()[:500]}...\n(Summary truncated for brevity)")
elif image := part.as_image():
filename = "gemini_agentic_ai.png"
image.save(filename)
print(f"\n✓ IMAGE SAVED to: {os.path.abspath(filename)}")
- 按两次 Enter 键即可运行并查看文本结果。
- 为了查看图片,我们需要在 Python 中启用 Web 服务。在 ipython 会话中运行以下命令
!python3 -m http.server 8080
- 现在,前往 Cloud Shell 中的网页预览选项,选择“在端口 8080 上预览”

- 在打开的网络会话中,选择 gemini_agentic_ai.png 以查看生成的图片。(以下示例图片由 AI 生成)

- 在 Cloud Shell 中,按 Ctrl C 退出会话,然后输入 exit 并按 Enter 键(重复三次),返回到 Cloud Shell 主页
- 我们继续吧。
7. 创建指向 googleapis 的 PSC 端点
为了能够以私密方式连接到 Vertex API 端点,我们将为 googleapis 创建一个 Private Service Connect 端点。这样一来,我们就可以使用分配的专用 IP 地址将流量路由到所需的 Googleapis(在本例中为 Vertex Gemini)。
- 如果 Cloud Shell 尚未打开,请将其打开。为 PSC 端点创建 IP。在本例中,我们将使用 192.168.255.230。
gcloud compute addresses create anthro-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=192.168.255.230 \
--network=$networkid
- 验证 IP 是否已创建
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
- 接下来,创建 PSC 端点
gcloud compute forwarding-rules create pscanthrovertex \
--global \
--network=$networkid \
--address=anthro-ip \
--target-google-apis-bundle=all-apis
- 这将创建一个端点和一个 Service Directory 条目。验证端点是否存在
gcloud compute forwarding-rules describe pscanthrovertex --global
8. 通过自动服务目录区域验证端点连接
让我们使用专用端点连接到 Gemini。
- 前往虚拟机实例 anthro-vm1。选择“SSH”,并通过 SSH 连接到虚拟机
- 使用
dig命令检查与 aiplatform-pscanthrovertex.p.googleapis.com 的连接路径。您应该会看到 PSC 端点的 IP 地址192.168.255.230
dig aiplatform-pscanthrovertex.p.googleapis.com
- 退出所有 SSH 会话
9. 创建指向 googleapis 的手动 DNS 条目
您可以使用专用 DNS 创建指向 PSC 端点的手动 DNS 条目。这会影响您为其分配的所有媒体文件。
在 Cloud Shell 中运行以下命令。
- 为 googleapis.com 创建一个专用 DNS 区域,并将其附加到 anthropic-net 网络。
gcloud dns managed-zones create googleapis-private \
--description="Private DNS zone for googleapis.com" \
--dns-name="googleapis.com." \
--visibility="private" \
--networks="anthropic-net"
- 创建将根网域映射到 Private Service Connect 端点 IP (192.168.255.230) 的 A 记录
gcloud dns record-sets create "googleapis.com." \
--zone="googleapis-private" \
--type="A" \
--ttl="300" \
--rrdatas="192.168.255.230"
- 创建通配符 CNAME 记录,以将所有子网域(例如 aiplatform.googleapis.com)重定向到根 A 记录
gcloud dns record-sets create "*.googleapis.com." \
--zone="googleapis-private" \
--type="CNAME" \
--ttl="300" \
--rrdatas="googleapis.com."
- 列出相应地区中的记录集,以确认 A 记录和 CNAME 已正确创建。
gcloud dns record-sets list --zone="googleapis-private"
- 在控制台视图中,它应如下所示。您应该会看到包含 A 记录和 CNAME 的设置,如图所示

- 接下来,我们验证 anthro-vm 上这些更改的连接性
10. 通过 IP 地址验证端点连接
让我们使用专用端点连接到 Gemini。
- 在 Google Cloud Shell 中,通过 SSH 连接到名为 anthro-vm 的新虚拟机。
gcloud compute ssh anthro-vm \
--project=$projectid \
--zone=us-east1-b \
--tunnel-through-iap \
-- -L 8080:localhost:8080
- 通过 SSH 连接到 anthro-vm 后,激活您的 venv 环境:
sudo -i -- bash -c 'cd py-anthro-env && source env/bin/activate && exec bash'
- 现在,我们来执行
dig,看看是否可以连接到 Vertex Gemini API。
dig *-aiplatform.googleapis.com
- 您应该会看到类似的内容(地址会有所不同)。请注意,路径是通过 PSC 端点 IP 地址实现的。
; <<>> 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
- 使用
ping命令。我们可以快速测试一下。注意:此 IP 是 PSC 端点,因此您的 ping 将失败。
ping -c 2 aiplatform.googleapis.com
- 现在,我们来使用 Python。输入
ipython以激活 ipython 界面。
ipython

- 现在,复制并粘贴以下内容。此提示会要求 Claude Opus 4.5“为初学者提供一份制作印度烤饼的分步食谱”。然后,将输出传递给 Gemini 3 Pro,后者会创建摘要并生成图片,然后将图片保存到虚拟机中
import os
import sys
import google.auth
from pathlib import Path
from google import genai
from google.genai import types
from anthropic import AnthropicVertex
# 1. Setup & Auth
print("--- Authenticating ---")
creds, project_id = google.auth.default()
LOCATION = "global"
# 2. Initialize Clients
print(f"--- Initializing Clients for Project: {project_id} ---")
google_client = genai.Client(vertexai=True, location=LOCATION, project=project_id)
claude_client = AnthropicVertex(region=LOCATION, project_id=project_id)
# 3. Define the Question
question = "Give me a step by step recipe to make a roti for a beginner?"
print(f"\n--- Asking Claude: {question} ---")
# 4. Get Claude's Research
msg = claude_client.messages.create(
model="claude-opus-4-5@20251101",
max_tokens=2048,
messages=[{"role": "user", "content": question}]
)
claude_text = msg.content[0].text
print(f"✓ Claude Answered ({len(claude_text)} chars)")
# 5. Send to Gemini 3 for Image & Summary
print("\n--- Sending to Gemini 3 (Image + Text) ---")
gemini_prompt = f"""
I am providing you with a technical explanation generated by Claude Opus 4.5.
1. READ the text below.
2. GENERATE a concise, bulleted executive summary.
3. CREATE a high-quality, futuristic illustration for a tech blog header (16:9).
--- INPUT TEXT ---
{claude_text}
"""
response = google_client.models.generate_content(
model="gemini-3-pro-image-preview",
contents=gemini_prompt,
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE'],
temperature=0.7
)
)
# 6. Save and Display Results
print("\n--- Results ---")
for part in response.parts:
if part.text:
print(f"\n[SUMMARY]:\n{part.text.strip()[:500]}...\n(Summary truncated for brevity)")
elif image := part.as_image():
filename = "cookingroti.png"
image.save(filename)
print(f"\n✓ IMAGE SAVED to: {os.path.abspath(filename)}")
- 按两次 Enter 键即可运行并查看文本结果。
- 如需查看图片,我们需要在 Python 中启用 Web 服务,因此请在 IPython 会话中运行以下命令
!python3 -m http.server 8080
- 现在,前往 Cloud Shell 中的“网页预览”选项,选择“在端口 8080 上预览”
- 选择 cookingroti.png 以查看生成的图片。(以下示例由 AI 生成)

- 在 Cloud Shell 中,按 Ctrl C 退出会话,然后输入 exit 并按 Enter 键(重复三次),返回到 Cloud Shell 主页
11. 恭喜
恭喜!您已经体验了乐趣,并成功通过公共 API 地址和以非公开方式使用 Googleapis 的 Private Service Connect 端点,在 Vertex 上连接到 Anthropic Claude Opus 4.5 和 Gemini 3 Pro。此功能可以将专用 API 连接扩展到通过(互连、Cross-Cloud Interconnect 和 VPC)连接的本地/其他云环境。
清理
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
后续步骤/了解详情
您可以详细了解 Vertex AI 网络
Codelab:通过 Private Service Connect 端点使用 Python SDK 访问 Gemini 3 Pro 聊天
Codelab:使用 ADK 构建 AI 智能体:基础知识
参与下一项实验
继续探索 Google Cloud,并查看以下其他 Google Cloud Skills Boost 实验:
