از طریق Private Service Connect endpoint به چت Gemini با python sdk دسترسی پیدا کنید

1. بررسی اجمالی

Vertex AI API از طریق اینترنت قابل دسترسی است، با این حال، در شرکت خود ممکن است بخواهید به طور خصوصی و بدون مراجعه به اینترنت به Vertex AI API دسترسی داشته باشید. در این آزمایشگاه ابتدا از طریق python sdk در حال اجرا بر روی نمونه VM از طریق اینترنت عمومی به Vertex Gemini Chat API دسترسی خواهید داشت.

سپس یک نقطه پایانی Private Service Connect به APIهای Google ایجاد می‌کنید و جریان ترافیک را برای استفاده از نقطه پایانی خصوصی برای اتصال به API چت Gemini تغییر می‌دهید. تنظیمات ترکیبی از Terraform، gcloud و کنسول خواهد بود.

در این آزمایشگاه، شما قصد دارید الگوی زیر را ایجاد کنید.

شکل 1.

8b283cc5684283c2.png

2. هدف

در این آزمایشگاه شما یاد خواهید گرفت که چگونه وظایف زیر را انجام دهید:

  • نمونه VM را برای استفاده از python sdk تنظیم کنید
  • از طریق اسکریپت پایتون به چت Gemini متصل شوید
  • نقطه پایانی PSC را برای اتصال به Googleapis پیکربندی کنید
  • مسیر اتصال به Googleais را تأیید کنید
  • ورودی های DNS دستی را پیکربندی کنید

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
  • شناسه پروژه در تمام پروژه‌های Google Cloud منحصربه‌فرد است و تغییرناپذیر است (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورت‌حساب فراتر از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

55efc1aaa7a4d3ad.png

تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.

3. وظیفه 1. راه اندازی محیط با terraform

ما یک VPC سفارشی با قوانین فایروال و زیرشبکه ایجاد خواهیم کرد. کنسول ابری را باز کنید و پروژه مورد استفاده خود را انتخاب کنید.

  1. Cloud Shell را که در بالای کنسول خود در سمت راست قرار دارد باز کنید، مطمئن شوید که شناسه پروژه صحیح را در Cloud Shell می‌بینید، هرگونه درخواستی را برای اجازه دسترسی تأیید کنید. 4261e776f64ea978.png
  2. یک پوشه به نام terraform-build ایجاد کنید و به پوشه بروید
mkdir terraform-build  && cd terraform-build
  1. یک فایل main.tf و variable.tf ایجاد کنید.
touch main.tf variable.tf 
  1. به نمای ویرایشگر Cloud Shell بروید. ویرایشگر را انتخاب کنید، اطمینان حاصل کنید که به هر گونه درخواست ضروری اجازه می دهید تا رابط بارگیری شود.
  2. پس از بارگیری به مسیر File > Open Folder بروید و به /home/your-user-name/terraform-build بروید و Ok را انتخاب کنید تا پوشه در ویرایشگر باز شود. 78f5eb9f2f82f1b0.png
  3. فایل variable.tf را انتخاب کرده و موارد زیر را اضافه کنید. متن your-project-id-here را با شناسه پروژه واقعی خود در نقل قول جایگزین کنید
variable "project_id" {
  type = string
  default = "your-project-id-here"
}

variable "network_id" {
  type = string
  default = "python-net"
}
  1. سپس فایل main.tf را باز کنید. ما قصد داریم تعدادی کد terraform برای انجام اقدامات مختلف همانطور که در زیر توضیح داده شده است اضافه کنیم.

API ها را فعال کنید

resource "google_project_service" "default"

VPC به نام python-net ایجاد کنید

resource "google_compute_network" "default"

یک زیر شبکه اضافه کنید

resource "google_compute_subnetwork" "default"

دو قانون فایروال اضافه کنید

resource "google_compute_firewall" "allow_icmp"resource "google_compute_firewall" "allow_ssh"

  1. موارد زیر را کپی کرده و در فایل tf اصلی قرار دهید.
resource "google_project_service" "default" {
  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"
  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"]
}
  1. به ترمینال Cloud Shell برگردید مطمئن شوید که در دایرکتوری terraform-build cd terraform-build هستید و دستورات زیر را اجرا کنید.

terraform init

دایرکتوری کاری را مقدار دهی اولیه می کند. این مرحله ارائه دهندگان مورد نیاز برای پیکربندی داده شده را دانلود می کند.

terraform plan

یک برنامه اجرایی ایجاد می کند که نشان می دهد Terraform چه اقداماتی را برای استقرار زیرساخت شما انجام خواهد داد.

  1. اکنون برای ایجاد منابع، دستور terraform apply را اجرا کرده و yes تایپ کنید تا اجرا شود.

4. وظیفه 2. ایجاد دروازه NAT و VM با Terraform

ما باید به اینترنت دسترسی خارجی اعطا کنیم، بنابراین اجازه می دهیم یک دروازه NAT Cloud ایجاد کنیم و آن را وصل کنیم.

  1. Cloud Shell را باز کنید، به پوشه terraform-build بروید و فایل های زیر را ایجاد کنید (در مجموع سه فایل). بعداً اینها را ویرایش خواهیم کرد.
touch nat-vm.tf psc.tf dns.tf
  1. به نمای ویرایشگر Cloud Shell بروید و فایل nat-vm.tf را انتخاب کنید و کد Terraform زیر را اضافه کنید. این یک دروازه NAT و دو VM ایجاد می کند.

Terraform nat-vm.tf

resource "google_compute_router" "default" {
  name    = "py-outbound-nat"
  region  = "us-east1"
  network = google_compute_network.default.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"
  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"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    subnetwork = google_compute_subnetwork.default.id  
    stack_type = "IPV4_ONLY"
  }

  tags = ["allow-ssh", "allow-icmp"]

  metadata_startup_script = <<-EOF
    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-gem-env
    cd ~/py-gem-env
    python3 -m venv env
    source env/bin/activate
    pip install ipython google-cloud-aiplatform
  EOF
}

resource "google_compute_instance" "vm2" {
  name         = "py-vm2"
  zone         = "us-east1-b"
  machine_type = "n2-standard-2"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    subnetwork = google_compute_subnetwork.default.id   
    stack_type = "IPV4_ONLY"
  }

  tags = ["allow-ssh", "allow-icmp"]

  metadata_startup_script = <<-EOF
    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-gem-env
    cd ~/py-gem-env
    python3 -m venv env
    source env/bin/activate
    pip install ipython google-cloud-aiplatform
  EOF
}
  1. به ترمینال Cloud Shell بروید، مطمئن شوید که در پوشه terraform-build هستید و terraform plan اجرا کنید، این به شما نشان می دهد که 4 مورد اضافه می شود، سپس terraform apply اجرا کنید و yes را تایپ کنید تا دروازه NAT و دو vm ایجاد شود.

5. وظیفه 3. VM ها را پیکربندی کنید و آزمایش کنید

  1. به نمونه های VM بروید. vm را که با py-vm1 شروع می شود انتخاب کنید. SSH را انتخاب کنید.
  2. هنگامی که SSH را به py-vm1 وارد کردید، root را با تایپ sudo -i فعال کنید
  3. محیط venv خود را فعال کنید:
cd py-gem-env
source env/bin/activate
  1. حالا بیایید این را تأیید کنیم تا بعداً آزمایش کنیم. دستور زیر را در ماشین مجازی اجرا کنید، وقتی از شما خواسته شد y را فشار دهید.
gcloud auth application-default login
  1. سپس url را که در ابتدا با https:// ظاهر می‌شود کپی کنید، یک تب جدید در پنجره مرورگر آزمایشگاه خود باز کنید و url را جای‌گذاری کنید. درخواست ها را بپذیرید.
  2. وقتی گزینه کپی زیر را مشاهده کردید، به جلسه vm py-vm1 برگردید و کد مجوز را وارد کنید: کدی را که کپی کرده‌اید جای‌گذاری کنید و برای احراز هویت، اینتر را فشار دهید.

c29615cdf9324209.png

  1. حالا بیایید یک آزمایش سریع انجام دهیم تا ببینیم آیا می‌توانیم به Vertex Gemini API متصل شویم، این از us-central1-aiplatform.googleapis.com استفاده می‌کند، بنابراین ما به آن آدرس dig تا ببینیم مسیرهای ترافیک چگونه است.
dig us-central1-aiplatform.googleapis.com
  1. شما باید چیزی مشابه ببینید (آدرس متفاوت خواهد بود). توجه داشته باشید که مسیر از طریق آدرس های IP عمومی است زیرا API یک API عمومی است. کپی نکنید
; <<>> DiG 9.16.48-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9117
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.210.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.211.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.212.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.213.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.215.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.216.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.12.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.13.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.26.95
  1. حالا بیایید از پایتون استفاده کنیم. ipython تایپ کنید تا رابط ipython فعال شود.
ipython

4685b31f13df54e1.png

  1. حالا موارد زیر را کپی و پیست کنید. از Gemini می پرسد " همه رنگ های لوگوی گوگل چیست " و " رنگ آسمان چیست ". enter-your-project-id-here در نقل قول جایگزین کنید
import vertexai
from vertexai.generative_models import GenerativeModel, ChatSession

project_id = "enter-your-project-id-here" 
location = "us-central1" 

vertexai.init(project=project_id, location=location)
model = GenerativeModel("gemini-1.5-pro")
chat_session = model.start_chat()  

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    text_response = []
    responses = chat.send_message(prompt, stream=True)
    for chunk in responses:
        text_response.append(chunk.text)
    return "".join(text_response)

prompt = "Hello."
print(get_chat_response(chat_session, prompt)) 

prompt = "What are all the colors of the Google logo?"
print(get_chat_response(chat_session, prompt)) 

prompt = "What color is the sky?"
print(get_chat_response(chat_session, prompt))
  1. دکمه enter را بزنید تا اجرا شود و نتیجه را ببینید.
  2. این درخواست از طریق API عمومی به Vertex دسترسی پیدا کرد.
  3. جلسه SSH را ببندید بیایید ادامه دهیم.

حالا py-vm2 را با همان تنظیمات پیکربندی کنید

  1. به نمونه های VM بروید. vm را که با py-vm2 شروع می شود انتخاب کنید. SSH را انتخاب کنید.
  2. هنگامی که SSH را در py-vm2 -**** با تایپ ** sudo -i ** فعال کنید root را فعال کنید
  3. محیط venv خود را فعال کنید:
cd py-gem-env
source env/bin/activate
  1. حالا بیایید این را تأیید کنیم تا بعداً آزمایش کنیم. دستور زیر را در VM اجرا کنید
gcloud auth application-default login
  1. سپس url را که در ابتدا با https:// ظاهر می‌شود کپی کنید، یک تب جدید در پنجره مرورگر آزمایشگاه خود باز کنید و url را جای‌گذاری کنید. درخواست ها را بپذیرید.
  2. وقتی گزینه کپی زیر را مشاهده کردید، به جلسه vm py-vm2 برگردید و کد مجوز را وارد کنید: کدی را که کپی کرده‌اید جای‌گذاری کنید و برای احراز هویت، اینتر را فشار دهید.

c29615cdf9324209.png

  1. حالا بیایید یک آزمایش سریع انجام دهیم تا ببینیم آیا می توانیم به Vertex Gemini API متصل شویم. این دستور از 4 پینگ به us-central1-aiplatform.googleapis.com استفاده می کند، بنابراین ما از آدرس عمومی API پاسخ دریافت می کنیم.
ping -c 4 us-central1-aiplatform.googleapis.com
  1. بعداً برای آزمایش این VM باز خواهیم گشت. جلسه SSH را ببندید و ادامه دهید.

6. وظیفه 4. نقطه پایانی PSC را برای googleapis با Terraform ایجاد کنید

برای فعال کردن اتصال خصوصی به نقطه پایانی Vertex API ما یک نقطه پایانی Private Service Connect برای Google API ایجاد خواهیم کرد. این به ما امکان می دهد از یک آدرس IP خصوصی که برای هدایت ترافیک به API های Google مورد نیاز خود اختصاص می دهیم، در این مورد Vertex استفاده کنیم.

  1. اگر قبلاً باز نشده است، Cloud Shell را در نمای ویرایشگر باز کنید. ما قصد داریم موارد زیر را ایجاد کنیم:
  • یک IP برای نقطه پایانی PSC 192.168.255.250 ایجاد کنید ( resource "google_compute_global_address" "default")
  • یک نقطه پایانی PSC برای APIهای Google ایجاد کنید ( 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 = ""
  }
  1. به ترمینال Cloud Shell بروید، مطمئن شوید که در پوشه terraform-build هستید. سپس terraform init را اجرا کنید سپس terraform plan اجرا کنید این به شما نشان می دهد که 2 مورد اضافه خواهد شد.
    سپس terraform apply اجرا کنید و yes برای ایجاد IP و PSC Google APIs endpoint تایپ کنید.
  2. بررسی وجود نقطه پایانی
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

7. وظیفه 5. بررسی اتصال نقطه پایانی از طریق آدرس IP

بیایید با استفاده از نقطه پایانی خصوصی برای اتصال به جمینی وصل شویم.

  1. به VM Instance py-vm1 بروید. SSH و SSH را در VM انتخاب کنید
  2. با تایپ sudo -i به root دسترسی پیدا کنید
  3. ما فقط از این نمونه جداگانه برای آزمایش نقطه پایانی PSC استفاده می کنیم، بنابراین فایل میزبان را با ورودی زیر تغییر می دهیم.
echo 192.168.255.250 us-central1-aiplatform.googleapis.com >> /etc/hosts

cat /etc/hosts
  1. مسیر اتصال به us-central1-aiplatform.googleapis.com را با استفاده از دستور ping بررسی کنید. با این کار آدرس IP که در فایل های میزبان وارد کرده اید پینگ می شود. این یک نقطه پایانی PSC است و پینگ شما ناموفق خواهد بود.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. به کنسول برگردید و نمونه دیگری از VM Instance py-vm1 را باز کنید. SSH و SSH را در VM انتخاب کنید
  2. با تایپ sudo -i به root دسترسی پیدا کنید
  3. برای مشاهده اتصال در یک TCP dump دستور follow را اجرا کنید
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
  1. اکنون به اولین نمونه SSH از VM Instance py-vm1 برگردید
  2. env را با استفاده از آن فعال کنید
cd py-gem-env
source env/bin/activate
  1. حالا بیایید پایتون را آزمایش کنیم. ipython تایپ کنید تا رابط ipython فعال شود. این بار ترافیک از طریق نقطه پایانی PSC جریان خواهد داشت.
ipython
  1. حالا موارد زیر را کپی و پیست کنید. از Gemini می پرسد " همه رنگ های لوگوی گوگل چیست " و " ششار نیاگارا را توصیف کنید ". enter-your-project-id-here در نقل قول جایگزین کنید
import vertexai
from vertexai.generative_models import GenerativeModel, ChatSession

project_id = "enter-your-project-id-here" 
location = "us-central1" 

vertexai.init(project=project_id, location=location)
model = GenerativeModel("gemini-1.5-pro")
chat_session = model.start_chat()  # Corrected line

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    text_response = []
    responses = chat.send_message(prompt, stream=True)
    for chunk in responses:
        text_response.append(chunk.text)
    return "".join(text_response)

prompt = "Hello."
print(get_chat_response(chat_session, prompt)) 

prompt = "What are all the colors of the Google logo?"
print(get_chat_response(chat_session, prompt)) 

prompt = "Describe Niagara Falls"
print(get_chat_response(chat_session, prompt))
  1. دکمه enter را بزنید تا اجرا شود و نتیجه را ببینید.
  2. به دومین نمونه از VM Instance py-vm1 برگردید. شما باید نتیجه TCPDUMP را ببینید. با آدرس های IP ماشین مجازی و همچنین آدرس IP نقطه پایانی PSC برای اتصال به us-central1-aiplatform.googleapis.com متوجه ورود و خروج خواهید شد.
22:21:55.032433 ens4  Out IP 10.0.11.18.57114 > 192.168.255.250.443: Flags [.], ack 8606, win 501, options [nop,nop,TS val 1797790182 ecr 2593039209], length 0
22:21:55.468285 ens4  In  IP 192.168.255.250.443 > 10.0.11.18.57114: Flags [P.], seq 8606:8991, ack 5785, win 296, options [nop,nop,TS val 2593039645 ecr 1797790182], length 385
22:21:55.468320 ens4  Out IP 10.0.11.18.57114 > 192.168.255.250.443: Flags [.], ack 8991, win 501, options [nop,nop,TS val 1797790618 ecr 2593039645], length 0
  1. تمام جلسات SSH را به VM Instance py-vm1 ببندید

8. وظیفه 6. ایجاد ورودی دستی DNS به googleapis با Terraform (اختیاری)

شما می توانید یک ورودی DNS دستی برای اشاره به نقطه پایانی PSC با استفاده از DNS خصوصی ایجاد کنید. این بر تمام شبکه هایی که به آن اختصاص می دهید تأثیر می گذارد.

  1. به Network services بروید و Cloud DNS را انتخاب کنید.
  2. در مناطق باید یک منطقه به طور خودکار ایجاد شده برای Private Service Connect for Google APIs، با فهرست خدمات نوع منطقه را ببینید. این می تواند برای اتصال به نقطه پایانی PSC با فرمت ** SERVICE-ENDPOINT استفاده شود. p.googleapis.com مثال: aiplatform-pscvertexgemini.p.googleapis.com
  3. در این مورد می خواهیم به صورت دستی یک ورودی DNS خصوصی ایجاد کنیم. پیکربندی به صورت زیر خواهد بود
  • یک منطقه DNS خصوصی به نام "googleapis-private" برای "googleapis.com" ایجاد کنید و آن را به شبکه "python-net" محدود کنید.
  • یک رکورد A به نقشه "googleapis.com" به آدرس IP "192.168.255.250" اضافه کنید .
  • یک رکورد CNAME اضافه کنید تا همه زیردامنه های "googleapis.com" (به عنوان مثال، www.googleapis.com) به "googleapis.com" هدایت شوند.
  1. اگر قبلاً باز نشده است، 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."]  
}
  1. به ترمینال Cloud Shell بروید، مطمئن شوید که در پوشه terraform-build هستید. سپس terraform plan اجرا کنید که به شما نشان می دهد چه مواردی اضافه می شود،
    سپس terraform apply اجرا کرده و yes تایپ کنید تا ورودی DNS خصوصی ایجاد شود.
  2. شما باید تنظیماتی را با یک رکورد A و CNAME مانند این ببینید b7f122f0d1fd2850.png
  3. سپس اتصال را با این تغییرات در py-vm2 تأیید می کنیم

9. وظیفه 7. بررسی اتصال نقطه پایانی از طریق آدرس IP (اختیاری)

بیایید با استفاده از نقطه پایانی خصوصی برای اتصال به جمینی وصل شویم.

  1. به VM Instance py-vm2 بروید. SSH و SSH را در VM انتخاب کنید
  2. با تایپ sudo -i به root دسترسی پیدا کنید
  3. مسیر اتصال به us-central1-aiplatform.googleapis.com را با استفاده از دستور ping بررسی کنید. با این کار آدرس IP در DNS خصوصی، رکوردی برای googleapis پینگ می شود. این IP یک نقطه پایانی PSC است و پینگ های شما ناموفق خواهد بود.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. مسیر اتصال را با یک ping با استفاده از ورودی DNS ایجاد شده به طور خودکار برای PSC Google API با aiplatform-pscvertexgemini.p.googleapis.com بررسی کنید. این به آدرس IP نقطه پایانی PSC اشاره می کند و پینگ شما ناموفق خواهد بود.
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
  1. مسیر اتصال به us-central1-aiplatform.googleapis.com را با استفاده از دستور dig بررسی کنید. این باید آدرس IP نقطه پایانی PSC باشد.
dig us-central1-aiplatform.googleapis.com
  1. به کنسول برگردید و نمونه دیگری از VM Instance py-vm2 را باز کنید. SSH و SSH را در VM انتخاب کنید
  2. با تایپ sudo -i به root دسترسی پیدا کنید
  3. برای مشاهده اتصال در یک TCP dump دستور follow را اجرا کنید
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
  1. اکنون به اولین نمونه SSH از VM Instance py-vm2 برگردید
  2. env را با استفاده از آن فعال کنید
cd py-gem-env
source env/bin/activate
  1. حالا بیایید پایتون را آزمایش کنیم. ipython تایپ کنید تا رابط ipython فعال شود.
ipython
  1. حالا موارد زیر را کپی و پیست کنید. از Gemini بپرسید " همه رنگ های لوگوی گوگل چیست " و " دو ویژگی Gemini pro چیست ". enter-your-project-id-here در نقل قول جایگزین کنید
import vertexai
from vertexai.generative_models import GenerativeModel, ChatSession

project_id = "enter-your-project-id-here" 
location = "us-central1" 

vertexai.init(project=project_id, location=location)
model = GenerativeModel("gemini-1.5-pro")
chat_session = model.start_chat()  # Corrected line

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    text_response = []
    responses = chat.send_message(prompt, stream=True)
    for chunk in responses:
        text_response.append(chunk.text)
    return "".join(text_response)

prompt = "Hello."
print(get_chat_response(chat_session, prompt)) 

prompt = "What are all the colors of the Google logo?"
print(get_chat_response(chat_session, prompt)) 

prompt = "What are two features of Gemini pro"
print(get_chat_response(chat_session, prompt))
  1. دکمه enter را بزنید تا اجرا شود و نتیجه را ببینید.
  2. به دومین نمونه از VM Instance py-vm2 برگردید. شما باید نتیجه TCPDUMP را ببینید. متوجه ورود و خروج خواهید شد و آدرس IP ماشین مجازی از آدرس IP نقطه پایانی PSC برای اتصال به us-central1-aiplatform.googleapis.com استفاده می کند.

تمام جلسات SSH را به VM Instance py-vm2 ببندید

10. پاکسازی کنید

  1. به Cloud Shell بروید مطمئن شوید که در دایرکتوری terraform-build cd terraform-build هستید و دستور زیر terraform destroy اجرا کنید و yes را تایپ کنید همه منابعی که در پروژه خود با Terraform ایجاد کرده اید حذف خواهند شد.

11. تبریک می گویم

تبریک می‌گوییم، شما با استفاده از آدرس عمومی API و خصوصی با استفاده از Private Service Connect Endpoint برای Google API با موفقیت به گپ Vertex Gemini متصل شدید. این قابلیت می تواند اتصال API خصوصی را به محیط ابری on-prem/دیگر فضای ابری شما که از طریق (Interconnect، Cross-Cloud Interconnect و VPC) متصل هستند، گسترش دهد.

مراحل بعدی / بیشتر بدانید

می‌توانید درباره شبکه‌های هوش مصنوعی Vertex بیشتر بخوانید

Codelab: دسترسی Anthropic Claude در Vertex AI با python sdk از طریق Private Service Connect endpoint

آزمایشگاه بعدی خود را ببرید

تلاش خود را با Google Cloud ادامه دهید و این آزمایشگاه‌های دیگر Google Cloud Skills Boost را بررسی کنید: