透過 Private Service Connect 端點,使用 Python SDK 在 Vertex AI 上存取 Anthropic Claude Opus 4.5 和 Gemini 3

1. 總覽

Vertex AI API 可透過網際網路存取,但您可能希望在企業中私下存取 Vertex AI API,而不透過網際網路。在本實驗室中,您將先透過公開網際網路,在 VM 執行個體上執行 Python SDK,藉此存取 Vertex 上的 Anthropic Claude Opus 4.5Gemini 3 Pro

接著,您將建立 Googleapis 的 Private Service Connect 端點,並變更流量流程,使用私人端點連線至 Vertex API。

Python 程式碼範例會接收輸入的問題,並將問題傳送至 Claude Opus 生成答案,然後將輸出內容傳送至 Gemini Pro 3 建立文字摘要並生成圖片。

在本實驗室中,您將建立下列模式。

圖 1。

c8f37e193349bfd6.png

2. 目標

在本實驗室中,您將瞭解如何執行下列工作:

  • 設定 VM 執行個體以使用 Python SDK
  • 在 Vertex AI 中啟用 Anthropic 模型資訊卡
  • 透過 Python 指令碼連線至 Anthropic Claude Opus 4.5Gemini 3 Pro
  • 設定 PSC 端點以連線至 Googleapis
  • 設定手動 DNS 項目
  • 確認 Googleais 的連線路徑
  • 執行 Python 指令碼來查詢模型

設定研究室

自行設定環境

  1. 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • 專案名稱是這個專案參與者的顯示名稱。這是 Google API 未使用的字元字串。你隨時可以更新。
  • 專案 ID 在所有 Google Cloud 專案中都是不重複的,而且設定後即無法變更。Cloud 控制台會自動產生專屬字串,通常您不需要理會該字串。在大多數程式碼研究室中,您需要參照專案 ID (通常標示為 PROJECT_ID)。如果您不喜歡產生的 ID,可以產生另一個隨機 ID。你也可以嘗試使用自己的名稱,看看是否可用。完成這個步驟後就無法變更,且專案期間會維持不變。
  • 請注意,有些 API 會使用第三個值,也就是「專案編號」。如要進一步瞭解這三種值,請參閱說明文件
  1. 接著,您需要在 Cloud 控制台中啟用帳單,才能使用 Cloud 資源/API。完成這個程式碼研究室的費用不高,甚至可能完全免費。如要關閉資源,避免在本教學課程結束後繼續產生費用,您可以刪除建立的資源或專案。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。

啟動 Cloud Shell

雖然可以從筆電遠端操作 Google Cloud,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是 Cloud 中執行的指令列環境。

Google Cloud 控制台中,點選右上工具列的 Cloud Shell 圖示:

啟用 Cloud Shell

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

Google Cloud Shell 終端機的螢幕截圖,顯示環境已連線

這部虛擬機器搭載各種您需要的開發工具,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提升網路效能和驗證功能。本程式碼研究室的所有作業都可以在瀏覽器中完成。你不需要安裝任何軟體。

3. 設定環境

我們將建立含有防火牆規則的自訂虛擬私有雲。如果您已有虛擬私有雲和專案,可以略過這部分。

開啟控制台右上方的 Cloud Shell。然後進行下列設定:b51b80043d3bac90.png

  1. 啟用本實驗室中會用到的一些 API
gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable servicedirectory.googleapis.com
  1. 設定一些變數。這些變數是自訂 VPC 的專案 ID 和網路 ID (您會在步驟 4 中建立 VPC)。
projectid=$(gcloud config get-value project)
networkid=anthropic-net 
echo $projectid
echo $networkid
clear
  1. 現在建立名為 anthropic-net 的自訂 VPC。
gcloud compute networks create $networkid \
--project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
  1. 在新 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
  1. 在虛擬私有雲中新增 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 閘道。

  1. 前往 Vertex AI 資訊主頁,然後選取「Model Garden」
  2. 搜尋「Anthropic」,然後選取「Claude Opus 4.5」

d8937fa7d5e216b7.png 3. 選取「啟用」,系統會要求你填寫一些資訊。填寫表單並選取「下一步」。4. 在最後一頁選取「同意」,即可啟用 Claude 4.5 Opus

6ccda2a237000dea.png

  1. 84fbda607163ab9a.png

5. 建立 NAT 閘道和 VM

我們需要授予連出網際網路的外部存取權,因此請建立並附加 Cloud NAT 閘道。

在 Cloud Shell 中使用下列指令

  1. 建立 Cloud NAT。
gcloud compute routers create anthro-out-nat \
    --network $networkid \
    --region us-east1 
  1. 建立 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,並安裝下列套件進行測試

  1. 在同一個 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 並進行測試

  1. 在 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
  1. 透過 SSH 連線至 anthro-vm 後,請啟動 venv 環境:
sudo -i -- bash -c 'cd py-anthro-env && source env/bin/activate && exec bash'
  1. 現在請驗證這項設定,以便稍後進行測試。在 VM 中執行下列指令,並在系統提示時按下 y
gcloud auth application-default login
  1. 接著複製開頭為 https:// 的網址,在實驗室瀏覽器視窗中開啟新分頁並貼上網址。接受提示。
  2. 看到下列選取複製畫面時,請切換回 VM「anthro-vm」工作階段,然後在「Enter authorization code:」提示中貼上複製的程式碼,並按下 Enter 鍵進行驗證。

b703db7aa2aa286a.png

  1. 現在讓我們快速測試是否可以連線至 Vertex Gemini API。
dig *-aiplatform.googleapis.com
  1. 畫面應如下所示 (地址會有所不同)。請注意,由於 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
  1. 現在來使用 Python。輸入 ipython 即可啟用 ipython 介面。
ipython

845ef4291429888a.png

  1. 複製並貼上下列內容。這會詢問 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)}")
  1. 按兩次 Enter 鍵即可執行並查看文字結果。
  2. 如要查看圖片,我們需要在 Python 中啟用網路服務。在 ipython 工作階段中執行下列指令
!python3 -m http.server 8080
  1. 現在前往 Cloud Shell 中的網頁預覽選項,選取「透過以下通訊埠預覽:8080」6dcb2bf9a08aacaf.png
  2. 在開啟的網頁工作階段中,選取「gemini_agentic_ai.png」gemini_agentic_ai.png即可查看生成的圖片。(以下為 AI 生成的圖片範例)
    fdcb79d8410dadc5.png
  3. Cloud Shell 中,按下 Ctrl C 鍵結束工作階段,然後輸入 exit 並按下 Enter 鍵 (重複三次),返回 Cloud Shell 主畫面
  4. 我們繼續吧。

7. 建立 googleapis 的 PSC 端點

如要啟用 Vertex API 端點的私人連線,請為 googleapis 建立 Private Service Connect 端點。這樣一來,我們就能使用指派的私人 IP 位址,將流量轉送到所需的 googleapis,也就是 Vertex Gemini。

  1. 如果尚未開啟 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
  1. 確認已建立 IP
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
  1. 接著建立 PSC 端點
gcloud compute forwarding-rules create pscanthrovertex \
    --global \
    --network=$networkid \
    --address=anthro-ip \
    --target-google-apis-bundle=all-apis
  1. 這會建立端點和服務目錄項目。確認端點存在
gcloud compute forwarding-rules describe pscanthrovertex --global

8. 透過自動服務目錄區域驗證端點連線

讓我們使用私人端點連線至 Gemini。

  1. 前往 VM 執行個體 anthro-vm1。選取「SSH」,透過 SSH 連線至 VM
  2. 使用 dig 指令檢查 aiplatform-pscanthrovertex.p.googleapis.com 的連線路徑。您應該會看到 PSC 端點的 IP 192.168.255.230
dig aiplatform-pscanthrovertex.p.googleapis.com
  1. 結束所有 SSH 工作階段

9. 建立 googleapis 的手動 DNS 項目

您可以使用私人 DNS 建立手動 DNS 項目,指向 PSC 端點。這會影響您指派給該廣告活動的所有聯播網。

在 Cloud Shell 中執行下列指令。

  1. 為 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"
  1. 建立 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"
  1. 建立萬用字元 CNAME 記錄,將所有子網域 (例如 aiplatform.googleapis.com) 重新導向至根 A 記錄
gcloud dns record-sets create "*.googleapis.com." \
    --zone="googleapis-private" \
    --type="CNAME" \
    --ttl="300" \
    --rrdatas="googleapis.com."
  1. 列出區域中的記錄集,確認 A 記錄和 CNAME 已正確建立。
gcloud dns record-sets list --zone="googleapis-private"
  1. 在控制台檢視畫面中,應如下所示。您應該會看到設定,其中包含 A 記錄和 CNAME,如下所示:a51a8b8caa7a0f1e.png
  2. 接下來,我們會在 anthro-vm 上驗證連線,確認這些變更是否生效

10. 透過 IP 位址驗證端點連線

讓我們使用私人端點連線至 Gemini。

  1. 在 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
  1. 透過 SSH 連線至 anthro-vm 後,請啟動 venv 環境:
sudo -i -- bash -c 'cd py-anthro-env && source env/bin/activate && exec bash'
  1. 現在請執行 dig,確認是否可以連線至 Vertex Gemini API。
dig *-aiplatform.googleapis.com
  1. 畫面應會顯示類似內容 (地址會有所不同)。請注意,路徑是透過 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
  1. 使用 ping 指令。我們可以快速測試一下。注意:這個 IP 是 PSC 端點,因此無法成功執行 Ping。
ping -c 2 aiplatform.googleapis.com
  1. 現在來使用 Python。輸入 ipython 即可啟用 ipython 介面。
ipython

845ef4291429888a.png

  1. 複製並貼上下列內容。這會要求 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)}")
  1. 按兩次 Enter 鍵即可執行並查看文字結果。
  2. 如要查看圖片,我們需要在 Python 中啟用網路服務,因此請在 IPython 工作階段中執行下列指令
!python3 -m http.server 8080
  1. 現在前往 Cloud Shell 中的網頁預覽選項,選取「透過以下通訊埠預覽:8080」
  2. 選取「cookingroti.png」cookingroti.png,即可查看生成的圖片。(以下為 AI 生成的範例) bcf43fffede275cb.png
  3. Cloud Shell 中,按下 Ctrl C 鍵結束工作階段,然後輸入 exit 並按下 Enter 鍵 (重複三次),返回 Cloud Shell 主畫面

11. 恭喜

恭喜!您已成功透過公用 API 位址,以及使用 Googleapis 的 Private Service Connect 端點,以私密方式連線至 Vertex 上的 Anthropic Claude Opus 4.5Gemini 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 技能重點加強實驗室: