1. Giới thiệu
Kết nối dịch vụ riêng tư cho các API của Google (PSC) là một chức năng mạng của Google Cloud, cho phép người dùng định cấu hình quyền truy cập riêng tư thông qua một điểm cuối toàn cầu có IP riêng tư trong một VPC. Đối với những người dùng đang chạy mã hoặc ứng dụng phía máy khách trong một môi trường kết hợp được kết nối với Google Cloud bằng VPN hoặc Interconnect, PSC được dùng để phân giải Google API qua kết nối kết hợp riêng tư đó.
PSC cho API Google có thể phân giải nhiều miền khác nhau. Bạn có thể xem danh sách đầy đủ tại đây. Miền mà hầu hết các API của Google sử dụng là <API>.googleapis.com. Cùng với miền này, PSC cũng cung cấp cho người dùng một phiên bản của googleapis.com là <API>-<PSC-ENDPOINT-NAME>.**p.**googleapis.com. Khi sử dụng miền này, người dùng có thể định cấu hình các ứng dụng để sử dụng các điểm cuối PSC cụ thể. Trường hợp sử dụng phổ biến nhất là cho phép người dùng chọn ứng dụng nào sử dụng điểm cuối PSC để định tuyến lưu lượng truy cập API của Google qua kết nối kết hợp, đồng thời cho phép các ứng dụng khác tiếp tục định tuyến lưu lượng truy cập đến điểm cuối API công khai.
Gemini thuộc bộ sản phẩm Vertex AI của Google Cloud và có trong danh sách các API của Google có thể được phân giải bằng PSC cho các API của Google.
Trong lớp học lập trình này, bạn sẽ xây dựng một môi trường kết hợp mô phỏng, lưu trữ một Phiên bản Workbench tại chỗ và chạy mã Python Gemini truy cập vào Gemini API một cách riêng tư qua một VPN có tính sẵn sàng cao, kết nối với một PSC cho điểm cuối Google API.
Kiến thức bạn sẽ học được
- Tạo một NCC Hub.
- Định cấu hình VPC Spoke trong một NCC Hub.
- Tạo một Cloud HA VPN.
- Định cấu hình các Spoke kết hợp trong một Hub NCC.
- Tạo PSC cho điểm cuối API của Google.
- Định cấu hình một tuyến tuỳ chỉnh qua HA-VPN.
- Định cấu hình một vùng ngang hàng DNS.
- Định cấu hình một phiên bản Vertex Workbench
- Định cấu hình mã Python của Gemini để sử dụng PSC cho Điểm cuối API của API Google.
Bạn cần có
- Một dự án trên Google Cloud có quyền "Chủ sở hữu" hoặc quyền "Người chỉnh sửa" toàn phần.
2. Cấu trúc liên kết của lớp học lập trình
Trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud để mô phỏng một môi trường kết hợp. Trong lớp học lập trình này, sẽ có những bước dành riêng cho Google Cloud và sẽ khác nếu được định cấu hình từ một môi trường tại cơ sở thực tế. Những bước đó sẽ được nêu rõ.
Bạn sẽ tạo một NCC Hub có routing-vpc làm VPC Spoke. Trong VPC đó, một HA-VPN sẽ được định cấu hình cho VPC tại chỗ, mô phỏng một môi trường tại chỗ. HA-VPN sẽ được định cấu hình làm một Spoke kết hợp trong trung tâm NCC. Trong VPC tại cơ sở, bạn sẽ tạo một mạng con nơi một phiên bản Workbench sẽ được lưu trữ. Bạn cũng sẽ tạo một NAT đám mây để dùng cho việc tải các gói xuống trên phiên bản Workbench.
Cuối cùng, bạn sẽ tạo một vùng ngang hàng DNS cho VPC tại cơ sở để có thể sử dụng vùng riêng tư của Thư mục dịch vụ cho p.googleapis.com mà PSC cho API của Google tự động tạo.
3. Thiết lập và yêu cầu
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.
- Tên dự án là tên hiển thị cho những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
- Mã dự án là giá trị duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID
). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi tên này sau bước này và tên này sẽ tồn tại trong suốt thời gian của dự án. - Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Khởi động Cloud Shell
Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên Cloud.
Trên Bảng điều khiển Google Cloud, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ ở trên cùng bên phải:
Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:
Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện mọi thao tác trong lớp học lập trình này trong trình duyệt. Bạn không cần cài đặt bất cứ thứ gì.
4. Trước khi bạn bắt đầuThời lượng: 2 phút
Bật API
Trong Cloud Shell, hãy đảm bảo dự án của bạn được định cấu hình đúng cách và thiết lập các biến môi trường.
Từ Cloud Shell
gcloud config list project gcloud config set project <project-id> export project=$(gcloud config get-value project) export region=us-central1 export zone=$region-a echo $project echo $region echo $zone
Bật tất cả các API cần thiết của Google trong dự án.
Từ Cloud Shell
gcloud services enable compute.googleapis.com gcloud services enable networkconnectivity.googleapis.com gcloud services enable dns.googleapis.com gcloud services enable notebooks.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable aiplatform.googleapis.com
5. Tạo VPC và mạng conThời lượng: 5:00
Tạo mạng
Từ Cloud Shell
gcloud compute networks create routing-vpc \ --subnet-mode=custom
Từ Cloud Shell
gcloud compute networks create onprem-vpc \ --subnet-mode=custom gcloud compute networks subnets create onprem-$region-subnet \ --network=onprem-vpc \ --range=10.0.0.0/24 \ --region=$region --enable-private-ip-google-access
Tạo Cloud Router và Cloud NAT
Tạo một Bộ định tuyến đám mây sẽ được dùng cùng với HA VPN trong routing-vpc.
Từ Cloud Shell
gcloud compute routers create routing-$region-cr \ --network=routing-vpc \ --region=$region \ --asn=64512
Tạo một Bộ định tuyến đám mây sẽ được dùng cùng với HA VPN trong onprem-vpc.
Từ Cloud Shell
gcloud compute routers create onprem-$region-cr \ --network=onprem-vpc \ --region=$region \ --asn=64513
Tạo một Bộ định tuyến đám mây sẽ được dùng cùng với Cloud NAT trong onprem-vpc.
Từ Cloud Shell
gcloud compute routers create onprem-$region-cr-4nat \ --network=onprem-vpc \ --region=$region
Cloud NAT trong onprem-vpc sẽ được dùng để tải các gói xuống Vertex AI Workbench Instance sẽ được định cấu hình trong một bước sau.
Từ Cloud Shell
gcloud compute routers nats create onprem-$region-nat \ --router=onprem-$region-cr-4nat \ --region=$region \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
6. Tạo Cloud HA-VPNDuration: 7:00
Tạo Cổng VPN.
Từ Cloud Shell
gcloud compute vpn-gateways create routing-gateway \ --network=routing-vpc \ --region=$region \ --stack-type=IPV4_ONLY
Từ Cloud Shell
gcloud compute vpn-gateways create onprem-gateway \ --network=onprem-vpc \ --region=$region \ --stack-type=IPV4_ONLY
Tạo đường hầm VPN bắt nguồn từ routing-vpc.
Từ Cloud Shell
gcloud compute vpn-tunnels create routing-to-onprem-tunnel0 \ --peer-gcp-gateway=onprem-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=routing-$region-cr \ --vpn-gateway=routing-gateway \ --interface=0 gcloud compute vpn-tunnels create routing-to-onprem-tunnel1 \ --peer-gcp-gateway=onprem-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=routing-$region-cr \ --vpn-gateway=routing-gateway \ --interface=1
Tạo đường hầm VPN bắt nguồn từ onprem-vpc.
Từ Cloud Shell
gcloud compute vpn-tunnels create onprem-to-routing-tunnel0 \ --peer-gcp-gateway=routing-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=onprem-$region-cr \ --vpn-gateway=onprem-gateway \ --interface=0 gcloud compute vpn-tunnels create onprem-to-routing-tunnel1 \ --peer-gcp-gateway=routing-gateway \ --region=$region \ --ike-version=2 \ --shared-secret=mysecret \ --router=onprem-$region-cr \ --vpn-gateway=onprem-gateway \ --interface=1
Thiết lập các phiên BGP cho 2 đường hầm bắt nguồn từ routing-vpc.
Từ Cloud Shell
gcloud compute routers add-interface routing-$region-cr \ --interface-name=routing-interface0 \ --ip-address=169.254.0.1 \ --mask-length=30 \ --vpn-tunnel=routing-to-onprem-tunnel0 \ --region=$region gcloud compute routers add-bgp-peer routing-$region-cr \ --peer-name=routingtoonprem-bgp0 \ --interface=routing-interface0 \ --peer-ip-address=169.254.0.2 \ --peer-asn=64513 \ --region=$region gcloud compute routers add-interface routing-$region-cr \ --interface-name=routing-interface1 \ --ip-address=169.254.1.1 \ --mask-length=30 \ --vpn-tunnel=routing-to-onprem-tunnel1 \ --region=$region gcloud compute routers add-bgp-peer routing-$region-cr \ --peer-name=routingtoonprem-bgp1 \ --interface=routing-interface1 \ --peer-ip-address=169.254.1.2 \ --peer-asn=64513 \ --region=$region
Thiết lập các phiên BGP cho 2 đường hầm bắt nguồn từ onprem-vpc.
Từ Cloud Shell
gcloud compute routers add-interface onprem-$region-cr \ --interface-name=onprem-interface0 \ --ip-address=169.254.0.2 \ --mask-length=30 \ --vpn-tunnel=onprem-to-routing-tunnel0 \ --region=$region gcloud compute routers add-bgp-peer onprem-$region-cr \ --peer-name=onpremtorouting-bgp0 \ --interface=onprem-interface0 \ --peer-ip-address=169.254.0.1 \ --peer-asn=64512 \ --region=$region gcloud compute routers add-interface onprem-$region-cr \ --interface-name=onprem-interface1 \ --ip-address=169.254.1.2 \ --mask-length=30 \ --vpn-tunnel=onprem-to-routing-tunnel1 \ --region=$region gcloud compute routers add-bgp-peer onprem-$region-cr \ --peer-name=onpremtorouting-bgp1 \ --interface=onprem-interface1 \ --peer-ip-address=169.254.1.1 \ --peer-asn=64512 \ --region=$region
Chuyển đến trang Network Connectivity > VPN (Kết nối mạng > VPN) trong bảng điều khiển và đảm bảo rằng các đường hầm HA-VPN và phiên BGP được định cấu hình đúng cách.
7. Định cấu hình NCC Hub và SpokesDuration:10:00
Tạo NCC Hub
Từ Cloud Shell
gcloud network-connectivity hubs create ncc-hub \ --project="$project" \ --preset-topology="mesh"
Tạo NCC Spokes
NCC gcloud yêu cầu bạn định cấu hình tất cả các mạng nhánh bằng tên đường dẫn đầy đủ hoặc URI.
Từ Cloud Shell
gcloud compute networks describe routing-vpc
Ghi lại đường dẫn đầy đủ (URI) của routing-vpc cho lệnh sau.
Ví dụ về kết quả đầu ra
autoCreateSubnetworks: false creationTimestamp: '2025-08-20T11:13:42.233-07:00' id: 'xxx' kind: compute#network name: routing-vpc networkFirewallPolicyEnforcementOrder: AFTER_CLASSIC_FIREWALL routingConfig: bgpBestPathSelectionMode: LEGACY routingMode: REGIONAL selfLink: https://www.googleapis.com/compute/v1/projects/$project/global/networks/routing-vpc selfLinkWithId: https://www.googleapis.com/compute/v1/projects/$project/global/networks/355666541188722361 x_gcloud_bgp_routing_mode: REGIONAL x_gcloud_subnet_mode: CUSTOM
Định cấu hình VPC định tuyến
Từ Cloud Shell
gcloud network-connectivity spokes linked-vpc-network create routing-vpc \ --hub=ncc-hub \ --vpc-network=projects/$project/global/networks/routing-vpc \ --global
Từ Cloud Shell
gcloud compute vpn-tunnels describe routing-to-onprem-tunnel0 --region=$region gcloud compute vpn-tunnels describe routing-to-onprem-tunnel1 --region=$region
Lưu ý đường dẫn đầy đủ (URI) cho các đường hầm VPN bắt nguồn từ routing-vpc.
Ví dụ về kết quả đầu ra
creationTimestamp: '2025-08-20T11:33:37.494-07:00' description: '' detailedStatus: Tunnel is up and running. id: 'xxx' ikeVersion: 2 kind: compute#vpnTunnel labelFingerprint: xxx localTrafficSelector: - 0.0.0.0/0 name: routing-to-onprem-tunnel0 peerGcpGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/onprem-gateway peerIp: 34.153.54.166 region: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1 remoteTrafficSelector: - 0.0.0.0/0 router: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/routers/routing-us-central1-cr selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnTunnels/routing-to-onprem-tunnel0 sharedSecret: '*************' sharedSecretHash: xxx status: ESTABLISHED vpnGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/routing-gateway vpnGatewayInterface: 0 creationTimestamp: '2025-08-20T11:33:41.829-07:00' description: '' detailedStatus: Tunnel is up and running. id: 'xxx' ikeVersion: 2 kind: compute#vpnTunnel labelFingerprint: xxx localTrafficSelector: - 0.0.0.0/0 name: routing-to-onprem-tunnel1 peerGcpGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/onprem-gateway peerIp: 34.153.246.117 region: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1 remoteTrafficSelector: - 0.0.0.0/0 router: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/routers/routing-us-central1-cr selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnTunnels/routing-to-onprem-tunnel1 sharedSecret: '*************' sharedSecretHash: xxx status: ESTABLISHED vpnGateway: https://www.googleapis.com/compute/v1/projects/$project/regions/us-central1/vpnGateways/routing-gateway vpnGatewayInterface: 1
Từ Cloud Shell
gcloud network-connectivity spokes linked-vpn-tunnels create $region-vpn-spoke \ --hub=ncc-hub \ --vpn-tunnels=projects/$project/regions/$region/vpnTunnels/routing-to-onprem-tunnel0,projects/$project/regions/$region/vpnTunnels/routing-to-onprem-tunnel1 \ --region=$region
Kiểm tra để đảm bảo bạn đã định cấu hình đúng tất cả các spoke trước khi chuyển sang bước tiếp theo.
Từ Cloud Shell
gcloud network-connectivity hubs list-spokes ncc-hub
Ví dụ về kết quả đầu ra
NAME: routing-vpc GROUP: default PROJECT: $project LOCATION: global TYPE: VPC_NETWORK STATE: ACTIVE STATE REASON: ETAG: 2 NAME: us-central1-vpn-spoke GROUP: default PROJECT: $project LOCATION: us-central1 TYPE: VPN_TUNNEL STATE: ACTIVE STATE REASON: ETAG:
8. Thiết lập Private Service Connect cho các API của GoogleThời lượng: 5:00
PSC cho các điểm cuối API của Google được tạo từ các địa chỉ IP toàn cầu không nằm trong một mạng con VPC theo khu vực. Bạn phải dành riêng địa chỉ IP toàn cầu cho mục đích PRIVATE_SERVICE_CONNECT.
Từ Cloud Shell
gcloud compute addresses create psc-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=10.100.100.0 \ --network=routing-vpc
Từ Cloud Shell
gcloud compute forwarding-rules create psc4googep \ --global \ --network=routing-vpc \ --address=psc-ip \ --target-google-apis-bundle=all-apis \ --service-directory-registration=projects/$project/locations/$region
Từ Cloud Shell
gcloud compute routers update routing-$region-cr \ --project=$project \ --region=$region \ --advertisement-mode custom \ --set-advertisement-groups=ALL_SUBNETS \ --set-advertisement-ranges=10.100.100.0/32
Từ Cloud Shell
gcloud dns managed-zones create peeringzone \ --description="dns peer onprem to routing" \ --dns-name=p.googleapis.com \ --networks=onprem-vpc \ --target-network=routing-vpc \ --target-project=$project \ --visibility=private
9. Thiết lập phiên bản Vertex WorkbenchThời lượng: 5 phút
Tạo một Tài khoản dịch vụ để dùng cho danh tính Phiên bản Workbench.
Từ Cloud Shell
gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Ghi lại họ tên đầy đủ của Tài khoản dịch vụ và cấp cho tài khoản đó quyền aiplatform.admin để thực hiện các lệnh gọi đến Vertex AI/Gemini.
Từ Cloud Shell
gcloud iam service-accounts list
Ví dụ về kết quả đầu ra
DISPLAY NAME: Compute Engine default service account EMAIL: xxx-compute@developer.gserviceaccount.com DISABLED: False DISPLAY NAME: workbench-sa EMAIL: workbench-sa@$project.iam.gserviceaccount.com DISABLED: False
Hãy nhớ thay thế <your-project-id> bằng mã dự án thực tế của bạn. Chúng ta không thể sử dụng biến $project ở đây do dấu ngoặc kép bắt buộc.
Từ Cloud Shell
gcloud projects add-iam-policy-binding $project --member='serviceAccount:workbench-sa@<your-project-id>.iam.gserviceaccount.com' --role='roles/aiplatform.admin' --condition=None
Từ Cloud Shell
gcloud workbench instances create workbench-$region --vm-image-project=cloud-notebooks-managed --vm-image-family=workbench-instances --location=$region-a --network=projects/$project/global/networks/onprem-vpc --subnet=projects/$project/regions/$region/subnetworks/onprem-$region-subnet --subnet-region=$region --disable-public-ip --service-account-email=workbench-sa@$project.iam.gserviceaccount.com
Quá trình cung cấp Workbench Instance có thể mất nhiều thời gian hơn so với thời gian chạy lệnh gcloud.
10. Thử nghiệm Gemini CodeDuration: 7:00
Trong giao diện người dùng, hãy nhấp vào "Open JupyterLab" (Mở JupyterLab).
Sau khi vào JupyterLab, hãy mở một Sổ tay Python 3 mới.
Chạy mã sau trong sổ tay. Hãy nhớ cập nhật mã để thêm thông tin cụ thể về dự án và khu vực của bạn.
Từ sổ tay JupyterLab
pip install --upgrade google-genai
Khởi động lại nhân sổ tay.
Ghi lại điểm cuối của API. Ở đây, chúng ta đang sử dụng điểm cuối API <YOUR_REGION>-aiplatform.googleapis.com. Đây là điểm cuối API tiêu chuẩn cho Vertex AI.
Từ sổ tay JupyterLab
PROJECT_ID="YOUR_PROJECT_ID" # Google Cloud Project ID LOCATION_ID="YOUR_REGION" # Enter Vertex AI Gemini region such a s us-central1 API_ENDPOINT="https://<YOUR_REGION>-aiplatform.googleapis.com" # API Endpoint MODEL_ID="gemini-2.0-flash" # Gemini Model ID from google import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting, )
Từ sổ tay JupyterLab
from google import genai client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT}) prompt = "what weighs more, 1kg of feathers or 1kg of stones" safety_settings = [ SafetySetting( category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), ] response = client.models.generate_content( model=MODEL_ID, contents=prompt, config=GenerateContentConfig( safety_settings=safety_settings, ), ) # Response will be `None` if it is blocked. print(response.text)
Phản hồi mẫu
This is a classic trick question! They both weigh the same: 1 kilogram. The difference is in the volume they occupy and the density of the materials.
Ghi lại tên API mà bạn đã dùng khi chạy mã. YOUR_REGION-aiplatform.googleapis.com là tên API mặc định cho Vertex AI. Chúng ta cần thay đổi tên API và chạy lại mã. Chúng ta có thể đảm bảo rằng mã đang sử dụng Điểm cuối PSC bằng cách chạy TCPdump trong một thiết bị đầu cuối trên Phiên bản Workbench.
Chạy TCPdump trong cửa sổ dòng lệnh
Mở một cửa sổ dòng lệnh trên Workbench bằng cách nhấp vào File > New > Terminal (Tệp > Mới > Cửa sổ dòng lệnh).
Nếu gặp vấn đề khi thấy đầu ra văn bản trong thiết bị đầu cuối, bạn cần cập nhật giao diện thiết bị đầu cuối. Bạn có thể thực hiện việc này trong phần Cài đặt > Giao diện của thiết bị đầu cuối > Sáng HOẶC Tối.
Từ nhà ga
sudo tcpdump host 10.100.100.0
Cập nhật Gemini Code
Chuyển lại sang sổ tay, cập nhật Điểm cuối API rồi chạy lại mã. Xin lưu ý rằng chúng tôi đã thay đổi điểm cuối API thành <YOUR_REGION>-aiplatform**-psc4googep.p**.googleapis.com. Điều này phù hợp với định dạng API cụ thể của PSC <service>-<endpointname>.p.googleapis.com.
Từ sổ tay JupyterLab
API_ENDPOINT="https://<YOUR_REGION>-aiplatform-psc4googep.p.googleapis.com" # API Endpoint
Từ sổ tay JupyterLab
from google import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting, )
Từ sổ tay JupyterLab
from google import genai client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT}) prompt = "what weighs more, 1kg of feathers or 1kg of stones" safety_settings = [ SafetySetting( category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), ] response = client.models.generate_content( model=MODEL_ID, contents=prompt, config=GenerateContentConfig( safety_settings=safety_settings, ), ) # Response will be `None` if it is blocked. print(response.text)
Phản hồi mẫu
They weigh the same. 1 kg is 1 kg, regardless of what it's made of.
Kiểm tra TCPdump
Chuyển lại sang cửa sổ dòng lệnh và tìm các lệnh gọi đến điểm cuối PSC (10.100.100.0). Kết thúc TCPdump (control+c)
Đầu ra mẫu
listening on ens4, link-type EN10MB (Ethernet), snapshot length 262144 bytes 19:12:01.473886 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [S], seq 3367930834, win 65320, options [mss 1420,sackOK,TS val 2933602967 ecr 0,nop,wscale 7], length 0 19:12:01.476561 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [S.], seq 1863301110, ack 3367930835, win 65535, options [mss 1366,sackOK,TS val 3004118895 ecr 2933602967,nop,wscale 8], length 0 19:12:01.476602 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 1, win 511, options [nop,nop,TS val 2933602969 ecr 3004118895], length 0 19:12:01.477283 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [P.], seq 1:1573, ack 1, win 511, options [nop,nop,TS val 2933602970 ecr 3004118895], length 1572 19:12:01.478836 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [.], ack 1573, win 1045, options [nop,nop,TS val 3004118898 ecr 2933602970], length 0 19:12:01.480181 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [P.], seq 1:6041, ack 1573, win 1045, options [nop,nop,TS val 3004118899 ecr 2933602970], length 6040 19:12:01.480183 IP 10.100.100.0.https > workbench-us-central1.us-central1-a.c.xxx.internal.41886: Flags [P.], seq 6041:8378, ack 1573, win 1045, options [nop,nop,TS val 3004118899 ecr 2933602970], length 2337 19:12:01.480215 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 6041, win 485, options [nop,nop,TS val 2933602973 ecr 3004118899], length 0 19:12:01.480225 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [.], ack 8378, win 473, options [nop,nop,TS val 2933602973 ecr 3004118899], length 0 19:12:01.482580 IP workbench-us-central1.us-central1-a.c.xxx.internal.41886 > 10.100.100.0.https: Flags [P.], seq 1573:1653, ack 8378, win 501, options [nop,nop,TS val 2933602975 ecr 3004118899], length 80
THÀNH CÔNG!
11. Các bước dọn dẹp
Đóng sổ tay JupyterLab và quay lại Cloud Shell. Đảm bảo Cloud Shell chưa hết thời gian chờ. Nếu có, hãy đặt lại các biến của bạn.
Từ Cloud Shell
gcloud config list project gcloud config set project <project-id> export project=$(gcloud config get-value project) export region=us-central1 export zone=$region-a echo $project echo $region echo $zone
Xoá tất cả tài nguyên.
Từ Cloud Shell
gcloud workbench instances delete workbench-$region --location=$zone -q gcloud iam service-accounts delete workbench-sa@$project.iam.gserviceaccount.com -q gcloud dns managed-zones delete peeringzone -q gcloud compute forwarding-rules delete psc4googep --global -q gcloud compute addresses delete psc-ip --global -q gcloud network-connectivity spokes delete $region-vpn-spoke --region=$region -q gcloud network-connectivity spokes delete routing-vpc --global -q gcloud network-connectivity hubs delete ncc-hub -q gcloud compute vpn-tunnels delete onprem-to-routing-tunnel1 --region=$region --project=$project -q gcloud compute vpn-tunnels delete onprem-to-routing-tunnel0 --region=$region --project=$project -q gcloud compute vpn-tunnels delete routing-to-onprem-tunnel1 --region=$region --project=$project -q gcloud compute vpn-tunnels delete routing-to-onprem-tunnel0 --region=$region --project=$project -q gcloud compute vpn-gateways delete onprem-gateway --region=$region --project=$project -q gcloud compute vpn-gateways delete routing-gateway --region=$region --project=$project -q gcloud compute routers nats delete onprem-$region-nat --router=onprem-$region-cr-4nat --region=$region -q gcloud compute routers delete onprem-$region-cr-4nat --region=$region -q gcloud compute routers delete onprem-$region-cr --region=$region -q gcloud compute routers delete routing-$region-cr --region=$region -q gcloud compute networks subnets delete onprem-$region-subnet --region=$region -q gcloud compute networks delete onprem-vpc -q gcloud compute networks delete routing-vpc -q
12. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình này.
Nội dung đã đề cập
- Tạo một NCC Hub.
- Định cấu hình VPC Spoke trong một NCC Hub.
- Tạo một Cloud HA VPN.
- Định cấu hình các Spoke kết hợp trong một Hub NCC.
- Tạo PSC cho điểm cuối API của Google.
- Định cấu hình một tuyến tuỳ chỉnh qua HA-VPN.
- Định cấu hình một vùng ngang hàng DNS.
- Định cấu hình một phiên bản Vertex Workbench
- Định cấu hình mã Python của Gemini để sử dụng PSC cho Điểm cuối API của API Google.