1. खास जानकारी
Vertex AI API को इंटरनेट से ऐक्सेस किया जा सकता है. हालांकि, हो सकता है कि आप अपने एंटरप्राइज़ में, इंटरनेट का इस्तेमाल किए बिना Vertex AI API को निजी तौर पर ऐक्सेस करना चाहें. इस लैब में, आपको सबसे पहले सार्वजनिक इंटरनेट के ज़रिए किसी वीएम इंस्टेंस पर चल रहे Python SDK की मदद से, Vertex पर Anthropic Claude को ऐक्सेस करना होगा.
इसके बाद, आपको Googleapis के लिए Private Service Connect एंडपॉइंट बनाना होगा. साथ ही, Vertex API से कनेक्ट करने के लिए, निजी एंडपॉइंट का इस्तेमाल करने के मकसद से ट्रैफ़िक फ़्लो में बदलाव करना होगा.
इस लैब में, आपको यह पैटर्न बनाना है.
पहला चित्र.
2. मकसद
इस लैब में, आपको यह काम करने का तरीका पता चलेगा:
- Python SDK का इस्तेमाल करने के लिए, VM इंस्टेंस सेट अप करना
- Python स्क्रिप्ट की मदद से, Anthropic Claude चैट से कनेक्ट करना
- Googleapis से कनेक्ट करने के लिए, PSC एंडपॉइंट कॉन्फ़िगर करना
- मैन्युअल डीएनएस एंट्री कॉन्फ़िगर करना
- Googleais के लिए कनेक्टिविटी पाथ की पुष्टि करना
लैब सेटअप करना
अपने हिसाब से एनवायरमेंट सेट अप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.
- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, अपने-आप एक यूनीक स्ट्रिंग जनरेट करता है. आम तौर पर, आपको यह जानने की ज़रूरत नहीं होती कि यह स्ट्रिंग क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे
PROJECT_ID
के तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं आता है, तो कोई दूसरा आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास खुद का कोई दूसरा नाम चुनने का विकल्प भी है. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट के दौरान बना रहता है. - आपकी जानकारी के लिए बता दें कि तीसरी वैल्यू, प्रोजेक्ट नंबर होती है. इसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
- इसके बाद, आपको Cloud के संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब को चलाने के लिए, आपसे कोई शुल्क नहीं लिया जाएगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, बनाए गए संसाधनों को बंद किया जा सकता है या प्रोजेक्ट को मिटाया जा सकता है. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले कार्यक्रम में शामिल हो सकते हैं.
Cloud Shell शुरू करना
Google Cloud को आपके लैपटॉप से रिमोट तौर पर इस्तेमाल किया जा सकता है. हालांकि, इस कोडलैब में आपको Google Cloud Shell का इस्तेमाल करना होगा. यह Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है.
Google Cloud Console में, सबसे ऊपर दाएं टूलबार में मौजूद Cloud Shell आइकॉन पर क्लिक करें:
एनवायरमेंट से कनेक्ट होने और उसे प्रोवाइड करने में सिर्फ़ कुछ मिनट लगेंगे. इसके पूरा होने पर, आपको कुछ ऐसा दिखेगा:
इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल लोड होते हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. यह Google Cloud पर चलता है, जिससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की सुविधा बेहतर होती है. इस कोडलैब में, सारा काम ब्राउज़र में किया जा सकता है. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.
3. पहला टास्क. एनवायरमेंट सेटअप करना
हम फ़ायरवॉल नियमों के साथ कस्टम वीपीसी बनाएंगे. अगर आपके पास पहले से ही VPC और प्रोजेक्ट है, तो इस चरण को छोड़ा जा सकता है.
अपने कंसोल में सबसे ऊपर दाईं ओर मौजूद, Cloud Shell खोलें. और इस तरह कॉन्फ़िगर करें:
- कुछ ऐसे एपीआई चालू करना जिनका इस्तेमाल हम इस लैब में करेंगे
gcloud services enable dns.googleapis.com gcloud services enable aiplatform.googleapis.com gcloud services enable servicedirectory.googleapis.com
- कुछ वैरिएबल सेट करें. ये वैरिएबल, कस्टम VPC के प्रोजेक्ट आईडी और नेटवर्क आईडी होते हैं. चौथे चरण में, आपको VPC बनाना होगा.
projectid=$(gcloud config get-value project) networkid=anthropic-net echo $projectid echo $networkid clear
- अब anthropic-net नाम का कस्टम VPC बनाएं.
gcloud compute networks create $networkid \ --project=$projectid \ --subnet-mode=custom \ --mtu=1460 \ --bgp-routing-mode=global
- नए वीपीसी में vm1-सबनेट बनाना
gcloud compute networks subnets create vm-subnet \ --project=$projectid --range=10.0.88.0/24 \ --stack-type=IPV4_ONLY --network=$networkid \ --region=us-east1
- अपने VPC में ICMP फ़ायरवॉल नियम जोड़ना
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
- अपने 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. दूसरा टास्क. Vertex मॉडल गार्डन में Anthropic को चालू करना
हमें इंटरनेट को आउटबाउंड एक्सेस देना होगा. इसलिए, Cloud NAT गेटवे बनाएं और उसे अटैच करें.
- Vertex AI पर जाएं और Model Garden चुनें
- Anthropic खोजें और Claude 3.5 Sonnet चुनें
- चालू करें को चुनें. इसके बाद, आपको कुछ जानकारी भरनी होगी. फ़ॉर्म भरने के बाद, आगे बढ़ें को चुनें
- Claude 3.5 Sonnet
को चालू करने के लिए, आखिरी पेज पर सहमति दें को चुनें
5. तीसरा टास्क. एनएटी गेटवे और वीएम बनाना
हमें इंटरनेट को आउटबाउंड एक्सेस देना होगा. इसलिए, Cloud NAT गेटवे बनाएं और उसे अटैच करें.
Cloud Shell में, इन कमांड का इस्तेमाल करें
- क्लाउड एनएटी बनाएं.
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
अब Python SDK टूल की मदद से, Vertex AI पर Anthropic को ऐक्सेस करने के लिए एक VM बनाएं.
हम यहां दिए गए पैकेज इंस्टॉल करके, टेस्ट करने के लिए एक वर्चुअल मशीन बनाएंगे
- उसी क्लाउड शेल सेशन में, नीचे दिए गए निर्देशों का इस्तेमाल करके 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]'"
आपको ऐसा वीएम दिखेगा जिसमें कोई सार्वजनिक आईपी पता नहीं होगा. अब वीएम को कॉन्फ़िगर करते हैं
6. चौथा टास्क. वीएम कॉन्फ़िगर करना और टेस्ट करना
- वीएम इंस्टेंस पर जाएं. anthro-vm से शुरू होने वाला वर्चुअल मशीन चुनें. एसएसएच चुनें.
- anthro-vm में एसएसएच करने के बाद,
sudo -i
टाइप करके रूट को चालू करें - अपना venv एनवायरमेंट चालू करें:
cd py-anthro-env
source env/bin/activate
- अब आइए, बाद में कुछ टेस्ट करने के लिए इसकी पुष्टि करें. VM में यह कमांड चलाएं. इसके बाद, जब कहा जाए, तब y दबाएं.
gcloud auth application-default login
- इसके बाद, https:// से शुरू होने वाला यूआरएल कॉपी करें. इसके बाद, अपनी लैब ब्राउज़र विंडो में एक नया टैब खोलें और यूआरएल चिपकाएं. दिए गए निर्देशों का पालन करें.
- जब आपको यहां दिया गया चुनें कॉपी विकल्प दिखे, तो vm anthro-vm सेशन पर वापस जाएं. इसके बाद, ऑथराइज़ेशन कोड डालें: के लिए, कॉपी किया गया कोड चिपकाएं और पुष्टि करने के लिए Enter दबाएं.
- अब एक छोटा सा टेस्ट करके देखें कि क्या हम Vertex Gemini API से कनेक्ट हो सकते हैं. यह us-east5-aiplatform.googleapis.com का इस्तेमाल करता है. इसलिए, हम उस पते पर
dig
करेंगे, ताकि यह देखा जा सके कि ट्रैफ़िक कैसे रूट होता है.
dig us-east5-aiplatform.googleapis.com
- आपको कुछ ऐसा दिखेगा (पता अलग होगा). ध्यान दें कि यह पाथ, सार्वजनिक आईपी पतों से होकर जाता है, क्योंकि एपीआई एक सार्वजनिक एपीआई है.
; <<>> 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 कहां होगा!" . p.s.
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 दबाएं.
- इस अनुरोध ने Vertex के सार्वजनिक एपीआई के ज़रिए Anthropic को ऐक्सेस किया.
- SSH सेशन बंद करें और आगे बढ़ें.
7. पांचवां टास्क. googleapis के लिए PSC एंडपॉइंट बनाना
अपने Vertex API एंडपॉइंट से निजी तौर पर कनेक्ट करने की सुविधा चालू करने के लिए, हम googleapis के लिए Private Service Connect एंडपॉइंट बनाएंगे. इससे हमें एक निजी आईपी पते का इस्तेमाल करने की अनुमति मिलेगी. हम इस पते को, ज़रूरत के हिसाब से googleapis को ट्रैफ़िक भेजने के लिए असाइन करते हैं. इस मामले में, Vertex Gemini को ट्रैफ़िक भेजने के लिए.
- अगर Cloud Shell पहले से नहीं खुला है, तो उसे खोलें. पीएससी एंडपॉइंट के लिए आईपी बनाएं. इस मामले में, हम 192.168.255.230 का इस्तेमाल करेंगे.
gcloud compute addresses create anthro-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=192.168.255.230 \
--network=$networkid
- बनाए गए आईपी की पुष्टि करना
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
- इसके बाद, पीएससी एंडपॉइंट बनाएं
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. छठा टास्क. अपने-आप काम करने वाली सेवा डायरेक्ट्री ज़ोन की मदद से, एंडपॉइंट की कनेक्टिविटी की पुष्टि करना
Gemini से कनेक्ट करने के लिए, निजी एंडपॉइंट का इस्तेमाल करके कनेक्ट करें.
- वीएम इंस्टेंस anthro-vm1 पर जाएं. एसएसएच चुनें और वीएम में एसएसएच का इस्तेमाल करें
sudo -i
टाइप करके रूट ऐक्सेस पाएंdig
कमांड का इस्तेमाल करके, aiplatform-pscanthrovertex.p.googleapis.com के लिए कनेक्टिविटी पाथ देखें. आपको PSC एंडपॉइंट का आईपी दिखेगा
dig aiplatform-pscanthrovertex.p.googleapis.com
9. सातवां टास्क. googleapis के लिए मैन्युअल डीएनएस एंट्री बनाएं (ज़रूरी नहीं)
निजी डीएनएस का इस्तेमाल करके, पीएससी एंडपॉइंट पर ले जाने के लिए, मैन्युअल डीएनएस एंट्री बनाई जा सकती है. इससे, उस खाते से असाइन किए गए सभी नेटवर्क पर असर पड़ेगा.
- नेटवर्क सेवाओं पर जाएं और Cloud DNS चुनें.
- आपको ज़ोन में, Google API के लिए Private Service Connect के लिए अपने-आप बना ज़ोन दिखेगा. इसमें ज़ोन टाइप की सेवा डायरेक्ट्री भी होगी. इसका इस्तेमाल, **SERVICE-ENDPOINT फ़ॉर्मैट वाले PSC एंडपॉइंट से कनेक्ट करने के लिए किया जा सकता है.p.googleapis.com उदाहरण
aiplatform-pscvertexgemini.p.googleapis.com
- इस मामले में, हमें मैन्युअल रूप से निजी डीएनएस एंट्री बनानी है. Cloud DNS पर जाएं और ज़ोन बनाएं को चुनें
- इस तरह से कॉन्फ़िगर करें
कॉन्फ़िगरेशन | नाम |
ज़ोन का टाइप | निजी |
ज़ोन का नाम | googleapis-private |
डीएनएस नेम | googleapis.com |
नेटवर्क जोड़ें (जोड़ने के बाद, 'हो गया' को चुनें) | anthropic-net |
चुनने की प्रोसेस पूरी करने के लिए | बनाएं |
- A रिकॉर्ड जोड़ने के लिए, ज़ोन की जानकारी वाले सेक्शन में स्टैंडर्ड जोड़ें को चुनें
कॉन्फ़िगरेशन | नाम |
संसाधन रिकॉर्ड का टाइप | A |
IPv4 पता (एंडपॉइंट का आईपी पता जोड़ें) | 192.168.255.230 |
चुनने की प्रोसेस पूरी करने के लिए | बनाएं |
- ज़ोन की जानकारी सेक्शन में, CNAME रिकॉर्ड जोड़ने के लिए स्टैंडर्ड जोड़ें चुनें
कॉन्फ़िगरेशन | नाम |
डीएनएस नेम | * |
रिकॉर्ड का टाइप | CNAME |
कैननिकल नाम 1 | googleapis.com |
चुनने की प्रोसेस पूरी करने के लिए | बनाएं |
- आपको A रिकॉर्ड और CNAME वाला सेट अप दिखेगा. यह सेट अप कुछ ऐसा दिखेगा
देखें
- इसके बाद, हम anthro-vm पर इन बदलावों के साथ कनेक्टिविटी की पुष्टि करते हैं
10. आठवां टास्क. आईपी पते की मदद से, एंडपॉइंट की कनेक्टिविटी की पुष्टि करना (ज़रूरी नहीं)
Gemini से कनेक्ट करने के लिए, निजी एंडपॉइंट का इस्तेमाल करके कनेक्ट करें.
- वीएम इंस्टेंस anthro-vm पर जाएं. एसएसएच चुनें और वीएम में एसएसएच का इस्तेमाल करें
sudo -i
टाइप करके रूट ऐक्सेस पाएंping
कमांड का इस्तेमाल करके, us-east5-aiplatform.googleapis.com के लिए कनेक्टिविटी पाथ देखें. इससे googleapis के निजी डीएनएस, A रिकॉर्ड में मौजूद आईपी पते को पिंग किया जाएगा. यह आईपी, पीएससी का एंडपॉइंट है और आपके पिंग काम नहीं करेंगे.
ping -c 2 us-east5-aiplatform.googleapis.com
aiplatform-pscanthrovertex.p.googleapis.com
के साथ पीएससी Google API के लिए अपने-आप जनरेट हुई डीएनएस एंट्री का इस्तेमाल करके,ping
के साथ कनेक्टिविटी पाथ की जांच करें. यह पीएससी एंडपॉइंट के आईपी पते पर ले जाता है और आपके पिंग काम नहीं करेंगे.
ping -c 2 aiplatform-pscanthrovertex.p.googleapis.com
dig
कमांड का इस्तेमाल करके, us-east5-aiplatform.googleapis.com के लिए कनेक्टिविटी पाथ देखें. यह पीएससी एंडपॉइंट का आईपी पता होना चाहिए.
dig us-east5-aiplatform.googleapis.com
- कंसोल पर वापस जाएं और anthro-vm वीएम इंस्टेंस का दूसरा इंस्टेंस खोलें. SSH चुनें और वीएम में एसएसएच का इस्तेमाल करें
sudo -i
टाइप करके रूट ऐक्सेस पाएं- टीसीपी डंप में कनेक्टिविटी देखने के लिए, यह कमांड चलाएं
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
- अब नीचे दी गई जानकारी को कॉपी करके चिपकाएं. इससे क्लाउड से यह पूछा जाता है कि "रोटी क्या है?". p.s.
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 का नतीजा दिखेगा. आपको इन और आउट ट्रैफ़िक दिखेगा. साथ ही, us-east5-aiplatform.googleapis.com से कनेक्ट करने के लिए, वीएम का आईपी पता PSC एंडपॉइंट आईपी पते का इस्तेमाल कर रहा होगा
वीएम इंस्टेंस anthro-vm के सभी एसएसएच सेशन बंद करें
11. बधाई हो
बधाई हो, आपने सार्वजनिक एपीआई पते और Googleapis के लिए निजी तौर पर Private Service Connect एंडपॉइंट, दोनों का इस्तेमाल करके Vertex पर Anthropic से कनेक्ट कर लिया है. इस सुविधा की मदद से, प्राइवेट एपीआई कनेक्टिविटी को ऑन-प्रीमिस/अन्य क्लाउड प्लैटफ़ॉर्म पर भी बढ़ाया जा सकता है. ये प्लैटफ़ॉर्म, इंटरकनेक्ट, क्रॉस-क्लाउड इंटरकनेक्ट, और 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 नेटवर्किंग के बारे में ज़्यादा पढ़ा जा सकता है