الوصول إلى Anthropic Claude على Vertex AI باستخدام حزمة تطوير البرامج (SDK) لـ Python من خلال نقطة نهاية Private Service Connect

1. نظرة عامة

يمكن الوصول إلى واجهة برمجة التطبيقات Vertex AI API عبر الإنترنت، ولكن قد تحتاج في مؤسستك إلى الوصول إلى واجهة برمجة التطبيقات Vertex AI API بشكل خاص بدون استخدام الإنترنت. في هذا الدرس العملي، ستتمكّن أولاً من الوصول إلى Anthropic Claude على Vertex من خلال حزمة تطوير البرامج (SDK) لـ Python التي تعمل على مثيل جهاز افتراضي من خلال الإنترنت العلني.

بعد ذلك، عليك إنشاء نقطة نهاية Private Service Connect لـ Googleapis وتغيير تدفق الزيارات لاستخدام نقطة النهاية الخاصة للاتصال بواجهة برمجة التطبيقات Vertex API.

في هذا الدرس التطبيقي، ستنشئ النمط التالي.

الشكل 1

103967918b096e97.png

2. الأهداف

في هذه الميزة الاختبارية، ستتعرّف على كيفية تنفيذ المهمة التالية:

  • إعداد مثيل جهاز افتراضي لاستخدام حزمة تطوير البرامج (SDK) لـ Python
  • الاتصال بخدمة الدردشة مع Anthropic Claude من خلال نص Python
  • ضبط نقطة نهاية PSC للاتصال بـ Googleapis
  • ضبط إدخالات نظام أسماء النطاقات يدويًا
  • التحقّق من مسار الاتصال بخدمة Googleais

إعداد المختبر

إعداد البيئة حسب السرعة التي تناسبك

  1. سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها واجهات برمجة تطبيقات Google. ويمكنك تعديلها في أي وقت.
  • يكون معرّف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تُنشئ وحدة تحكّم Cloud Console سلسلة فريدة تلقائيًا، ولا يهمّك عادةً معرفة محتواها. في معظم مختبرات الرموز البرمجية، ستحتاج إلى الإشارة إلى معرّف المشروع (يُعرَف عادةً باسم PROJECT_ID). إذا لم يعجبك المعرّف الذي تم إنشاؤه، يمكنك إنشاء معرّف آخر عشوائي. يمكنك بدلاً من ذلك تجربة عنوانك الخاص لمعرفة ما إذا كان متاحًا. ولا يمكن تغييره بعد هذه الخطوة ويبقى ساريًا طوال مدة المشروع.
  • يُرجى العِلم أنّ هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات عن كلّ من هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تُكلّفك المشاركة في هذا الدليل التعليمي للترميز الكثير، إن لم يكن أيّ تكلفة على الإطلاق. لإيقاف الموارد لتجنُّب تحصيل رسوم بعد انتهاء هذا الدليل التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يكون مستخدمو Google Cloud الجدد مؤهّلين للاستفادة من برنامج الفترة التجريبية المجانية التي تقدّم رصيدًا بقيمة 300 دولار أمريكي.

بدء Cloud Shell

على الرغم من أنّه يمكن تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدليل التعليمي Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:

55efc1aaa7a4d3ad.png

من المفترض ألا تستغرق عملية توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

7ffe5cbb04455448.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. ويقدّم هذا الدليل دليلاً منزليًا دائمًا بسعة 5 غيغابايت، ويتم تشغيله على Google Cloud، ما يُحسِّن بشكل كبير أداء الشبكة والمصادقة. يمكنك تنفيذ جميع أعمالك في هذا الدليل التعليمي للترميز داخل متصفّح. لست بحاجة إلى تثبيت أي تطبيق.

3- المهمة رقم 1 بيئة الإعداد

سننشئ شبكة VPC مخصّصة تتضمّن قواعد جدار الحماية. إذا كان لديك "شبكة VPC" ومشروع، يمكنك تخطّي هذا الجزء.

افتح Cloud Shell في أعلى وحدة التحكّم على يسار الصفحة. واضبطها على النحو التالي: 4261e776f64ea978.png

  1. تفعيل بعض واجهات برمجة التطبيقات التي سنستخدمها في هذا الدرس التطبيقي
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 في Model Garden في Vertex

نحتاج إلى منح إذن بالوصول الخارجي إلى الإنترنت، لذا لننشئ بوابة Cloud NAT ونُرفقها.

  1. انتقِل إلى Vertex AI واختَر Model Garden.
  2. ابحث عن Anthropic واختَر Claude 3.5 Sonnet.

4fd4338c598983d8.png

  1. انقر على تفعيل، وسيُطلب منك ملء بعض المعلومات. املأ النموذج وانقر على التالي.
  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.

سننشئ جهاز افتراضي لاختباره مع تثبيت الحِزم التالية.

  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. انتقِل إلى مثيلات الأجهزة الافتراضية. اختَر جهاز الكمبيوتر الظاهري الذي يبدأ بالاسم anthro-vm. اختَر بروتوكول النقل الآمن (SSH).
  2. بعد استخدام بروتوكول النقل الآمن (SSH) للوصول إلى anthro-vm، فعِّل حساب 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. عندما يظهر لك الخيار التالي، اختَر نسخة، ثم انتقِل مرة أخرى إلى جلسة anthro-vm. بالنسبة إلى إدخال رمز التفويض: الصِق الرمز الذي نسخته واضغط على مفتاح Enter للمصادقة.

c29615cdf9324209.png

  1. لنجري الآن اختبارًا سريعًا لمعرفة ما إذا كان بإمكاننا الاتصال بواجهة برمجة التطبيقات Vertex Gemini API، والتي تستخدم us-east5-aiplatform.googleapis.com، لذا سنُجري dig إلى هذا العنوان لمعرفة كيفية توجيه الزيارات.
dig us-east5-aiplatform.googleapis.com
  1. من المفترض أن يظهر لك شيء مشابه (سيختلف العنوان). يُرجى العِلم أنّ المسار يمرّ عبر عناوين IP العامة لأنّ واجهة برمجة التطبيقات هي واجهة برمجة تطبيقات عامة.
; <<>> 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 من خلال واجهة برمجة التطبيقات العامة Vertex.
  3. يُرجى إغلاق جلسة SSH لنتمكّن من المتابعة.

7- المهمة رقم 5 إنشاء نقطة نهاية 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 واستخدامه للوصول إلى الجهاز الافتراضي
  2. الحصول على إذن الوصول إلى الجذر من خلال كتابة sudo -i
  3. تحقَّق من مسار الاتصال بـ aiplatform-pscanthrovertex.p.googleapis.com باستخدام الأمر dig. من المفترض أن يظهر لك عنوان IP لنقطة نهاية PSC.
dig aiplatform-pscanthrovertex.p.googleapis.com

9. المهمة 7 إنشاء إدخال يدوي لنظام أسماء النطاقات في googleapis (اختياري)

يمكنك إنشاء إدخال يدوي في نظام أسماء النطاقات للإشارة إلى نقطة نهاية PSC باستخدام نظام أسماء النطاقات الخاص. سيؤثّر ذلك في جميع الشبكات التي تحدّدها له.

  1. انتقِل إلى "خدمات الشبكة" واختَر Cloud DNS.
  2. في المناطق، من المفترض أن تظهر لك منطقة تم إنشاؤها تلقائيًا لـ Private Service Connect لواجهات برمجة تطبيقات Google، مع دليل خدمة نوع المنطقة. يمكن استخدام هذا العنوان للاتصال بنقطة نهاية PSC باستخدام التنسيق **SERVICE-ENDPOINT.p.googleapis.com. مثال aiplatform-pscvertexgemini.p.googleapis.com
  3. في هذه الحالة، نريد إنشاء إدخال خاص لنظام أسماء النطاقات يدويًا. انتقِل إلى Cloud DNS واختَر إنشاء منطقة.
  4. يمكنك ضبط الإعدادات على النحو التالي:

الإعداد

الاسم

نوع المنطقة

خاص

اسم المنطقة

googleapis-private

اسم نظام أسماء النطاقات

googleapis.com

إضافة شبكات (اختَر "تم" عند الإضافة)

anthropic-net

لإكمال الاختيار

إنشاء

  1. في منطقة "تفاصيل المنطقة"، اختَر إضافة سجل عادي لإضافة سجلّ A.

الإعداد

الاسم

نوع سجلّ الموارد

A

عنوان IPv4 (إضافة عنوان IP للنقطة الطرفية)

192.168.255.230

لإكمال الاختيار

إنشاء

  1. في منطقة تفاصيل المنطقة، اختَر إضافة سجلّ عادي لإضافة سجلّ CNAME.

الإعداد

الاسم

اسم نظام أسماء النطاقات

*

نوع مورد السجلّ

CNAME

الاسم الأساسي 1

googleapis.com

لإكمال الاختيار

إنشاء

  1. من المفترض أن يظهر لك إعداد باستخدام سجلّ A وCNAME على النحو التالي: b7f122f0d1fd2850.png
  2. بعد ذلك، نتحقّق من إمكانية الاتصال باستخدام هذه التغييرات على anthro-vm.

10. المهمة 8 التحقّق من إمكانية الاتصال بنقطة النهاية من خلال عنوان IP (اختياري)

لنتواصل باستخدام نقطة النهاية الخاصة للاتصال بخدمة Gemini.

  1. انتقِل إلى مثيل الجهاز الافتراضي anthro-vm. اختيار SSH وSSH في الجهاز الافتراضي
  2. الحصول على إذن الوصول إلى الجذر من خلال كتابة sudo -i
  3. تحقَّق من مسار الاتصال بخادم us-east5-aiplatform.googleapis.com باستخدام الأمر ping. سيؤدي ذلك إلى إرسال طلب بحث عن عنوان IP في نظام أسماء النطاقات الخاص، وهو سجلّ A لـ googleapis. عنوان IP هذا هو نقطة نهاية PSC ولن تنجح عمليات إرسال طلبات فحص الاتصال.
ping -c 2 us-east5-aiplatform.googleapis.com
  1. تحقَّق من مسار الاتصال باستخدام ping باستخدام إدخال نظام أسماء النطاقات الذي تم إنشاؤه تلقائيًا لواجهات برمجة تطبيقات Google الخاصة بخدمة Private Service Connect باستخدام 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. الحصول على إذن الوصول إلى الجذر من خلال كتابة sudo -i
  3. نفِّذ الأمر التالي للاطّلاع على إمكانية الاتصال في ملف بيانات TCP.
sudo tcpdump -i any port 53 -n or host us-east5-aiplatform.googleapis.com
  1. الآن، يمكنك الرجوع إلى أول مثيل SSH من مثيل الجهاز الافتراضي anthro-vm.
  2. فعِّل البيئة باستخدام
cd py-gem-env
source env/bin/activate
  1. الآن، لنختبر لغة Python. اكتب ipython لتفعيل واجهة ipython.
ipython
  1. الآن، انسخ ما يلي والصقه. يسأل هذا الطلب "كلاوديو" عن ما هو الروتي؟. ملاحظة: استبدِل 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. انتقِل مرة أخرى إلى المثيل الثاني من مثيل الجهاز الافتراضي anthro-vm. من المفترض أن تظهر لك نتيجة أداة TCPDUMP. ستلاحظ أنّه يتم نقل البيانات من وإلى الجهاز الافتراضي وأنّ عنوان IP للجهاز الافتراضي يستخدم عنوان IP لنقطة نهاية PSC للاتصال بـ us-east5-aiplatform.googleapis.com.

إغلاق جميع جلسات SSH إلى مثيل الجهاز الافتراضي anthro-vm

11. تهانينا

نبارك لك على نجاحك في الاتصال بخدمة Anthropic على Vertex باستخدام عنوان واجهة برمجة التطبيقات العلني واستخدام نقطة نهاية Private Service Connect الخاصة لواجهات برمجة تطبيقات Google. يمكن أن توفّر هذه الوظيفة إمكانية الاتصال بواجهة برمجة التطبيقات الخاصة في بيئة السحابة الإلكترونية في مقرّ عملك أو غيرها من البيئات التي يتم ربطها من خلال (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.