1. סקירה כללית
אפשר לגשת ל-Vertex AI API דרך האינטרנט, אבל יכול להיות שבארגון שלכם תרצו לגשת ל-Vertex AI API באופן פרטי בלי לעבור דרך האינטרנט. במעבדה הזו תבצעו את הגישה הראשונה ל-Anthropic Claude ב-Vertex דרך Python SDK שפועל במכונה וירטואלית דרך האינטרנט הציבורי.
לאחר מכן תיצרו נקודת קצה של Private Service Connect ל-Googleapis, ותשנו את זרימת התנועה כך שתשתמש בנקודת הקצה הפרטית כדי להתחבר ל-Vertex API.
בשיעור ה-Lab הזה תלמדו ליצור את התבנית הבאה.
איור 1.
2. מטרות
בשיעור ה-Lab הזה תלמדו איך לבצע את המשימה הבאה:
- הגדרת מכונה וירטואלית לשימוש ב-Python SDK
- חיבור לצ'אט של Anthropic Claude באמצעות סקריפט Python
- הגדרת נקודת קצה של PSC כדי להתחבר ל-Googleapis
- הגדרת רשומות DNS ידניות
- אימות נתיב הקישוריות אל Googleais
הגדרת מעבדה
הגדרת סביבה בקצב אישי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- שם הפרויקט הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד תוכלו לעדכן אותו.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שמגדירים אותו. מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות כתובת משלכם ולבדוק אם היא זמינה. לא ניתן לשנות את השם אחרי השלב הזה, והוא יישאר למשך כל פרק הזמן של הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי העזרה.
- בשלב הבא, כדי להשתמש במשאבים או ב-API של Cloud, תצטרכו להפעיל את החיוב במסוף Cloud. השלמת הקודלאב הזה לא תעלה הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.
הפעלת Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.
במסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:
תהליך ההקצאה והחיבור לסביבת העבודה אמור להימשך רק כמה רגעים. בסיום, אמור להופיע משהו כזה:
המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, משפרת מאוד את ביצועי הרשת ואת האימות. אתם יכולים לבצע את כל העבודה בקודלאב הזה בדפדפן. אין צורך להתקין שום דבר.
3. משימה 1: הגדרת הסביבה
ניצור VPC בהתאמה אישית עם כללי חומת אש. אם כבר יש לכם VPC ופרויקט, אתם יכולים לדלג על הקטע הזה.
פותחים את Cloud Shell שנמצא בחלק העליון של המסוף, בצד שמאל. ומגדירים את ההגדרות הבאות:
- הפעלה של חלק מה-API שנעשה בהם שימוש בשיעור ה-Lab הזה
gcloud services enable dns.googleapis.com gcloud services enable aiplatform.googleapis.com gcloud services enable servicedirectory.googleapis.com
- מגדירים כמה משתנים. המשתנים האלה הם מזהה הפרויקט ומזהה הרשת של ה-VPC בהתאמה אישית (יוצרים את ה-VPC בשלב 4).
projectid=$(gcloud config get-value project) networkid=anthropic-net echo $projectid echo $networkid clear
- עכשיו יוצרים רשת VPC בהתאמה אישית בשם anthropic-net.
gcloud compute networks create $networkid \ --project=$projectid \ --subnet-mode=custom \ --mtu=1460 \ --bgp-routing-mode=global
- יוצרים את תת-הרשת vm1-subnet ב-VPC החדש
gcloud compute networks subnets create vm-subnet \ --project=$projectid --range=10.0.88.0/24 \ --stack-type=IPV4_ONLY --network=$networkid \ --region=us-east1
- הוספת כלל של חומת אש מסוג ICMP ל-VPC
gcloud compute firewall-rules create $networkid-allow-icmp --project=$projectid \ --network=$networkid \ --description="Allows ICMP connections from any source to any instance on the network." \ --direction=INGRESS \ --priority=65534 \ --source-ranges=0.0.0.0/0 \ --action=ALLOW \ --rules=icmp
- הוספת כלל של חומת אש ל-SSH ל-VPC
gcloud compute firewall-rules create $networkid-allow-ssh \ --project=$projectid \ --network=$networkid \ --description="Allows TCP connections from any source to any instance on the network using port 22." \ --direction=INGRESS --priority=65534 \ --source-ranges=0.0.0.0/0 --action=ALLOW \ --rules=tcp:22
4. משימה 2: הפעלת Anthropic ב-Vertex model garden
אנחנו צריכים להעניק גישה חיצונית יוצאת לאינטרנט, לכן נוצר שער Cloud NAT ומצרפים אותו.
- עוברים אל Vertex AI ובוחרים באפשרות Model Garden.
- מחפשים את Anthropic ובוחרים באפשרות Claude 3.5 Sonnet.
- בוחרים באפשרות Enable (הפעלה). תתבקשו למלא פרטים מסוימים. ממלאים את הטופס ובוחרים באפשרות Next (הבא).
- בדף האחרון, בוחרים באפשרות אישור כדי להפעיל את Claude 3.5 Sonnet
5. משימה 3: יצירת שער NAT ומכונות וירטואליות
אנחנו צריכים להעניק גישה חיצונית יוצאת לאינטרנט, לכן נוצר שער Cloud NAT ומצרפים אותו.
ב-Cloud Shell, משתמשים בפקודות הבאות
- יוצרים את Cloud NAT.
gcloud compute routers create anthro-out-nat \ --network $networkid \ --region us-east1
- יוצרים את השער של Cloud NAT.
gcloud compute routers nats create anthro-out-nat-gw \
--router-region us-east1 \
--router anthro-out-nat \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
עכשיו נוצר מכונה וירטואלית אחת כדי לגשת ל-Anthropic ב-Vertex AI דרך Python SDK.
אנחנו הולכים ליצור מכונה וירטואלית לבדיקה עם החבילות הבאות מותקנות
- באותו סשן של Cloud Shell, יוצרים את המכונה הווירטואלית anthro-vm באמצעות הפקודה הבאה.
gcloud compute instances create anthro-vm \
--project=$projectid \
--zone=us-east1-b \
--network-interface=stack-type=IPV4_ONLY,subnet=vm-subnet,no-address,network=$networkid \
--metadata startup-script="#! /bin/bash
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-anthro-env
cd ~/py-anthro-env
python3 -m venv env
source env/bin/activate
pip install -U ipython google-cloud-aiplatform 'anthropic[vertex]'"
אמור להופיע מכונה וירטואלית שנוצרה ללא כתובות IP ציבוריות. עכשיו נגדיר את
6. משימה 4: הגדרה ובדיקה של מכונה וירטואלית
- עוברים אל מכונות ה-VM. בוחרים את המכונה הווירטואלית שמתחילה ב-anthro-vm. בוחרים באפשרות SSH.
- אחרי שמתחברים ל-anthro-vm באמצעות SSH,מפעילים את root על ידי הקלדה של
sudo -i
. - מפעילים את סביבת venv:
cd py-anthro-env
source env/bin/activate
- עכשיו נבצע אימות כדי שנוכל לבצע בדיקות בהמשך. מריצים את הפקודה הבאה במכונה הווירטואלית ומקישים על y כשמופיעה בקשה.
gcloud auth application-default login
- לאחר מכן מעתיקים את כתובת ה-URL שמתחילה ב-https://, פותחים כרטיסייה חדשה בחלון הדפדפן של המעבדה ומדביקים את כתובת ה-URL. מאשרים את ההנחיות.
- כשמוצגת ההודעה הבאה, בוחרים באפשרות 'העתקה', חוזרים לסשן ה-VM anthro-vm ובשדה Enter authorization code מדביקים את הקוד שהעתקתם ולוחצים על Enter כדי לבצע אימות.
- עכשיו נבצע בדיקה מהירה כדי לראות אם אנחנו יכולים להתחבר ל-Vertex Gemini API. לשם כך, נשתמש בכתובת us-east5-aiplatform.googleapis.com, ונבצע
dig
לכתובת הזו כדי לראות איך התנועה מנותבת.
dig us-east5-aiplatform.googleapis.com
- אמורה להופיע הודעה דומה (הכתובת תהיה שונה). שימו לב שהנתיב עובר דרך כתובות IP ציבוריות כי ה-API הוא ממשק API ציבורי.
; <<>> DiG 9.16.48-Debian <<>> us-east5-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-east5-aiplatform.googleapis.com. IN A
;; ANSWER SECTION:
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.210.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.211.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.212.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.213.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.215.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.216.95
us-east5-aiplatform.googleapis.com. 300 IN A 108.177.12.95
us-east5-aiplatform.googleapis.com. 300 IN A 108.177.13.95
us-east5-aiplatform.googleapis.com. 300 IN A 74.125.26.95
- עכשיו נשתמש ב-Python. מקלידים
ipython
כדי להפעיל את הממשק ipython.
ipython
- עכשיו מעתיקים ומדביקים את הטקסט הבא. כך תוכלו לשאול את קלוד "איפה יתקיימו האולימפיאדה ב-2024?" . הערה: מחליפים את
YOUR-Project-ID-Here
בשם של מזהה הפרויקט
from anthropic import AnthropicVertex
project_id = "YOUR-Project-ID-Here"
region = "us-east5"
client = AnthropicVertex(project_id=project_id, region=region)
message = client.messages.create(
model="claude-3-5-sonnet@20240620",
max_tokens=100,
messages=[
{
"role": "user",
"content": "Where is the olympics being held in 2024!",
}
],
)
print(message)
- מקישים על Enter כדי להריץ את הפקודה ולראות את התוצאה.
- הבקשה הזו ניגשה ל-Anthropic דרך ה-API הציבורי של Vertex.
- סוגרים את סשן ה-SSH וממשיכים.
7. משימה 5: יצירת נקודת הקצה (endpoint) של PSC ל-googleapis
כדי לאפשר קישוריות פרטית לנקודת הקצה של Vertex API, נוצר נקודת קצה של Private Service Connect עבור googleapis. כך נוכל להשתמש בכתובת IP פרטית שתוקצה לנו כדי לנתב את התנועה אל googleapis שאנחנו צריכים, במקרה הזה Vertex Gemini.
- פותחים את Cloud Shell אם הוא עדיין לא פתוח. יוצרים כתובת IP לנקודת הקצה של PSC. במקרה הזה נשתמש בכתובת 192.168.255.230.
gcloud compute addresses create anthro-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=192.168.255.230 \
--network=$networkid
- אימות כתובת ה-IP שנוצרה
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
- בשלב הבא יוצרים את נקודת הקצה של PSC
gcloud compute forwarding-rules create pscanthrovertex \
--global \
--network=$networkid \
--address=anthro-ip \
--target-google-apis-bundle=all-apis
- הפעולה הזו תיצור נקודת קצה ורשומות בספריית השירותים. אימות קיומה של נקודת קצה
gcloud compute forwarding-rules describe pscanthrovertex --global
8. משימה 6: אימות הקישוריות של נקודת קצה באמצעות תחום אוטומטי של ספריית שירותים
נשתמש בנקודת הקצה הפרטית כדי להתחבר ל-Gemini.
- עוברים למכונה הווירטואלית anthro-vm1. בחירת SSH והתחברות ל-VM באמצעות SSH
- כדי לקבל הרשאת root, מקלידים
sudo -i
- בודקים את נתיב הקישוריות אל aiplatform-pscanthrovertex.p.googleapis.com באמצעות הפקודה
dig
. כתובת ה-IP של נקודת הקצה של PSC אמורה להופיע
dig aiplatform-pscanthrovertex.p.googleapis.com
9. משימה 7: יצירת רשומת DNS ידנית ל-googleapis (אופציונלי)
אפשר ליצור רשומת DNS ידנית שמפנה לנקודת הקצה של PSC באמצעות DNS פרטי. השינוי הזה ישפיע על כל הערוצים שתקציבו אליו.
- עוברים אל 'שירותי רשת' ובוחרים ב-Cloud DNS.
- בתצוגת האזורים אמור להופיע אזור שנוצר באופן אוטומטי עבור Private Service Connect ל-Google APIs, עם ספריית שירותים מסוג אזור. אפשר להשתמש בו כדי להתחבר לנקודת הקצה (endpoint) של PSC בפורמט **SERVICE-ENDPOINT.p.googleapis.com דוגמה
aiplatform-pscvertexgemini.p.googleapis.com
- במקרה הזה, אנחנו רוצים ליצור באופן ידני רשומה של DNS פרטי. עוברים אל Cloud DNS ובוחרים באפשרות Create Zone (יצירת תחום).
- מגדירים את ההגדרות הבאות
הגדרה | שם |
סוג האזור | פרטי |
שם האזור | googleapis-private |
שם DNS | googleapis.com |
הוספת ערוצים או חבילות (לוחצים על סיום כשמסיימים) | anthropic-net |
כדי להשלים את הבחירה | יצירה |
- בקטע Zone details (פרטי האזור), בוחרים באפשרות Add standard (הוספת רשומה רגילה) כדי להוסיף A record (רשומת A).
הגדרה | שם |
סוג רשומת המשאבים | A |
כתובת IPv4 (מוסיפים את כתובת ה-IP של נקודת הקצה) | 192.168.255.230 |
כדי להשלים את הבחירה | יצירה |
- בקטע פרטי הדומיין, בוחרים באפשרות הוספת רשומה רגילה כדי להוסיף רשומת CNAME.
הגדרה | שם |
שם DNS | * |
סוג משאב הרשומה | CNAME |
השם הרשמי 1 | googleapis.com |
כדי להשלים את הבחירה | יצירה |
- אמור להופיע הגדרה עם רשומת A ו-CNAME, כמו בדוגמה הבאה:
- בשלב הבא אנחנו מאמתים את הקישוריות עם השינויים האלה ב-anthro-vm.
10. משימה 8: אימות הקישוריות של נקודת הקצה באמצעות כתובת IP (אופציונלי)
נשתמש בנקודת הקצה הפרטית כדי להתחבר ל-Gemini.
- עוברים למכונה הווירטואלית anthro-vm. בחירת SSH והתחברות ל-VM באמצעות SSH
- כדי לקבל הרשאת root, מקלידים
sudo -i
- בודקים את נתיב הקישוריות אל us-east5-aiplatform.googleapis.com באמצעות הפקודה
ping
. הפקודה הזו תשלח הודעה ל-ping לכתובת ה-IP ב-DNS הפרטי, רשומת A של googleapis. כתובת ה-IP הזו היא נקודת קצה של PSC והפינגים שלכם לא יצליחו.
ping -c 2 us-east5-aiplatform.googleapis.com
- בודקים את נתיב הקישוריות באמצעות
ping
באמצעות רשומת ה-DNS שנוצרה באופן אוטומטי עבור ממשקי Google API של PSC באמצעותaiplatform-pscanthrovertex.p.googleapis.com
. הכתובת הזו מפנה לכתובת ה-IP של נקודת הקצה של PSC, והפינגים לא יצליחו.
ping -c 2 aiplatform-pscanthrovertex.p.googleapis.com
- בודקים את נתיב הקישוריות אל us-east5-aiplatform.googleapis.com באמצעות הפקודה
dig
. זו צריכה להיות כתובת ה-IP של נקודת הקצה של PSC.
dig us-east5-aiplatform.googleapis.com
- חוזרים למסוף ופותחים מכונה וירטואלית נוספת של anthro-vm. בוחרים באפשרות SSH ומתחברים למכונה הווירטואלית באמצעות SSH.
- כדי לקבל הרשאת root, מקלידים
sudo -i
- מריצים את הפקודה הבאה כדי לראות את הקישוריות ב-dump של TCP
sudo tcpdump -i any port 53 -n or host us-east5-aiplatform.googleapis.com
- עכשיו חוזרים למכונה הווירטואלית anthro-vm.
- מפעילים את הסביבה באמצעות
cd py-gem-env
source env/bin/activate
- עכשיו נבדוק את Python. מקלידים
ipython
כדי להפעיל את הממשק ipython.
ipython
- עכשיו מעתיקים ומדביקים את הטקסט הבא. כך תוכלו לשאול את קלוד "What is a roti?". הערה: מחליפים את
YOUR-Project-ID-Here
בשם של מזהה הפרויקט
from anthropic import AnthropicVertex
project_id = "YOUR-Project-ID-Here"
region = "us-east5"
client = AnthropicVertex(project_id=project_id, region=region)
message = client.messages.create(
model="claude-3-5-sonnet@20240620",
max_tokens=100,
messages=[
{
"role": "user",
"content": "What is a roti?",
}
],
)
print(message)
- מקישים על enter כדי להריץ את הפקודה ולראות את התוצאה.
- חוזרים למופע השני של מכונת ה-VM anthro-vm. אמורה להופיע תוצאת ה-TCPDUMP. תוכלו לראות את הבקשות הנכנסות והיוצאות, וכתובת ה-IP של המכונה הווירטואלית משתמשת בכתובת ה-IP של נקודת הקצה של PSC כדי להתחבר אל us-east5-aiplatform.googleapis.com
סגירת כל סשני ה-SSH למכונה הווירטואלית anthro-vm
11. מזל טוב
מזל טוב, הצלחתם להתחבר ל-Anthropic ב-Vertex באמצעות כתובת API ציבורית וגם באופן פרטי באמצעות נקודת קצה (endpoint) של Private Service Connect ל-Googleapis. הפונקציונליות הזו מאפשרת להרחיב את קישוריות ה-API הפרטי לסביבה המקומית או לסביבת ענן אחרת שמחוברות באמצעות (Interconnect, Cross-Cloud Interconnect ו-VPC).
הסרת המשאבים
gcloud compute instances delete anthro-vm --zone=us-east1-b --quiet
gcloud compute routers nats delete anthro-out-nat-gw --router=anthro-out-nat --region=us-east1 --quiet
gcloud compute routers delete anthro-out-nat --region=us-east1 --quiet
gcloud compute firewall-rules delete anthropic-net-allow-icmp anthropic-net-allow-ssh --quiet
gcloud compute forwarding-rules delete pscanthrovertex --global
gcloud dns record-sets delete googleapis.com. --zone googleapis-private --type A
gcloud dns record-sets delete *.googleapis.com --zone googleapis-private --type CNAME
gcloud dns managed-zones delete googleapis-private
gcloud compute addresses delete anthro-ip --global
gcloud compute networks subnets delete vm-subnet --region=us-east1 --quiet
gcloud compute networks delete anthropic-net --quiet
מידע נוסף על ניתוב ב-Vertex AI