1. ภาพรวม
คุณเข้าถึง Vertex AI API ได้ผ่านอินเทอร์เน็ต แต่ในองค์กร คุณอาจต้องการเข้าถึง Vertex AI API แบบส่วนตัวโดยไม่ต้องผ่านอินเทอร์เน็ต ในแล็บนี้ คุณจะได้ทำสิ่งต่อไปนี้ก่อน
- เข้าถึง Gemini 3 Pro API ผ่าน Vertex โดยใช้ Python SDK
- ซึ่งจะทำงานบนอินสแตนซ์ VM
- การเชื่อมต่อจะผ่าน Cloud NAT ไปยังอินเทอร์เน็ตสาธารณะ
จากนั้นคุณจะสร้างปลายทาง Private Service Connect ไปยัง Google APIs และเปลี่ยนการไหลของการรับส่งข้อมูลให้ใช้ปลายทางส่วนตัวเพื่อเชื่อมต่อกับ Gemini Chat API การกำหนดค่าจะเป็นการผสมผสานระหว่าง Terraform, gcloud และคอนโซล
ในแล็บนี้ คุณจะได้สร้างรูปแบบต่อไปนี้
รูปที่ 1

2. วัตถุประสงค์
ในแล็บนี้ คุณจะได้เรียนรู้วิธีทำงานต่อไปนี้
- ตั้งค่าอินสแตนซ์ VM เพื่อใช้ Python SDK
- เชื่อมต่อกับ Gemini Chat ผ่านสคริปต์ Python
- กำหนดค่าปลายทาง PSC เพื่อเชื่อมต่อกับ Googleapis
- ยืนยันเส้นทางการเชื่อมต่อกับ Googleais
- กำหนดค่ารายการ DNS ด้วยตนเอง
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยทั่วไปจะระบุเป็น
PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณอาจลองใช้ชื่อของคุณเองและดูว่ามีชื่อนั้นหรือไม่ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้จะไม่มีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะใช้งาน Google Cloud จากแล็ปท็อประยะไกลได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
จาก Google Cloud Console ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อเสร็จแล้ว คุณควรเห็นข้อความคล้ายกับตัวอย่างต่อไปนี้

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดในโค้ดแล็บนี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไร
3. งานที่ 1 ตั้งค่าสภาพแวดล้อมด้วย Terraform
เราจะสร้าง VPC ที่กำหนดเองพร้อมกฎไฟร์วอลล์และซับเน็ต เปิด Cloud Console แล้วเลือกโปรเจ็กต์ที่จะใช้
- เปิด Cloud Shell ที่ด้านบนของคอนโซลทางด้านขวา ตรวจสอบว่าคุณเห็นรหัสโปรเจ็กต์ที่ถูกต้องใน Cloud Shell และยืนยันข้อความแจ้งเพื่ออนุญาตการเข้าถึง

- สร้างโฟลเดอร์ชื่อ terraform-build แล้วย้ายไปที่โฟลเดอร์
mkdir terraform-build && cd terraform-build
- สร้างไฟล์ main.tf และ variable.tf
touch main.tf variable.tf
- เปลี่ยนไปใช้มุมมองเครื่องมือแก้ไข Cloud Shell เลือกเอดิเตอร์ และตรวจสอบว่าคุณอนุญาตพรอมต์ที่จำเป็นเพื่อให้โหลดอินเทอร์เฟซได้
- เมื่อโหลดแล้ว ให้ไปที่ไฟล์ > เปิดโฟลเดอร์ แล้วไปที่ /home/your-user-name/terraform-build แล้วเลือกตกลงเพื่อเปิดโฟลเดอร์ในโปรแกรมแก้ไข

- เลือกไฟล์ variable.tf แล้วเพิ่มข้อมูลต่อไปนี้ แทนที่ข้อความ
your-project-id-hereด้วยรหัสโปรเจ็กต์จริงของคุณในเครื่องหมายคำพูด
variable "project_id" {
type = string
default = "your-project-id-here"
}
variable "network_id" {
type = string
default = "python-net"
}
- จากนั้นเปิดไฟล์ main.tf เราจะเพิ่มโค้ด Terraform เพื่อดำเนินการต่างๆ ตามที่อธิบายไว้ด้านล่าง
เปิดใช้ API |
|
สร้าง VPC ชื่อ python-net |
|
เพิ่มซับเน็ต |
|
เพิ่มกฎไฟร์วอลล์ 2 ข้อ |
|
- คัดลอกและวางข้อมูลต่อไปนี้ลงในไฟล์ main .tf
resource "google_project_service" "default" {
project = var.project_id
for_each = toset([
"dns.googleapis.com",
"aiplatform.googleapis.com",
"servicedirectory.googleapis.com"
])
service = each.value
disable_on_destroy = false
}
resource "google_compute_network" "default" {
project = var.project_id
name = var.network_id
auto_create_subnetworks = false
mtu = 1460
routing_mode = "GLOBAL"
}
resource "google_compute_subnetwork" "default" {
name = "vm1-subnet"
ip_cidr_range = "10.0.11.0/24"
project = var.project_id
region = "us-east1"
stack_type = "IPV4_ONLY"
network = google_compute_network.default.id
}
resource "google_compute_firewall" "allow_icmp" {
name = "allow-icmp-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "icmp"
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["allow-icmp"]
}
resource "google_compute_firewall" "allow_ssh" {
name = "allow-ssh-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "tcp"
ports = ["22"]
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["allow-ssh"]
}
- กลับไปที่เทอร์มินัล Cloud Shell ตรวจสอบว่าคุณอยู่ในไดเรกทอรี terraform-build
cd terraform-buildแล้วเรียกใช้คำสั่งต่อไปนี้
terraform init
เริ่มต้นไดเรกทอรีการทำงาน ขั้นตอนนี้จะดาวน์โหลดผู้ให้บริการที่จำเป็นสำหรับการกำหนดค่าที่ระบุ
terraform plan
สร้างแผนการดำเนินการ ซึ่งแสดงการดำเนินการที่ Terraform จะใช้เพื่อทำให้โครงสร้างพื้นฐานใช้งานได้
- ตอนนี้หากต้องการสร้างทรัพยากร ให้เรียกใช้
terraform applyคำสั่งและพิมพ์yesเพื่อเรียกใช้
4. งานที่ 2 สร้างเกตเวย์ NAT และ VM ด้วย Terraform
เราต้องให้สิทธิ์การเข้าถึงอินเทอร์เน็ตภายนอกขาออก ดังนั้นมาสร้างเกตเวย์ Cloud NAT แล้วแนบกัน
- เปิด Cloud Shell ไปที่โฟลเดอร์ terraform-build แล้วสร้างไฟล์ต่อไปนี้ (รวม 3 ไฟล์) เราจะแก้ไขข้อมูลเหล่านี้ในภายหลัง
touch nat-vm.tf psc.tf dns.tf
- เปลี่ยนไปที่มุมมองโปรแกรมแก้ไข Cloud Shell แล้วเลือกไฟล์ nat-vm.tf และเพิ่มโค้ด Terraform ต่อไปนี้ การดำเนินการนี้จะสร้างเกตเวย์ NAT และ VM 2 รายการ
Terraform nat-vm.tf
resource "google_compute_router" "default" {
name = "py-outbound-nat"
region = "us-east1"
network = google_compute_network.default.id
project = var.project_id
bgp {
asn = 64514
}
}
resource "google_compute_router_nat" "default" {
name = "py-outbound-nat-gw"
router = google_compute_router.default.name
region = google_compute_router.default.region
nat_ip_allocate_option = "AUTO_ONLY"
project = var.project_id
source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"
log_config {
enable = true
filter = "ERRORS_ONLY"
}
}
resource "google_compute_instance" "vm1" {
name = "py-vm1"
zone = "us-east1-b"
machine_type = "n2-standard-2"
project = var.project_id
boot_disk {
initialize_params {
image = "debian-cloud/debian-12"
}
}
network_interface {
subnetwork = google_compute_subnetwork.default.id
stack_type = "IPV4_ONLY"
}
tags = ["allow-ssh", "allow-icmp"]
metadata_startup_script = <<-EOF
#! /bin/bash
sudo apt-get update
sudo apt-get install python3 python3-dev python3-venv git -y
sudo apt-get install tcpdump dnsutils -y
mkdir -p ~/py-gem-env
cd ~/py-gem-env
python3 -m venv env
source env/bin/activate
pip install --upgrade pip
pip install ipython google-genai
'
EOF
}
- เปลี่ยนไปใช้เทอร์มินัล Cloud Shell ตรวจสอบว่าคุณอยู่ในโฟลเดอร์ terraform-build แล้วเรียกใช้
terraform planซึ่งจะแสดงให้เห็นว่าระบบจะเพิ่มรายการ 4 รายการ จากนั้นเรียกใช้terraform applyแล้วพิมพ์yesเพื่อสร้าง NAT Gateway และ VM
5. งานที่ 3 กำหนดค่า VM และทดสอบ
- ไปที่อินสแตนซ์ VM เลือก VM ที่ขึ้นต้นด้วย py-vm1 เลือก SSH
- เมื่อ SSH เข้าสู่ py-vm1 แล้ว ให้เปิดใช้รูทโดยพิมพ์
sudo -i - เปิดใช้งานสภาพแวดล้อม venv โดยใช้คำสั่งต่อไปนี้
cd py-gem-env
source env/bin/activate
- ตอนนี้มาตรวจสอบสิทธิ์เพื่อทำการทดสอบในภายหลังกัน เรียกใช้คำสั่งต่อไปนี้ใน VM แล้วกด y เมื่อได้รับแจ้ง
gcloud auth application-default login
- จากนั้นคัดลอก URL ที่ปรากฏโดยขึ้นต้นด้วย https:// เปิดแท็บใหม่ในหน้าต่างเบราว์เซอร์ของห้องทดลอง แล้ววาง URL ยอมรับข้อความแจ้ง
- เมื่อเห็นข้อความต่อไปนี้ ให้เลือกคัดลอก กลับไปที่เซสชัน py-vm1 ของ VM แล้ววางโค้ดที่คัดลอกไว้สำหรับ Enter authorization code: แล้วกด Enter เพื่อตรวจสอบสิทธิ์

- ตอนนี้เรามาทดสอบอย่างรวดเร็วเพื่อดูว่าเชื่อมต่อกับ Vertex API ได้หรือไม่ ซึ่งใช้ *-aiplatform.googleapis.com ดังนั้นเราจะทำ
digไปยังที่อยู่นั้นเพื่อดูว่าการรับส่งข้อมูลจะกำหนดเส้นทางอย่างไร
dig *-aiplatform.googleapis.com
- คุณควรเห็นข้อความที่คล้ายกัน (ที่อยู่จะแตกต่างกัน) โปรดทราบว่าเส้นทางจะผ่านที่อยู่ IP สาธารณะเนื่องจาก API เป็น API สาธารณะ ห้ามคัดลอก
; <<>> DiG 9.18.41-1~deb12u1-Debian <<>> *-aiplatform.googleapis.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60947 ;; 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 173.194.216.95 *-aiplatform.googleapis.com. 300 IN A 108.177.11.95 *-aiplatform.googleapis.com. 300 IN A 192.178.219.95 *-aiplatform.googleapis.com. 300 IN A 74.125.134.95 *-aiplatform.googleapis.com. 300 IN A 74.125.139.95 *-aiplatform.googleapis.com. 300 IN A 108.177.12.95 *-aiplatform.googleapis.com. 300 IN A 173.194.210.95 *-aiplatform.googleapis.com. 300 IN A 74.125.26.95 *-aiplatform.googleapis.com. 300 IN A 173.194.212.95 *-aiplatform.googleapis.com. 300 IN A 172.217.204.95
- ตอนนี้มาใช้ Python กัน พิมพ์
ipythonเพื่อเปิดใช้งานอินเทอร์เฟซ ipython
ipython

- ตอนนี้ให้คัดลอกและวางข้อความต่อไปนี้ ซึ่งจะถาม Gemini ว่า "โลโก้ Google มีสีอะไรบ้าง" และ "ท้องฟ้ามีสีอะไร"
from google import genai
from google.genai import types
import os
import sys
LOCATION = "global"
MODEL_ID = "gemini-3-pro-preview"
try:
client = genai.Client(vertexai=True, location=LOCATION)
print(f"Successfully initialized Google Gen AI Client (Vertex AI mode) in {LOCATION}")
except Exception as e:
print(f"Error initializing client: {e}")
print("Ensure you have installed the library: `pip install google-genai`")
print("And authenticated: `gcloud auth application-default login`")
sys.exit(1)
class SimpleChatSession:
def __init__(self, model_id):
self.model_id = model_id
self.history = []
def send_message(self, prompt, stream=True):
user_content = types.Content(
role="user",
parts=[types.Part(text=prompt)]
)
self.history.append(user_content)
try:
response_stream = client.models.generate_content_stream(
model=self.model_id,
contents=self.history,
config=types.GenerateContentConfig(
temperature=0.7
)
)
accumulated_text = ""
for chunk in response_stream:
if chunk.text:
yield chunk.text
accumulated_text += chunk.text
model_content = types.Content(
role="model",
parts=[types.Part(text=accumulated_text)]
)
self.history.append(model_content)
except Exception as e:
print(f"\n[Error during generation: {e}]")
def get_chat_response(session: SimpleChatSession, prompt: str):
print(f"\n--- User: {prompt} ---")
print("--- Model: ", end="")
stream_generator = session.send_message(prompt)
full_text = ""
for chunk_text in stream_generator:
full_text += chunk_text
print(chunk_text, end="", flush=True)
print()
return full_text
if __name__ == "__main__":
chat_session = SimpleChatSession(MODEL_ID)
get_chat_response(chat_session, "Hello.")
get_chat_response(chat_session, "What are all the colors of the Google logo?")
get_chat_response(chat_session, "What color is the sky?")
- กด Enter 2 ครั้งเพื่อเรียกใช้และดูผลลัพธ์
- คำขอนี้เข้าถึง Vertex ผ่าน API สาธารณะ
- ปิดเซสชัน SSH แล้วมาดำเนินการต่อกัน
6. งานที่ 4 สร้างปลายทาง PSC ไปยัง googleapis ด้วย Terraform
หากต้องการเปิดใช้การเชื่อมต่อส่วนตัวกับปลายทาง Vertex API เราจะสร้างปลายทาง Private Service Connect สำหรับ Google API ซึ่งจะช่วยให้เราใช้ที่อยู่ IP ส่วนตัวที่เรากำหนดเพื่อกำหนดเส้นทางการรับส่งข้อมูลไปยัง Google API ที่เราต้องการได้ ซึ่งในกรณีนี้คือ Vertex
- เปิด Cloud Shell ในมุมมองเอดิเตอร์หากยังไม่ได้เปิด เราจะสร้างสิ่งต่อไปนี้
- สร้าง IP สำหรับปลายทาง PSC 192.168.255.250 (
resource "google_compute_global_address" "default") - สร้างปลายทาง PSC ไปยัง Google APIs (
resource "google_compute_global_forwarding_rule" "default")
เปิดไฟล์ psc.tf ในโฟลเดอร์ terraform-build เพิ่มโค้ดต่อไปนี้ลงในไฟล์
Terraform psc.tf
resource "google_compute_global_address" "default" {
name = "vertex-ip"
purpose = "PRIVATE_SERVICE_CONNECT"
network = google_compute_network.default.id
address_type = "INTERNAL"
address = "192.168.255.250"
}
resource "google_compute_global_forwarding_rule" "default" {
name = "pscvertexgemini"
target = "all-apis"
network = google_compute_network.default.id
ip_address = google_compute_global_address.default.id
load_balancing_scheme = ""
}
- สลับไปที่เทอร์มินัล Cloud Shell และตรวจสอบว่าคุณอยู่ในโฟลเดอร์
terraform-buildจากนั้นเรียกใช้terraform initจากนั้นเรียกใช้terraform planซึ่งจะแสดงให้เห็นว่าระบบจะเพิ่มรายการ 2 รายการ
จากนั้นเรียกใช้terraform applyแล้วพิมพ์yesเพื่อสร้างปลายทาง API ของ Google สำหรับ IP และ PSC - ยืนยันว่ามีปลายทาง
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global
7. งานที่ 5 สร้างรายการ DNS ด้วยตนเองไปยัง googleapis ด้วย Terraform
คุณสร้างรายการ DNS ด้วยตนเองเพื่อชี้ไปยังปลายทาง PSC โดยใช้ DNS ส่วนตัวได้ ซึ่งจะส่งผลต่อเครือข่ายทั้งหมดที่คุณกำหนดให้กับอุปกรณ์
- ไปที่บริการเครือข่ายแล้วเลือก Cloud DNS
- ในโซน คุณควรเห็นโซนที่สร้างขึ้นโดยอัตโนมัติสำหรับ Private Service Connect สำหรับ Google API โดยมีไดเรกทอรีบริการประเภทโซน ซึ่งใช้เพื่อเชื่อมต่อกับปลายทาง PSC ได้โดยมีรูปแบบเป็น **SERVICE-ENDPOINT.p.googleapis.com ตัวอย่าง:
aiplatform-pscvertexgemini.p.googleapis.com - ในกรณีนี้ เราต้องการสร้างรายการ DNS ส่วนตัวด้วยตนเอง การกำหนดค่าจะเป็นดังนี้
- สร้างโซน DNS ส่วนตัวชื่อ "googleapis-private" สำหรับ "googleapis.com" และจำกัดให้ใช้ได้เฉพาะในเครือข่าย "python-net"
- เพิ่มระเบียน A เพื่อแมป "googleapis.com" กับที่อยู่ IP "192.168.255.250"
- เพิ่มระเบียน CNAME เพื่อเปลี่ยนเส้นทางโดเมนย่อยทั้งหมดของ "googleapis.com" (เช่น www.googleapis.com) ไปยัง "googleapis.com"
- เปิด Cloud Shell ในมุมมองเอดิเตอร์หากยังไม่ได้เปิด เปิดไฟล์ dns.tf ในโฟลเดอร์ terraform-build เพิ่มโค้ดต่อไปนี้ลงในไฟล์
Terraform dns.tf
resource "google_dns_managed_zone" "private_zone" {
name = "googleapis-private"
dns_name = "googleapis.com."
visibility = "private"
project = var.project_id
private_visibility_config {
networks {
network_url = google_compute_network.default.id
}
}
}
resource "google_dns_record_set" "a_record" {
name = "googleapis.com."
type = "A"
ttl = 300
managed_zone = google_dns_managed_zone.private_zone.name
project = var.project_id
rrdatas = ["192.168.255.250"]
}
resource "google_dns_record_set" "cname_record" {
name = "*.googleapis.com."
type = "CNAME"
ttl = 300
managed_zone = google_dns_managed_zone.private_zone.name
project = var.project_id
rrdatas = ["googleapis.com."]
}
- สลับไปที่เทอร์มินัล Cloud Shell และตรวจสอบว่าคุณอยู่ในโฟลเดอร์
terraform-buildจากนั้นเรียกใช้terraform planซึ่งจะแสดงรายการที่จะเพิ่ม
จากนั้นเรียกใช้terraform applyแล้วพิมพ์yesเพื่อสร้างรายการ DNS ส่วนตัว - คุณควรเห็นการตั้งค่าที่มีระเบียน A และ CNAME ดังนี้

- จากนั้นเราจะยืนยันการเชื่อมต่อกับการเปลี่ยนแปลงเหล่านี้ใน py-vm1
8. งานที่ 6 ยืนยันการเชื่อมต่ออุปกรณ์ปลายทางผ่านที่อยู่ IP
มาเชื่อมต่อโดยใช้ปลายทางส่วนตัวเพื่อเชื่อมต่อกับ Gemini กัน
- ไปที่อินสแตนซ์ VM py-vm1 เลือก SSH และ SSH เข้าสู่ VM
- รับสิทธิ์เข้าถึงระดับรูทโดยพิมพ์
sudo -i - ตรวจสอบเส้นทางการเชื่อมต่อกับ aiplatform.googleapis.com โดยใช้คำสั่ง
pingซึ่งจะเป็นการ Ping ที่อยู่ IP ใน DNS ส่วนตัว ระเบียน A สำหรับ googleapis IP นี้เป็นปลายทาง PSC และการ Ping จะไม่สำเร็จ
ping -c 2 aiplatform.googleapis.com
- ตรวจสอบเส้นทางการเชื่อมต่อด้วย
pingโดยใช้รายการ DNS ที่สร้างขึ้นโดยอัตโนมัติสำหรับ PSC Google APIs ที่มีaiplatform-pscvertexgemini.p.googleapis.comซึ่งจะชี้ไปยังที่อยู่ IP ของปลายทาง PSC และการ Ping จะไม่สำเร็จ
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
- ตรวจสอบเส้นทางการเชื่อมต่อกับ aiplatform.googleapis.com โดยใช้คำสั่ง
digควรเป็นที่อยู่ IP ของปลายทาง PSC
dig aiplatform.googleapis.com
- กลับไปที่คอนโซลแล้วเปิดอินสแตนซ์อื่นของ VM Instance py-vm1 เลือก SSH แล้ว SSH เข้าสู่ VM
- รับสิทธิ์เข้าถึงระดับรูทโดยพิมพ์
sudo -i - เรียกใช้คำสั่งต่อไปนี้เพื่อดูการเชื่อมต่อในการดัมพ์ TCP
sudo tcpdump -i any port 53 -n or host aiplatform.googleapis.com
- ตอนนี้ให้กลับไปที่อินสแตนซ์ SSH แรกของอินสแตนซ์ VM py-vm1
- เปิดใช้งานสภาพแวดล้อมโดยใช้
cd py-gem-env
source env/bin/activate
- ตอนนี้มาทดสอบ Python กัน พิมพ์
ipythonเพื่อเปิดใช้งานอินเทอร์เฟซ ipython
ipython
- ตอนนี้ให้คัดลอกและวางข้อความต่อไปนี้ ซึ่งจะถาม Gemini ว่า "สรุปในประโยคสั้นๆ ว่าตัวแยกคำในบริบทของ AI คืออะไร" และ "วาฬน่าทึ่งหรือไม่"
from google import genai
from google.genai import types
import os
import sys
LOCATION = "global"
MODEL_ID = "gemini-3-pro-preview"
try:
client = genai.Client(vertexai=True, location=LOCATION)
print(f"Successfully initialized Google Gen AI Client (Vertex AI mode) in {LOCATION}")
except Exception as e:
print(f"Error initializing client: {e}")
print("Ensure you have installed the library: `pip install google-genai`")
print("And authenticated: `gcloud auth application-default login`")
sys.exit(1)
class SimpleChatSession:
def __init__(self, model_id):
self.model_id = model_id
self.history = []
def send_message(self, prompt, stream=True):
user_content = types.Content(
role="user",
parts=[types.Part(text=prompt)]
)
self.history.append(user_content)
try:
response_stream = client.models.generate_content_stream(
model=self.model_id,
contents=self.history,
config=types.GenerateContentConfig(
temperature=0.7
)
)
accumulated_text = ""
for chunk in response_stream:
if chunk.text:
yield chunk.text
accumulated_text += chunk.text
model_content = types.Content(
role="model",
parts=[types.Part(text=accumulated_text)]
)
self.history.append(model_content)
except Exception as e:
print(f"\n[Error during generation: {e}]")
def get_chat_response(session: SimpleChatSession, prompt: str):
print(f"\n--- User: {prompt} ---")
print("--- Model: ", end="")
stream_generator = session.send_message(prompt)
full_text = ""
for chunk_text in stream_generator:
full_text += chunk_text
print(chunk_text, end="", flush=True)
print()
return full_text
if __name__ == "__main__":
chat_session = SimpleChatSession(MODEL_ID)
get_chat_response(chat_session, "Hello.")
get_chat_response(chat_session, "In one short sentence summarize what is a tokenizer in the context of AI?")
get_chat_response(chat_session, "Are whales awesome or not?")
- กด Enter 2 ครั้งเพื่อเรียกใช้และดูผลลัพธ์
- กลับไปที่อินสแตนซ์ที่ 2 ของอินสแตนซ์ VM py-vm1 คุณควรเห็นผลลัพธ์ของ TCPDUMP คุณจะเห็นว่าที่อยู่ IP ของ VM ใช้ที่อยู่ IP ของปลายทาง PSC เพื่อเชื่อมต่อกับ aiplatform.googleapis.com
ปิดเซสชัน SSH ทั้งหมดไปยังอินสแตนซ์ VM py-vm1
9. ล้างข้อมูล
- ไปที่ Cloud Shell และตรวจสอบว่าคุณอยู่ในไดเรกทอรี terraform-build
cd terraform-build - เรียกใช้
terraform plan destroyเพื่อดูการเปลี่ยนแปลงทั้งหมดที่จะเกิดขึ้น
terraform plan -destroy
- จากนั้นเรียกใช้คำสั่ง
terraform destroyแล้วพิมพ์yesระบบจะนำทรัพยากรทั้งหมดที่คุณสร้างในโปรเจ็กต์ด้วย Terraform ออก
terraform destroy
10. ขอแสดงความยินดี
ขอแสดงความยินดี คุณเชื่อมต่อกับ Vertex และใช้ Gemini 3 Pro ผ่านที่อยู่ API สาธารณะและแบบส่วนตัวโดยใช้ปลายทาง Private Service Connect สำหรับ Google APIs ได้สำเร็จ ฟังก์ชันนี้สามารถขยายการเชื่อมต่อ API ส่วนตัวไปยังสภาพแวดล้อมภายในองค์กร/ระบบคลาวด์อื่นๆ ที่เชื่อมต่อผ่าน (Interconnect, Cross-Cloud Interconnect และ VPC)
ขั้นตอนถัดไป / ดูข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับเครือข่าย Vertex AI
Codelab: เข้าถึง Anthropic Claude ใน Vertex AI ด้วย Python SDK ผ่านปลายทาง Private Service Connect
เข้าสู่ห้องทดลองถัดไป
ทำภารกิจต่อด้วย Google Cloud และดูแล็บอื่นๆ ของ Google Cloud Skills Boost เหล่านี้