גישה ל-Anthropic Claude ב-Vertex AI באמצעות ערכת SDK ל-Python דרך נקודת קצה של Private Service Connect

1. סקירה כללית

אפשר לגשת ל-Vertex AI API דרך האינטרנט, אבל יכול להיות שבארגון שלכם תרצו לגשת ל-Vertex AI API באופן פרטי בלי לעבור דרך האינטרנט. במעבדה הזו תבצעו את הגישה הראשונה ל-Anthropic Claude ב-Vertex דרך Python SDK שפועל במכונה וירטואלית דרך האינטרנט הציבורי.

לאחר מכן תיצרו נקודת קצה של Private Service Connect ל-Googleapis, ותשנו את זרימת התנועה כך שתשתמש בנקודת הקצה הפרטית כדי להתחבר ל-Vertex API.

בשיעור ה-Lab הזה תלמדו ליצור את התבנית הבאה.

איור 1.

103967918b096e97.png

2. מטרות

בשיעור ה-Lab הזה תלמדו איך לבצע את המשימה הבאה:

  • הגדרת מכונה וירטואלית לשימוש ב-Python SDK
  • חיבור לצ'אט של Anthropic Claude באמצעות סקריפט Python
  • הגדרת נקודת קצה של PSC כדי להתחבר ל-Googleapis
  • הגדרת רשומות DNS ידניות
  • אימות נתיב הקישוריות אל Googleais

הגדרת מעבדה

הגדרת סביבה בקצב אישי

  1. נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • שם הפרויקט הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד תוכלו לעדכן אותו.
  • מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שמגדירים אותו. מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור PROJECT_ID). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות כתובת משלכם ולבדוק אם היא זמינה. לא ניתן לשנות את השם אחרי השלב הזה, והוא יישאר למשך כל פרק הזמן של הפרויקט.
  • לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי העזרה.
  1. בשלב הבא, כדי להשתמש במשאבים או ב-API של Cloud, תצטרכו להפעיל את החיוב במסוף Cloud. השלמת הקודלאב הזה לא תעלה הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.

הפעלת Cloud Shell

אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.

במסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

55efc1aaa7a4d3ad.png

תהליך ההקצאה והחיבור לסביבת העבודה אמור להימשך רק כמה רגעים. בסיום, אמור להופיע משהו כזה:

7ffe5cbb04455448.png

המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, משפרת מאוד את ביצועי הרשת ואת האימות. אתם יכולים לבצע את כל העבודה בקודלאב הזה בדפדפן. אין צורך להתקין שום דבר.

3. משימה 1: הגדרת הסביבה

ניצור VPC בהתאמה אישית עם כללי חומת אש. אם כבר יש לכם VPC ופרויקט, אתם יכולים לדלג על הקטע הזה.

פותחים את Cloud Shell שנמצא בחלק העליון של המסוף, בצד שמאל. ומגדירים את ההגדרות הבאות: 4261e776f64ea978.png

  1. הפעלה של חלק מה-API שנעשה בהם שימוש בשיעור ה-Lab הזה
gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable servicedirectory.googleapis.com
  1. מגדירים כמה משתנים. המשתנים האלה הם מזהה הפרויקט ומזהה הרשת של ה-VPC בהתאמה אישית (יוצרים את ה-VPC בשלב 4).
projectid=$(gcloud config get-value project)
networkid=anthropic-net 
echo $projectid
echo $networkid
clear
  1. עכשיו יוצרים רשת VPC בהתאמה אישית בשם anthropic-net.
gcloud compute networks create $networkid \
--project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
  1. יוצרים את תת-הרשת 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
  1. הוספת כלל של חומת אש מסוג 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
  1. הוספת כלל של חומת אש ל-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 ומצרפים אותו.

  1. עוברים אל Vertex AI ובוחרים באפשרות Model Garden.
  2. מחפשים את Anthropic ובוחרים באפשרות Claude 3.5 Sonnet.

4fd4338c598983d8.png

  1. בוחרים באפשרות Enable (הפעלה). תתבקשו למלא פרטים מסוימים. ממלאים את הטופס ובוחרים באפשרות Next (הבא).
  2. בדף האחרון, בוחרים באפשרות אישור כדי להפעיל את Claude 3.5 Sonnet b3961312feb6c383.png

5. משימה 3: יצירת שער NAT ומכונות וירטואליות

אנחנו צריכים להעניק גישה חיצונית יוצאת לאינטרנט, לכן נוצר שער Cloud NAT ומצרפים אותו.

ב-Cloud Shell, משתמשים בפקודות הבאות

  1. יוצרים את Cloud NAT.
gcloud compute routers create anthro-out-nat \
    --network $networkid \
    --region us-east1 
  1. יוצרים את השער של 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.

אנחנו הולכים ליצור מכונה וירטואלית לבדיקה עם החבילות הבאות מותקנות

  1. באותו סשן של 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: הגדרה ובדיקה של מכונה וירטואלית

  1. עוברים אל מכונות ה-VM. בוחרים את המכונה הווירטואלית שמתחילה ב-anthro-vm. בוחרים באפשרות SSH.
  2. אחרי שמתחברים ל-anthro-vm באמצעות SSH,מפעילים את root על ידי הקלדה של sudo -i.
  3. מפעילים את סביבת venv:
cd py-anthro-env
source env/bin/activate
  1. עכשיו נבצע אימות כדי שנוכל לבצע בדיקות בהמשך. מריצים את הפקודה הבאה במכונה הווירטואלית ומקישים על y כשמופיעה בקשה.
gcloud auth application-default login
  1. לאחר מכן מעתיקים את כתובת ה-URL שמתחילה ב-https://, פותחים כרטיסייה חדשה בחלון הדפדפן של המעבדה ומדביקים את כתובת ה-URL. מאשרים את ההנחיות.
  2. כשמוצגת ההודעה הבאה, בוחרים באפשרות 'העתקה', חוזרים לסשן ה-VM‏ anthro-vm ובשדה Enter authorization code מדביקים את הקוד שהעתקתם ולוחצים על Enter כדי לבצע אימות.

c29615cdf9324209.png

  1. עכשיו נבצע בדיקה מהירה כדי לראות אם אנחנו יכולים להתחבר ל-Vertex Gemini API. לשם כך, נשתמש בכתובת us-east5-aiplatform.googleapis.com, ונבצע dig לכתובת הזו כדי לראות איך התנועה מנותבת.
dig us-east5-aiplatform.googleapis.com
  1. אמורה להופיע הודעה דומה (הכתובת תהיה שונה). שימו לב שהנתיב עובר דרך כתובות 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
  1. עכשיו נשתמש ב-Python. מקלידים ipython כדי להפעיל את הממשק ipython.
ipython

4685b31f13df54e1.png

  1. עכשיו מעתיקים ומדביקים את הטקסט הבא. כך תוכלו לשאול את קלוד "איפה יתקיימו האולימפיאדה ב-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)
  1. מקישים על Enter כדי להריץ את הפקודה ולראות את התוצאה.
  2. הבקשה הזו ניגשה ל-Anthropic דרך ה-API הציבורי של Vertex.
  3. סוגרים את סשן ה-SSH וממשיכים.

7. משימה 5: יצירת נקודת הקצה (endpoint) של PSC ל-googleapis

כדי לאפשר קישוריות פרטית לנקודת הקצה של Vertex API, נוצר נקודת קצה של Private Service Connect עבור googleapis. כך נוכל להשתמש בכתובת IP פרטית שתוקצה לנו כדי לנתב את התנועה אל googleapis שאנחנו צריכים, במקרה הזה Vertex Gemini.

  1. פותחים את 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
  1. אימות כתובת ה-IP שנוצרה
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
  1. בשלב הבא יוצרים את נקודת הקצה של PSC
gcloud compute forwarding-rules create pscanthrovertex \
    --global \
    --network=$networkid \
    --address=anthro-ip \
    --target-google-apis-bundle=all-apis
  1. הפעולה הזו תיצור נקודת קצה ורשומות בספריית השירותים. אימות קיומה של נקודת קצה
gcloud compute forwarding-rules describe pscanthrovertex --global

8. משימה 6: אימות הקישוריות של נקודת קצה באמצעות תחום אוטומטי של ספריית שירותים

נשתמש בנקודת הקצה הפרטית כדי להתחבר ל-Gemini.

  1. עוברים למכונה הווירטואלית anthro-vm1. בחירת SSH והתחברות ל-VM באמצעות SSH
  2. כדי לקבל הרשאת root, מקלידים sudo -i
  3. בודקים את נתיב הקישוריות אל aiplatform-pscanthrovertex.p.googleapis.com באמצעות הפקודה dig. כתובת ה-IP של נקודת הקצה של PSC אמורה להופיע
dig aiplatform-pscanthrovertex.p.googleapis.com

9. משימה 7: יצירת רשומת DNS ידנית ל-googleapis (אופציונלי)

אפשר ליצור רשומת DNS ידנית שמפנה לנקודת הקצה של PSC באמצעות DNS פרטי. השינוי הזה ישפיע על כל הערוצים שתקציבו אליו.

  1. עוברים אל 'שירותי רשת' ובוחרים ב-Cloud DNS.
  2. בתצוגת האזורים אמור להופיע אזור שנוצר באופן אוטומטי עבור Private Service Connect ל-Google APIs, עם ספריית שירותים מסוג אזור. אפשר להשתמש בו כדי להתחבר לנקודת הקצה (endpoint) של PSC בפורמט **SERVICE-ENDPOINT.p.googleapis.com דוגמה aiplatform-pscvertexgemini.p.googleapis.com
  3. במקרה הזה, אנחנו רוצים ליצור באופן ידני רשומה של DNS פרטי. עוברים אל Cloud DNS ובוחרים באפשרות Create Zone (יצירת תחום).
  4. מגדירים את ההגדרות הבאות

הגדרה

שם

סוג האזור

פרטי

שם האזור

googleapis-private

שם DNS

googleapis.com

הוספת ערוצים או חבילות (לוחצים על סיום כשמסיימים)

anthropic-net

כדי להשלים את הבחירה

יצירה

  1. בקטע Zone details (פרטי האזור), בוחרים באפשרות Add standard (הוספת רשומה רגילה) כדי להוסיף A record (רשומת A).

הגדרה

שם

סוג רשומת המשאבים

A

כתובת IPv4 (מוסיפים את כתובת ה-IP של נקודת הקצה)

192.168.255.230

כדי להשלים את הבחירה

יצירה

  1. בקטע פרטי הדומיין, בוחרים באפשרות הוספת רשומה רגילה כדי להוסיף רשומת CNAME.

הגדרה

שם

שם DNS

*

סוג משאב הרשומה

CNAME

השם הרשמי 1

googleapis.com

כדי להשלים את הבחירה

יצירה

  1. אמור להופיע הגדרה עם רשומת A ו-CNAME, כמו בדוגמה הבאה: b7f122f0d1fd2850.png
  2. בשלב הבא אנחנו מאמתים את הקישוריות עם השינויים האלה ב-anthro-vm.

10. משימה 8: אימות הקישוריות של נקודת הקצה באמצעות כתובת IP (אופציונלי)

נשתמש בנקודת הקצה הפרטית כדי להתחבר ל-Gemini.

  1. עוברים למכונה הווירטואלית anthro-vm. בחירת SSH והתחברות ל-VM באמצעות SSH
  2. כדי לקבל הרשאת root, מקלידים sudo -i
  3. בודקים את נתיב הקישוריות אל us-east5-aiplatform.googleapis.com באמצעות הפקודה ping. הפקודה הזו תשלח הודעה ל-ping לכתובת ה-IP ב-DNS הפרטי, רשומת A של googleapis. כתובת ה-IP הזו היא נקודת קצה של PSC והפינגים שלכם לא יצליחו.
ping -c 2 us-east5-aiplatform.googleapis.com
  1. בודקים את נתיב הקישוריות באמצעות ping באמצעות רשומת ה-DNS שנוצרה באופן אוטומטי עבור ממשקי Google API של PSC באמצעות aiplatform-pscanthrovertex.p.googleapis.com. הכתובת הזו מפנה לכתובת ה-IP של נקודת הקצה של PSC, והפינגים לא יצליחו.
ping -c 2 aiplatform-pscanthrovertex.p.googleapis.com
  1. בודקים את נתיב הקישוריות אל us-east5-aiplatform.googleapis.com באמצעות הפקודה dig. זו צריכה להיות כתובת ה-IP של נקודת הקצה של PSC.
dig us-east5-aiplatform.googleapis.com
  1. חוזרים למסוף ופותחים מכונה וירטואלית נוספת של anthro-vm. בוחרים באפשרות SSH ומתחברים למכונה הווירטואלית באמצעות SSH.
  2. כדי לקבל הרשאת root, מקלידים sudo -i
  3. מריצים את הפקודה הבאה כדי לראות את הקישוריות ב-dump של TCP
sudo tcpdump -i any port 53 -n or host us-east5-aiplatform.googleapis.com
  1. עכשיו חוזרים למכונה הווירטואלית anthro-vm.
  2. מפעילים את הסביבה באמצעות
cd py-gem-env
source env/bin/activate
  1. עכשיו נבדוק את Python. מקלידים ipython כדי להפעיל את הממשק ipython.
ipython
  1. עכשיו מעתיקים ומדביקים את הטקסט הבא. כך תוכלו לשאול את קלוד "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)
  1. מקישים על enter כדי להריץ את הפקודה ולראות את התוצאה.
  2. חוזרים למופע השני של מכונת ה-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