1. סקירה כללית
אפשר לגשת ל-Vertex AI API דרך האינטרנט, אבל יכול להיות שבארגון שלכם תרצו לגשת ל-Vertex AI API באופן פרטי בלי לעבור דרך האינטרנט. בשיעור ה-Lab הזה תקבלו גישה ראשונה לצ'אט של Vertex Gemini API דרך python sdk שפועלת במכונה וירטואלית דרך אינטרנט ציבורי.
לאחר מכן, תיצורו נקודת קצה מסוג Private Service Connect ל-Google APIs, ותשנו את זרימת התנועה כך שתשתמש בנקודת הקצה הפרטית כדי להתחבר ל-Gemini chat API. ההגדרות האישיות יהיו שילוב של Terraform, gcloud ומסוף.
בשיעור ה-Lab הזה תלמדו ליצור את התבנית הבאה.
איור 1.
2. מטרה
בשיעור ה-Lab הזה תלמדו איך לבצע את המשימה הבאה:
- הגדרת מכונה וירטואלית לשימוש ב-Python SDK
- חיבור לשיחה עם Gemini באמצעות סקריפט python
- הגדרת נקודת קצה מסוג PSC כדי להתחבר אל Googleapis
- אימות נתיב הקישוריות אל Googleais
- הגדרת רשומות DNS ידניות
הגדרת סביבה בקצב אישי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- Project name הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן.
- Project ID הוא ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות שם משלך ולראות אם הוא זמין. לא ניתן לשנות אותו אחרי השלב הזה, והוא נשאר למשך הפרויקט. - לידיעתך, יש ערך שלישי, מספר פרויקט, שמשתמשים בו בממשקי API מסוימים. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא יעלה הרבה כסף, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.
הפעלת Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.
במסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:
נדרשים רק כמה דקות כדי להקצות את הסביבה ולהתחבר אליה. בסיום, אמור להופיע משהו כזה:
למכונה הווירטואלית הזו נטען כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. כל העבודה ב-Codelab הזה יכולה להתבצע בתוך דפדפן. אין צורך להתקין שום דבר.
3. משימה 1: הגדרת סביבת עם terraform
אנחנו ניצור VPC מותאם אישית עם כללי חומת אש ותת-רשת. פותחים את מסוף Cloud ובוחרים את הפרויקט שבו רוצים להשתמש.
- פותחים את Cloud Shell, שנמצא בחלק העליון של המסוף בצד שמאל, מוודאים שמזהה הפרויקט הנכון מופיע ב-Cloud Shell, ומאשרים את כל ההנחיות כדי לאשר גישה.
- יוצרים תיקייה בשם terraform-build ומעבירים אותה לתיקייה
mkdir terraform-build && cd terraform-build
- יוצרים קובץ main.tf ו-variable.tf.
touch main.tf variable.tf
- עוברים לתצוגת Cloud Shell Editor. בוחרים באפשרות editor (עריכה) ומוודאים שמאשרים את כל ההנחיות הנדרשות כדי שהממשק יוכל לטעון.
- אחרי הטעינה, עוברים אל File > Open Folder (קובץ > פתיחת תיקייה) ועוברים אל /home/your-user-name/terraform-build ובוחרים באפשרות Ok (אישור) כדי לפתוח את התיקייה בעורך.
- בוחרים את הקובץ 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 |
|
הוספת רשת משנה |
|
הוספת שני כללי חומת אש |
|
- מעתיקים את הקטע הבא ומדביקים אותו בקובץ ה- .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"] }
- חוזרים למסוף Cloud Shell, מוודאים שנמצאים בספרייה terraform-build
cd terraform-build
ומריצים את הפקודות הבאות:
terraform init
אתחול ספריית העבודה. בשלב הזה תתבצע הורדה של הספקים שנדרשים להגדרה הנתונה.
terraform plan
יצירת תוכנית ביצוע שמציגה את הפעולות ש-Terraform תבצע כדי לפרוס את התשתית.
- כדי ליצור את המשאבים, מריצים את הפקודה
terraform apply
ומקלידיםyes
.
4. משימה 2: יצירת שער NAT ומכונות וירטואליות באמצעות Terraform
אנחנו צריכים לתת גישה חיצונית יוצאת לאינטרנט, לכן נוצר שער Cloud NAT ומצרפים אותו.
- פותחים את Cloud Shell, עוברים לתיקייה terraform-build ויוצרים את הקבצים הבאים (סה"כ שלושה קבצים). נערוך אותם בהמשך.
touch nat-vm.tf psc.tf dns.tf
- עוברים לתצוגת Cloud Shell Editor, בוחרים את הקובץ nat-vm.tf ומוסיפים את הקוד הבא של Terraform. הפעולה הזו תיצור שער NAT ושתי מכונות וירטואליות.
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
}
- עוברים לטרמינל של Cloud Shell, מוודאים שנמצאים בתיקייה terraform-build ומריצים את הפקודה
terraform plan
, ואז יוצג 4 פריטים ואז מריצים את הפקודהterraform apply
ומקלידיםyes
כדי ליצור את השער NAT ושני VMs.
5. משימה 3: הגדרה ובדיקה של מכונות וירטואליות
- עוברים אל מכונות VM. בוחרים את המכונה הווירטואלית שמתחילה ב-py-vm1. בוחרים באפשרות SSH.
- לאחר הזנת SSH ל-py-vm1,מפעילים את הרמה הבסיסית (root) באמצעות הקלדת
sudo -i
- מפעילים את סביבת venv:
cd py-gem-env
source env/bin/activate
- עכשיו נבצע אימות כדי שנוכל לבצע בדיקות בהמשך. מריצים את הפקודה הבאה במכונה הווירטואלית ומקישים על y כשמופיעה בקשה.
gcloud auth application-default login
- לאחר מכן מעתיקים את כתובת ה-URL שמתחילה ב-https://, פותחים כרטיסייה חדשה בחלון הדפדפן של המעבדה ומדביקים את כתובת ה-URL. מאשרים את ההנחיות.
- כשמוצגת ההודעה הבאה, בוחרים באפשרות 'העתקה', חוזרים לסשן של המכונה הווירטואלית py-vm1 ובשדה Enter authorization code: מדביקים את הקוד שהעתקתם ולוחצים על Enter כדי לבצע אימות.
- עכשיו נערוך בדיקה מהירה כדי לראות אם אנחנו יכולים להתחבר ל-Vertex Gemini API, שנעשה בו שימוש ב-us-central1-aiplatform.googleapis.com, ולכן נבצע
dig
לכתובת הזו כדי לבדוק את נתיבי התנועה.
dig us-central1-aiplatform.googleapis.com
- אמורה להופיע הודעה דומה (הכתובת תהיה שונה). שימו לב שהנתיב הוא דרך כתובות 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
- עכשיו נשתמש ב-Python. מקלידים
ipython
כדי להפעיל את הממשק ipython.
ipython
- עכשיו צריך להעתיק ולהדביק את הטקסט הבא. ההנחיה הזו שואלת את Gemini "מהם כל צבעי הלוגו של Google" ואת השאלה "מה צבע השמיים" . מחליפים את
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))
- יש להקיש על Enter כדי להריץ אותו ולראות את התוצאה.
- הבקשה הזו ניגשה ל-Vertex דרך ה-API הציבורי.
- סוגרים את סשן SSH וממשיכים.
עכשיו צריך להגדיר את py-vm2 עם אותן הגדרות
- עוברים אל מכונות VM. בוחרים את ה-VM שמתחילה ב-py-vm2. בוחרים באפשרות SSH.
- אחרי שמתחברים ל-py-vm2 ב-SSH, מפעילים את root על ידי הקלדה של **
sudo -i
** - מפעילים את סביבת ה-Venv:
cd py-gem-env
source env/bin/activate
- עכשיו נבצע אימות כדי שנוכל לבצע בדיקות בהמשך. מריצים את הפקודה הבאה ב-VM
gcloud auth application-default login
- מעתיקים את כתובת ה-URL שמופיעה בהתחלה ב-https:// ופותחים כרטיסייה חדשה בחלון הדפדפן של שיעור ה-Lab ומדביקים את כתובת ה-URL. מאשרים את ההנחיות.
- כשמוצגת ההודעה הבאה, בוחרים באפשרות 'העתקה', חוזרים לסשן ה-VM py-vm2 ובשדה Enter authorization code: מדביקים את הקוד שהעתקתם ולוחצים על Enter כדי לבצע אימות.
- עכשיו נבצע בדיקה מהירה כדי לראות אם אנחנו יכולים להתחבר ל-Vertex Gemini API. הפקודה הזו תשתמש ב-4 פינגים אל us-central1-aiplatform.googleapis.com, כך שנקבל תשובה מהכתובת הציבורית של ה-API.
ping -c 4 us-central1-aiplatform.googleapis.com
- נמשיך לבדוק את ה-VM בהמשך. סוגרים את סשן ה-SSH וממשיכים.
6. משימה 4: יצירת נקודת הקצה (endpoint) של PSC ל-googleapis באמצעות Terraform
כדי לאפשר קישוריות פרטית לנקודת הקצה של Vertex API, נוצר נקודת קצה של Private Service Connect לממשקי Google API. כך נוכל להשתמש בכתובת IP פרטית שאנחנו מקצים כדי לנתב תנועה לממשקי Google API שדרושים לנו, במקרה הזה Vertex.
- אם עדיין לא פותחים את Cloud Shell, פותחים אותו בתצוגת Editor. אנחנו ניצור את הפריטים הבאים:
- יוצרים כתובת IP לנקודת הקצה של PSC 192.168.255.250 (
resource "google_compute_global_address" "default")
- יצירת נקודת קצה (endpoint) של 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
כדי ליצור את נקודת הקצה (endpoint) של Google APIs ו-PSC. - איך מוודאים שנקודת הקצה קיימת
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global
7. משימה 5: אימות הקישוריות של נקודת הקצה לפי כתובת IP
צריך להתחבר באמצעות נקודת הקצה הפרטית כדי להתחבר ל-Gemini.
- נכנסים אל מכונת ה-VM py-vm1. בחירת SSH ו-SSH ב-VM
- קבלת גישה לרמה הבסיסית (root) באמצעות הקלדת
sudo -i
- נשתמש במכונה הספציפית הזו רק כדי לבדוק את נקודת הקצה של PSC, לכן נשנה את קובץ המארח באמצעות הרשומה הבאה:
echo 192.168.255.250 us-central1-aiplatform.googleapis.com >> /etc/hosts
cat /etc/hosts
- בודקים את נתיב הקישוריות אל us-central1-aiplatform.googleapis.com באמצעות הפקודה
ping
. הפקודה תשלח הודעה (ping) לכתובת ה-IP שהזנתם בקובצי המארחים. זוהי נקודת קצה (endpoint) של PSC והפינגים שלך ייכשלו.
ping -c 2 us-central1-aiplatform.googleapis.com
- חוזרים למסוף ופותחים מכונה וירטואלית נוספת של py-vm1. בוחרים את האפשרויות SSH ו-SSH ב-VM.
- קבלת גישה לרמה הבסיסית (root) באמצעות הקלדת
sudo -i
- מריצים את הפקודה הבאה כדי לראות את הקישוריות בקובץ נתונים של TCP
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
- עכשיו חוזרים למופע ה-SSH הראשון של מכונת ה-VM py-vm1
- מפעילים את הסביבה באמצעות
cd py-gem-env
source env/bin/activate
- עכשיו נבדוק את Python. מקלידים
ipython
כדי להפעיל את הממשק ipython. הפעם התנועה תעבור דרך נקודת הקצה של PSC.
ipython
- עכשיו צריך להעתיק ולהדביק את הטקסט הבא. כך שואלים את Gemini "מהם כל הצבעים של הלוגו של Google" וגם "תיאור של מפלי הניאגרה". מחליפים את
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))
- מקישים על enter כדי להריץ את הפקודה ולראות את התוצאה.
- חוזרים למכונה הווירטואלית השנייה 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
- סגירת כל סשני ה-SSH למכונה הווירטואלית py-vm1
8. משימה 6: יצירת רשומת DNS ידנית ל-googleapis באמצעות Terraform (אופציונלי)
אפשר ליצור רשומת DNS ידנית שמפנה לנקודת הקצה של PSC באמצעות DNS פרטי. השינוי הזה ישפיע על כל הערוצים שתקציבו אליו.
- עוברים אל 'שירותי רשת' ובוחרים ב-Cloud DNS.
- באזורים אמור להופיע אזור שנוצר באופן אוטומטי עבור Private Service Connect for Google APIs, עם ספריית שירות של סוג האזור. אפשר להשתמש בו כדי להתחבר לנקודת הקצה (endpoint) של 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-vm2
9. משימה 7: אימות הקישוריות של נקודת הקצה באמצעות כתובת IP (אופציונלי)
נשתמש בנקודת הקצה הפרטית כדי להתחבר ל-Gemini.
- נכנסים אל מכונת ה-VM py-vm2. בחירת SSH והתחברות ל-VM באמצעות SSH
- קבלת גישה לרמה הבסיסית (root) באמצעות הקלדת
sudo -i
- בודקים את נתיב הקישוריות אל us-central1-aiplatform.googleapis.com באמצעות הפקודה
ping
. הפקודה הזו תשלח הודעה ל-ping לכתובת ה-IP ב-DNS הפרטי, רשומת A של googleapis. כתובת ה-IP הזו היא נקודת קצה (endpoint) של PSC והפינגים שלך ייכשלו.
ping -c 2 us-central1-aiplatform.googleapis.com
- בודקים את נתיב הקישוריות באמצעות
ping
באמצעות רשומת ה-DNS שנוצרה באופן אוטומטי עבור ממשקי Google API של PSC באמצעותaiplatform-pscvertexgemini.p.googleapis.com
. הכתובת הזו מפנה לכתובת ה-IP של נקודת הקצה של PSC, והפינגים לא יצליחו.
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
- בודקים את נתיב הקישוריות אל us-central1-aiplatform.googleapis.com באמצעות הפקודה
dig
. זו צריכה להיות כתובת ה-IP של נקודת הקצה של PSC.
dig us-central1-aiplatform.googleapis.com
- חוזרים למסוף ופותחים מכונה וירטואלית נוספת, py-vm2. בוחרים את האפשרויות SSH ו-SSH ב-VM.
- כדי לקבל הרשאת root, מקלידים
sudo -i
- מריצים את פקודת המעקב כדי לראות את הקישוריות בקובץ Dump של TCP
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
- עכשיו חוזרים למופע ה-SSH הראשון של מכונת ה-VM py-vm2
- מפעילים את הסביבה באמצעות
cd py-gem-env
source env/bin/activate
- עכשיו נבדוק את Python. מקלידים
ipython
כדי להפעיל את הממשק ipython.
ipython
- עכשיו צריך להעתיק ולהדביק את הטקסט הבא. הבקשה הזו מבקשת מ-Gemini לומר "מהם כל הצבעים של הלוגו של Google" וגם "מהן שתי התכונות של 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))
- מקישים על enter כדי להריץ את הפקודה ולראות את התוצאה.
- חוזרים למכונה הווירטואלית השנייה py-vm2. אמורה להופיע התוצאה של ה-TCPDUMP. תוכלו לראות את הכניסה פנימה והחוצה, וכתובת ה-IP של המכונה הווירטואלית משתמשת בכתובת ה-IP של נקודת הקצה של PSC כדי להתחבר אל us-central1-aiplatform.googleapis.com
סגירת כל סשני ה-SSH למכונה הווירטואלית py-vm2
10. ניקוי
- נכנסים ל-Cloud Shell, מוודאים שנמצאים בספרייה terraform-build
cd terraform-build
ומריצים את הפקודה הבאהterraform destroy
ומקלידיםyes
. כל המשאבים שיצרתם בפרויקט באמצעות Terraform יוסרו.
11. מזל טוב
מזל טוב! התחברת בהצלחה לצ'אט של Vertex Gemini באמצעות כתובת API ציבורית וגם באמצעות Private Service Connect Endpoint ל-Google APIs. הפונקציונליות הזו מאפשרת להרחיב את קישוריות ה-API הפרטי לסביבה המקומית או לסביבת ענן אחרת שמחוברות באמצעות (Interconnect, Cross-Cloud Interconnect ו-VPC).
השלבים הבאים / מידע נוסף
מידע נוסף על רשתות ב-Vertex AI
Codelab: גישה ל-Anthropic Claude ב-Vertex AI באמצעות python sdk דרך נקודת הקצה של Private Service Connect
אל שיעור ה-Lab הבא
אתם מוזמנים להמשיך את יחידת ה-Quest עם Google Cloud ולהציץ בשיעורי ה-Lab הבאים של Google Cloud Skills Boost: