Hibrit bağlantı üzerinden Gemini'a erişmek için Google API'leri için Private Service Connect'i kullanma

1. Giriş

Google API'leri için Private Service Connect (PSC), kullanıcıların bir VPC içinde özel IP genel uç noktası üzerinden özel erişim yapılandırmasına olanak tanıyan bir Google Cloud ağ iletişimi özelliğidir. VPN veya Interconnect ile Google Cloud'a bağlı bir karma ortamda kod ya da istemci tarafı uygulamaları çalıştıran kullanıcılar için PSC, Google API'lerini bu özel karma bağlantı üzerinden çözümlemek amacıyla kullanılır.

Google API'leri için PSC, birçok farklı alanı çözümleyebilir. Alanların tam listesini burada bulabilirsiniz. Çoğu Google API'sinin kullandığı alan <API>.googleapis.com'dur. PSC, bu alanın yanı sıra kullanıcılara <API>-<PSC-ENDPOINT-NAME>.**p.**googleapis.com olan bir googleapis.com sürümü de sunar. Kullanıcılar bu alanı kullanarak uygulamaları belirli PSC uç noktalarını kullanacak şekilde yapılandırabilir. En yaygın kullanım alanında, kullanıcılar Google API trafiğini hibrit bağlantı üzerinden yönlendirmek için hangi uygulamaların PSC uç noktasını kullanacağını seçebilir. Diğer uygulamalar ise trafiği herkese açık API uç noktasına yönlendirmeye devam edebilir.

Gemini, Google Cloud'un Vertex AI ürün paketi kapsamındadır ve Google API'leri için PSC ile çözülebilen Google API'leri listesinde yer alır.

Bu codelab'de, şirket içinde bir Workbench örneği barındıran ve Google API'leri için bir PSC uç noktasına bağlanarak Gemini API'ye HA VPN üzerinden özel olarak erişen Gemini Python kodu çalıştıran simüle edilmiş bir hibrit ortam oluşturacaksınız.

Neler öğreneceksiniz?

  • NCC Hub oluşturun.
  • NCC Hub'da VPC Spoke'ları yapılandırın.
  • Cloud HA VPN oluşturun.
  • NCC Hub'da hibrit Spoke'ları yapılandırın.
  • Google API'leri uç noktası için bir PSC oluşturun.
  • HA VPN üzerinden özel bir rota yapılandırın.
  • DNS eşleme bölgesi yapılandırın.
  • Vertex Workbench örneğini yapılandırma
  • Gemini Python kodunu, Google API'leri API uç noktası için PSC kullanacak şekilde yapılandırın.

Gerekenler

  • "Sahip" veya tam "Düzenleyici" izinlerine sahip bir Google Cloud projesi.

2. Codelab Topolojisi

74f1027c8c8085f6.png

Bu codelab'de, hibrit bir ortamı simüle etmek için Google Cloud'u kullanacaksınız. Bu codelab'de Google Cloud'a özgü ve gerçek bir şirket içi ortamdan yapılandırılması durumunda farklı olacak adımlar vardır. Bu adımlar belirtilecektir.

Yönlendirme VPC'si VPC Spoke olarak kullanılan bir NCC Hub oluşturacaksınız. Bu VPC'de, şirket içi ortamı taklit eden şirket içi VPC için bir HA VPN yapılandırılır. HA VPN, NCC hub'ında karma uç olarak yapılandırılır. Şirket içi VPC'de, Workbench örneğinin barındırılacağı bir alt ağ oluşturursunuz. Ayrıca, Workbench örneğine paket indirmek için kullanılacak bir Cloud NAT oluşturacaksınız.

Son olarak, Google API'leri için PSC'nin otomatik olarak oluşturduğu p.googleapis.com için Service Directory Private bölgesini kullanabilmek üzere şirket içi VPC için bir DNS eşleme bölgesi oluşturacaksınız.

3. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa oluşturmanız gerekir.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Google Cloud Console'da sağ üst araç çubuğundaki Cloud Shell simgesini tıklayın:

55efc1aaa7a4d3ad.png

Ortamın sağlanması ve bağlantının kurulması yalnızca birkaç saniye sürer. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

7ffe5cbb04455448.png

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde iyileştirilir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.

4. Başlamadan önceSüre: 2:00

API'leri etkinleştir

Cloud Shell'de projenizin doğru şekilde yapılandırıldığından ve ortam değişkenlerinizin ayarlandığından emin olun.

Cloud Shell'den

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

Projede gerekli tüm Google API'lerini etkinleştirin.

Cloud Shell'den

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. VPC ve alt ağ oluşturmaSüre: 5:00

Ağ oluşturma

Cloud Shell'den

gcloud compute networks create routing-vpc \
    --subnet-mode=custom

Cloud Shell'den

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

Cloud Router'lar ve Cloud NAT oluşturma

routing-vpc'de HA VPN ile birlikte kullanılacak bir Cloud Router oluşturun.

Cloud Shell'den

gcloud compute routers create routing-$region-cr \
    --network=routing-vpc \
    --region=$region \
    --asn=64512

onprem-vpc'de HA VPN ile birlikte kullanılacak bir Cloud Router oluşturun.

Cloud Shell'den

gcloud compute routers create onprem-$region-cr \
    --network=onprem-vpc \
    --region=$region \
    --asn=64513

onprem-vpc'de Cloud NAT ile birlikte kullanılacak bir Cloud Router oluşturun.

Cloud Shell'den

gcloud compute routers create onprem-$region-cr-4nat \
    --network=onprem-vpc \
    --region=$region

Şirket içi VPC'deki Cloud NAT, sonraki bir adımda yapılandırılacak olan Vertex AI Workbench örneğine paket indirmek için kullanılır.

Cloud Shell'den

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. Cloud HA-VPN oluşturmaSüre: 7:00

VPN ağ geçitlerini oluşturun.

Cloud Shell'den

gcloud compute vpn-gateways create routing-gateway \
   --network=routing-vpc \
   --region=$region \
   --stack-type=IPV4_ONLY

Cloud Shell'den

gcloud compute vpn-gateways create onprem-gateway \
   --network=onprem-vpc \
   --region=$region \
   --stack-type=IPV4_ONLY

Yönlendirme VPC'sinden kaynaklanan VPN tünellerini oluşturun.

Cloud Shell'den

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

Şirket içi VPC'den kaynaklanan VPN tünellerini oluşturun.

Cloud Shell'den

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

routing-vpc'den kaynaklanan iki tünel için BGP oturumları ayarlayın.

Cloud Shell'den

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

onprem-vpc'den kaynaklanan iki tünel için BGP oturumları oluşturun.

Cloud Shell'den

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

Konsolda Ağ Bağlantısı > VPN sayfasına gidin ve HA-VPN tünellerinizin ve BGP oturumlarınızın düzgün şekilde yapılandırıldığından emin olun.

7. NCC Hub ve Spokes'u yapılandırmaSüre:10:00

NCC Hub oluşturma

Cloud Shell'den

gcloud network-connectivity hubs create ncc-hub \
    --project="$project" \
    --preset-topology="mesh"

NCC Hub'ları oluşturma

NCC gcloud, tüm kollarda tam yol adlarının veya URI'lerin yapılandırılmasını gerektirir.

Cloud Shell'den

gcloud compute networks describe routing-vpc

Aşağıdaki komut için yönlendirme-vpc'nin tam yolunu (URI) not edin.

Örnek Çıkış

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

Yönlendirme VPC Spoke'unu yapılandırma

Cloud Shell'den

gcloud network-connectivity spokes linked-vpc-network create routing-vpc \
    --hub=ncc-hub \
    --vpc-network=projects/$project/global/networks/routing-vpc \
    --global

Cloud Shell'den

gcloud compute vpn-tunnels describe routing-to-onprem-tunnel0 --region=$region
gcloud compute vpn-tunnels describe routing-to-onprem-tunnel1 --region=$region

Yönlendirme-vpc'den kaynaklanan VPN tünellerinin tam yollarını (URI'ler) not edin.

Örnek Çıkış

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

Cloud Shell'den

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 

Devam etmeden önce tüm hub'larınızın doğru şekilde yapılandırıldığından emin olun.

Cloud Shell'den

gcloud network-connectivity hubs list-spokes ncc-hub

Örnek Çıkış

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. Google API'leri için Private Service Connect'i ayarlamaSüre: 5:00

Google API'leri uç noktaları için PSC, bölgesel bir VPC alt ağında bulunmayan genel IP adreslerinden oluşturulur. Genel IP adresi, özellikle PRIVATE_SERVICE_CONNECT amacıyla ayrılmış olmalıdır.

Cloud Shell'den

gcloud compute addresses create psc-ip \
  --global \
  --purpose=PRIVATE_SERVICE_CONNECT \
  --addresses=10.100.100.0 \
  --network=routing-vpc

Cloud Shell'den

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

Cloud Shell'den

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

Cloud Shell'den

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. Vertex Workbench örneğini ayarlamaSüre: 5:00

Workbench örneği kimliği için kullanılacak bir hizmet hesabı oluşturun.

Cloud Shell'den

gcloud iam service-accounts create workbench-sa \
    --display-name="workbench-sa"

Hizmet hesabınızın tam adını not edin ve Vertex AI/Gemini'a çağrı yürütmek için aiplatform.admin iznini verin.

Cloud Shell'den

gcloud iam service-accounts list

Örnek Çıkış

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

<your-project-id> kısmını gerçek proje kimliğinizle değiştirdiğinizden emin olun. Gerekli tırnak işaretleri nedeniyle burada $project değişkenini kullanamıyoruz.

Cloud Shell'den

gcloud projects add-iam-policy-binding $project --member='serviceAccount:workbench-sa@<your-project-id>.iam.gserviceaccount.com' --role='roles/aiplatform.admin' --condition=None

Cloud Shell'den

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

Workbench örneğinin sağlanması, gcloud komutunun çalıştırılmasından daha uzun sürebilir.

10. Gemini Code'u test etmeSüre: 7:00

Kullanıcı arayüzünde "Open JupyterLab"i (JupyterLab'i aç) tıklayın.

1b7ff959f1072aaa.png

JupyterLab'e girdikten sonra yeni bir Python 3 not defteri açın.

18c26d06183faca1.png

Not defterinde aşağıdaki kodu çalıştırın. Kodu, projenize ve bölge bilgilerinize göre güncellediğinizden emin olun.

JupyterLab not defterinden

pip install --upgrade google-genai

Not defteri çekirdeğini yeniden başlatın.

fe7911ce8b54ff8a.png

API uç noktasını not edin. Burada <YOUR_REGION>-aiplatform.googleapis.com API uç noktası kullanılmaktadır. Bu, Vertex AI'ın standart API uç noktasıdır.

JupyterLab not defterinden

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,
)

JupyterLab not defterinden

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)

Örnek Yanıt

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.

Kodu çalıştırırken kullandığınız API adını not edin. YOUR_REGION-aiplatform.googleapis.com, Vertex AI'ın varsayılan API adıdır. API adını değiştirmemiz ve kodu tekrar çalıştırmamız gerekiyor. Workbench örneğindeki bir terminalde TCPdump çalıştırarak kodun PSC uç noktasını kullandığından emin olabiliriz.

Terminalde TCPdump çalıştırma

Dosya > Yeni > Terminal'i tıklayarak Workbench'te bir terminal açın.

2cc405367de1f4c2.png

Terminalde metin çıkışını görmeyle ilgili sorun yaşıyorsanız terminal temanızı güncellemeniz gerekir. Bu işlemi Ayarlar > Terminal Teması > Açık VEYA Koyu'da yapın.

Terminalden

sudo tcpdump host 10.100.100.0

Gemini kodunu güncelleme

Not defterine geri dönün, API uç noktasını güncelleyin ve kodu tekrar çalıştırın. API uç noktasını <YOUR_REGION>-aiplatform**-psc4googep.p**.googleapis.com olarak değiştirdiğimizi hatırlatırız. Bu, PSC'ye özgü <service>-<endpointname>.p.googleapis.com API biçimiyle uyumludur.

JupyterLab not defterinden

API_ENDPOINT="https://<YOUR_REGION>-aiplatform-psc4googep.p.googleapis.com" # API Endpoint

JupyterLab not defterinden

from google import genai
from google.genai.types import (
    GenerateContentConfig,
    HarmBlockThreshold,
    HarmCategory,
    Part,
    SafetySetting,
)

JupyterLab not defterinden

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)

Örnek Yanıt

They weigh the same. 1 kg is 1 kg, regardless of what it's made of.

TCPdump'ı kontrol edin

Terminale geri dönün ve PSC uç noktasına (10.100.100.0) yapılan çağrıları bulun. TCPdump'ı sonlandırın (control+c)

Örnek Çıkış

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

BAŞARILI!

11. Temizleme adımları

JupyterLab not defterini kapatın ve Cloud Shell'e dönün. Cloud Shell'inizin zaman aşımına uğramadığından emin olun. Etkilendiyse değişkenlerinizi sıfırlayın.

Cloud Shell'den

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

Tüm kaynakları silin.

Cloud Shell'den

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. Tebrikler!

Codelab'i tamamladığınız için tebrikler.

İşlediğimiz konular

  • NCC Hub oluşturun.
  • NCC Hub'da VPC Spoke'ları yapılandırın.
  • Cloud HA VPN oluşturun.
  • NCC Hub'da hibrit Spoke'ları yapılandırın.
  • Google API'leri uç noktası için bir PSC oluşturun.
  • HA VPN üzerinden özel bir rota yapılandırın.
  • DNS eşleme bölgesi yapılandırın.
  • Vertex Workbench örneğini yapılandırma
  • Gemini Python kodunu, Google API'leri API uç noktası için PSC kullanacak şekilde yapılandırın.