1. 總覽
Vertex AI API 可透過網際網路存取,但您可能希望在企業中私下存取 Vertex AI API,而不透過網際網路。在本實驗室中,您將先透過公開網際網路,在 VM 執行個體上執行 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. 目標
在本實驗室中,您將瞭解如何執行下列工作:
- 設定 VM 執行個體以使用 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 控制台會自動產生專屬字串,通常您不需要理會該字串。在大多數程式碼研究室中,您需要參照專案 ID (通常標示為
PROJECT_ID)。如果您不喜歡產生的 ID,可以產生另一個隨機 ID。你也可以嘗試使用自己的名稱,看看是否可用。完成這個步驟後就無法變更,且專案期間會維持不變。 - 請注意,有些 API 會使用第三個值,也就是「專案編號」。如要進一步瞭解這三種值,請參閱說明文件。
- 接著,您需要在 Cloud 控制台中啟用帳單,才能使用 Cloud 資源/API。完成這個程式碼研究室的費用不高,甚至可能完全免費。如要關閉資源,避免在本教學課程結束後繼續產生費用,您可以刪除建立的資源或專案。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。
啟動 Cloud Shell
雖然可以從筆電遠端操作 Google Cloud,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是 Cloud 中執行的指令列環境。
在 Google Cloud 控制台中,點選右上工具列的 Cloud Shell 圖示:

佈建並連線至環境的作業需要一些時間才能完成。完成後,您應該會看到如下的內容:

這部虛擬機器搭載各種您需要的開發工具,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提升網路效能和驗證功能。本程式碼研究室的所有作業都可以在瀏覽器中完成。你不需要安裝任何軟體。
3. 設定環境
我們將建立含有防火牆規則的自訂虛擬私有雲。如果您已有虛擬私有雲和專案,可以略過這部分。
開啟控制台右上方的 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
- 在虛擬私有雲中新增 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 模型園地中啟用 Anthropic
我們需要授予連出網際網路的外部存取權,因此請建立並附加 Cloud NAT 閘道。
- 前往 Vertex AI 資訊主頁,然後選取「Model Garden」
- 搜尋「Anthropic」,然後選取「Claude Opus 4.5」
3. 選取「啟用」,系統會要求你填寫一些資訊。填寫表單並選取「下一步」。4. 在最後一頁選取「同意」,即可啟用 Claude 4.5 Opus

5. 建立 NAT 閘道和 VM
我們需要授予連出網際網路的外部存取權,因此請建立並附加 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
現在,我們來建立一個 VM,透過 Python SDK 存取 Vertex AI 上的 Anthropic。
我們將建立 VM,並安裝下列套件進行測試
- 在同一個 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]'"
您應該會看到建立的 VM 沒有公開 IP 位址。現在來設定 VM 的
6. 設定 VM 並進行測試
- 在 Google Cloud Shell 中,透過 SSH 連線至名為 anthro-vm 的新 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'
- 現在請驗證這項設定,以便稍後進行測試。在 VM 中執行下列指令,並在系統提示時按下 y。
gcloud auth application-default login
- 接著複製開頭為 https:// 的網址,在實驗室瀏覽器視窗中開啟新分頁並貼上網址。接受提示。
- 看到下列選取複製畫面時,請切換回 VM「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,由後者建立摘要、生成圖片,並儲存至 VM。
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 中啟用網路服務。在 ipython 工作階段中執行下列指令
!python3 -m http.server 8080
- 現在前往 Cloud Shell 中的網頁預覽選項,選取「透過以下通訊埠預覽:8080」

- 在開啟的網頁工作階段中,選取「gemini_agentic_ai.png」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
- 這會建立端點和服務目錄項目。確認端點存在
gcloud compute forwarding-rules describe pscanthrovertex --global
8. 透過自動服務目錄區域驗證端點連線
讓我們使用私人端點連線至 Gemini。
- 前往 VM 執行個體 anthro-vm1。選取「SSH」,透過 SSH 連線至 VM
- 使用
dig指令檢查 aiplatform-pscanthrovertex.p.googleapis.com 的連線路徑。您應該會看到 PSC 端點的 IP192.168.255.230
dig aiplatform-pscanthrovertex.p.googleapis.com
- 結束所有 SSH 工作階段
9. 建立 googleapis 的手動 DNS 項目
您可以使用私人 DNS 建立手動 DNS 項目,指向 PSC 端點。這會影響您指派給該廣告活動的所有聯播網。
在 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"
- 建立 A 記錄,將根網域對應至 Private Service Connect 端點 IP (192.168.255.230)
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 的新 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「Give me a step by step recipe to make a roti for a beginner?」(提供適合初學者的印度烤餅食譜,並列出逐步說明)。然後將輸出內容傳遞至 Gemini 3 Pro,後者會建立摘要、生成圖像,並儲存在 VM 中
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 中啟用網路服務,因此請在 IPython 工作階段中執行下列指令
!python3 -m http.server 8080
- 現在前往 Cloud Shell 中的網頁預覽選項,選取「透過以下通訊埠預覽:8080」
- 選取「cookingroti.png」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 技能重點加強實驗室:
