1. نظرة عامة
يمكن الوصول إلى Vertex AI API على الإنترنت، ولكن في مؤسستك، قد تحتاج إلى استخدام واجهة Vertex AI API بخصوصية بدون الاتصال بالإنترنت. في هذا التمرين المعملي، ستتمكّن أولاً من الوصول إلى Vertex Gemini Chat API عبر حزمة python sdk التي تعمل على مثيل آلة افتراضية على الإنترنت العام.
بعد ذلك، عليك إنشاء نقطة نهاية Private Service Connect بواجهات Google APIs، وتغيير مسار حركة البيانات لاستخدام نقطة النهاية الخاصة للاتصال بـ Gemini Chat API. ستكون الإعدادات عبارة عن مجموعة من Terraform وgcloud ووحدة التحكّم.
في هذا الدرس التطبيقي، ستنشئ النمط التالي.
الشكل 1.
2. الهدف
ستتعلم في هذا التمرين المعملي كيفية تنفيذ المهمة التالية:
- إعداد مثيل جهاز افتراضي لاستخدام python sdk
- الربط بمحادثة Gemini عبر النص البرمجي python
- ضبط نقطة نهاية PSC للاتصال بخدمة Googleapis
- التحقّق من مسار الاتصال بخدمة Googleais
- ضبط إدخالات نظام أسماء النطاقات يدويًا
إعداد البيئة ذاتيًا
- سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها واجهات برمجة تطبيقات Google. ويمكنك تعديلها في أي وقت.
- يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد تحديده). تنشئ Cloud Console سلسلة فريدة تلقائيًا، لذا لا تهمّك عادةً. في معظم الدروس التطبيقية حول الترميز، يجب الرجوع إلى رقم تعريف المشروع (الذي يتم تحديده عادةً على أنّه
PROJECT_ID
). وإذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. ويمكنك بدلاً من ذلك تجربة طلبك الخاص ومعرفة ما إذا كان متاحًا. ولا يمكن تغييره بعد هذه الخطوة ويبقى طوال مدة المشروع. - لمعلوماتك، هناك قيمة ثالثة، وهي رقم المشروع، الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تتطلّب المشاركة في هذا الدليل التعليمي البرمجي أي تكلفة، أو قد تتطلّب تكلفة بسيطة. لإيقاف تشغيل الموارد لتجنب تحمُّل الفواتير إلى ما هو أبعد من هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. المستخدمون الجدد في Google Cloud مؤهّلون للاستفادة من برنامج الفترة التجريبية المجانية التي تبلغ قيمتها 300 دولار أمريكي.
بدء Cloud Shell
مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.
من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:
من المفترض ألا تستغرق عملية توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:
يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. ويقدّم هذا الدليل دليلاً منزليًا دائمًا بسعة 5 غيغابايت، ويتم تشغيله على Google Cloud، ما يُحسِّن بشكل كبير أداء الشبكة والمصادقة. يمكنك تنفيذ جميع أعمالك في هذا الدرس التطبيقي حول الترميز من خلال متصفّح. لست بحاجة إلى تثبيت أي تطبيق.
3- المهمة رقم 1 إعداد البيئة باستخدام terraform
سننشئ شبكة VPC مخصّصة باستخدام قواعد جدار حماية وشبكة فرعية. افتح وحدة تحكّم السحابة الإلكترونية واختَر المشروع الذي ستستخدمه.
- افتح Cloud Shell في أعلى وحدة التحكّم على يسار الصفحة، وتأكّد من ظهور رقم تعريف المشروع الصحيح في Cloud Shell، وأكِّد أي طلبات للسماح بالوصول.
- إنشاء مجلد باسم terraform-build ونقله إلى مجلد
mkdir terraform-build && cd terraform-build
- أنشئ ملفّي main.tf وvariable.tf.
touch main.tf variable.tf
- انتقِل إلى عرض محرِّر Cloud Shell. اختَر محرِّر، وتأكّد من السماح بأي طلبات ضرورية ليتم تحميل الواجهة.
- بعد التحميل، انتقِل إلى ملف > فتح مجلد وانتقِل إلى /home/your-user-name/terraform-build وانقر على حسنًا لفتح المجلد في المحرِّر.
- اختَر ملف 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. سنضيف بعض رموز التضاريس لتنفيذ إجراءات مختلفة كما هو موضّح أدناه.
تفعيل واجهات برمجة التطبيقات |
|
إنشاء شبكة 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
نحتاج إلى منح الوصول الخارجي الخارجي إلى الإنترنت، لذا لننشئ مدخل ترجمة عنوان الشبكة (NAT) وإرفاقه.
- افتح Cloud Shell وانتقِل إلى مجلد terraform-build وأنشئ الملفات التالية (إجمالي ثلاثة ملفات). سنعدّلها لاحقًا.
touch nat-vm.tf psc.tf dns.tf
- انتقِل إلى عرض محرر Cloud Shell واختَر ملف 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 وVM (آلة افتراضية) اثنتان.
5- المهمة رقم 3 ضبط الأجهزة الافتراضية واختبارها
- انتقِل إلى مثيلات الأجهزة الافتراضية. حدد vm الذي يبدأ بـ py-vm1. اختَر SSH.
- بعد استخدام بروتوكول النقل الآمن (SSH) للاتصال بجهاز py-vm1، فعِّل حساب root عن طريق كتابة
sudo -i
. - فعِّل بيئة venv:
cd py-gem-env
source env/bin/activate
- لنتمكّن من إجراء بعض الاختبارات لاحقًا، يجب مصادقة هذا الحساب الآن. نفِّذ الطلب التالي في جهاز افتراضي (VM) واضغط على المفتاح y عندما يُطلب منك ذلك.
gcloud auth application-default login
- بعد ذلك، انسخ عنوان URL الذي يظهر في البداية بـ https:// وافتح علامة تبويب جديدة في نافذة متصفّح المختبر والصق عنوان URL. اقبل الطلبات.
- عندما تظهر لك عبارة "اختيار نسخة" التالية، ارجع إلى جلسة py-vm1 vm وإلى إدخال رمز التفويض: ألصِق الرمز الذي نسخته واضغط على مفتاح Enter للمصادقة.
- لنجري الآن اختبارًا سريعًا لمعرفة ما إذا كان بإمكاننا الربط بواجهة برمجة تطبيقات Vertex Gemini. يستخدم هذا العنوان us-central1-aiplatform.googleapis.com، وبالتالي سنُنشئ
dig
لذلك العنوان لنرى مسار حركة المرور.
dig us-central1-aiplatform.googleapis.com
- من المفترض أن يظهر لك عنوان مشابه (سيختلف العنوان). يُرجى العلم أنّ المسار هو عبر عناوين IP عامة لأنّ واجهة برمجة التطبيقات هي واجهة برمجة تطبيقات عامة. عدم النسخ
; <<>> 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 عبر واجهة برمجة التطبيقات العامة.
- يُرجى إغلاق جلسة SSH لنتمكّن من المتابعة.
الآن، عليك ضبط py-vm2 بالإعدادات نفسها.
- انتقِل إلى مثيلات الأجهزة الافتراضية. اختَر جهاز الكمبيوتر الظاهري الذي يبدأ بالاسم py-vm2. اختَر بروتوكول النقل الآمن (SSH).
- بعد استخدام بروتوكول النقل الآمن (SSH) للاتصال بـ py-vm2-****، يمكنك تفعيل حساب root عن طريق كتابة **
sudo -i
**. - فعِّل بيئة venv:
cd py-gem-env
source env/bin/activate
- لنبدأ الآن بمصادقة هذا الجهاز لإجراء بعض الاختبارات لاحقًا. نفِّذ الطلب التالي في الجهاز الافتراضي (VM).
gcloud auth application-default login
- بعد ذلك، انسخ عنوان URL الذي يظهر في البداية بـ https:// وافتح علامة تبويب جديدة في نافذة متصفّح المختبر والصق عنوان URL. اقبل المطالبات.
- عندما يظهر لك الخيار التالي، اختَر نسخة، ثم انتقِل مرة أخرى إلى جلسة py-vm2، وبالنسبة إلى إدخال رمز التفويض: الصِق الرمز الذي نسخته واضغط على مفتاح Enter لتأكيد المصادقة.
- لنجري الآن اختبارًا سريعًا لمعرفة ما إذا كان بإمكاننا الاتصال بواجهة برمجة التطبيقات Vertex Gemini API. سيستخدم هذا الأمر 4 إشعارات إلى us-central1-aiplatform.googleapis.com، لذا سنحصل على ردّ من العنوان العلني لواجهة برمجة التطبيقات.
ping -c 4 us-central1-aiplatform.googleapis.com
- سنعود لاختبار هذا الجهاز الافتراضي في وقت لاحق. أغلق جلسة بروتوكول النقل الآمن (SSH) وسنواصل المتابعة.
6- المهمة رقم 4 إنشاء نقطة نهاية PSC لـ googleapis باستخدام Terraform
لتفعيل الاتصال الخاص بنقطة نهاية Vertex API، سننشئ نقطة نهاية Private Service Connect لواجهات برمجة تطبيقات Google. سيتيح لنا ذلك استخدام عنوان IP خاص نحدّده لتوجيه الزيارات إلى واجهات برمجة تطبيقات Google التي نحتاج إليها، وفي هذه الحالة Vertex.
- افتح Cloud Shell في طريقة عرض المحرِّر إذا لم يكن مفتوحًا من قبل. سنقوم بإنشاء ما يلي:
- أنشئ عنوان IP لنقطة نهاية PSC 192.168.255.250 (
resource "google_compute_global_address" "default")
. - إنشاء نقطة نهاية PSC في Google APIs (
resource "google_compute_global_forwarding_rule" "default")
)
افتح ملف psc.tf في المجلد terraform-build. أضف التعليمة البرمجية التالية إلى الملف.
تنسيق التضاريس 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
، وسيظهر لك أنّه سيتمّ إضافة عنصرَين،
ثمّ نفِّذterraform apply
واكتبyes
لإنشاء نقطة نهاية واجهة برمجة تطبيقات Google لعنوان IP وPSC. - التأكّد من توفّر نقطة النهاية
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global
7- المهمة رقم 5 التحقّق من اتصال نقطة النهاية عبر عنوان IP
لنتصل بـ Gemini باستخدام نقطة النهاية الخاصة.
- انتقِل إلى مثيل الجهاز الافتراضي py-vm1. اختيار SSH وSSH في الجهاز الافتراضي
- الحصول على إذن الوصول إلى الجذر من خلال كتابة
sudo -i
- سنستخدم هذه النسخة الفردية فقط لاختبار نقطة نهاية PSC، لذا سنعدِّل ملف المضيف باستخدام الإدخال التالي:
echo 192.168.255.250 us-central1-aiplatform.googleapis.com >> /etc/hosts
cat /etc/hosts
- تحقَّق من مسار الاتصال بـ us-central1-aiplatform.googleapis.com باستخدام الأمر
ping
. سيؤدي هذا إلى اختبار اتصال عنوان IP الذي أدخلته في ملفات المضيف. هذه نقطة نهاية لنظام التحكّم في حدود الجلسة، ولن تنجح عمليات إرسال طلبات فحص الاتصال.
ping -c 2 us-central1-aiplatform.googleapis.com
- ارجع إلى وحدة التحكّم وافتح مثيلًا آخر من مثيل الجهاز الافتراضي py-vm1. اختَر SSH وSSH في الجهاز الافتراضي.
- الحصول على إذن الوصول إلى الجذر من خلال كتابة
sudo -i
- نفِّذ الأمر التالي للاطّلاع على إمكانية الاتصال في تجميد TCP.
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
- الآن، يمكنك الرجوع إلى مثيل SSH الأول من مثيل الجهاز الافتراضي py-vm1.
- تفعيل البيئة باستخدام
cd py-gem-env
source env/bin/activate
- والآن، لنختبر بايثون. اكتب
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. ستلاحظ ظهور الرسالة "In and Out" في عنوان IP للجهاز الافتراضي (VM) وعنوان 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 إنشاء إدخال نظام أسماء النطاقات يدويًا في googleapis باستخدام Terraform (اختياري)
يمكنك إنشاء إدخال يدوي في نظام أسماء النطاقات للإشارة إلى نقطة نهاية PSC باستخدام نظام أسماء النطاقات الخاص. سيؤثّر ذلك في جميع الشبكات التي تحدّدها له.
- انتقِل إلى "خدمات الشبكة" واختَر Cloud DNS.
- من المفترض أن تظهر في المناطق منطقة تم إنشاؤها تلقائيًا لـ Private Service Connect for Google APIs، بالإضافة إلى دليل خدمة نوع المنطقة. يمكن استخدام هذا العنوان للاتصال بنقطة نهاية PSC باستخدام التنسيق **SERVICE-ENDPOINT.p.googleapis.com. على سبيل المثال:
aiplatform-pscvertexgemini.p.googleapis.com
- في هذه الحالة، نريد إنشاء إدخال خاص لنظام أسماء النطاقات يدويًا. ستكون الإعدادات على النحو التالي:
- أنشئ منطقة نظام أسماء نطاقات خاصة باسم "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
لإنشاء إدخال نظام أسماء النطاقات الخاص. - من المفترض أن يظهر لك إعداد باستخدام سجلّ A وCNAME على النحو التالي:
- بعد ذلك، نتحقّق من الاتصال من خلال هذه التغييرات على py-vm2
9. المهمة 7 التحقّق من إمكانية الاتصال بنقطة النهاية من خلال عنوان IP (اختياري)
لنتصل بـ Gemini باستخدام نقطة النهاية الخاصة.
- انتقِل إلى مثيل الجهاز الافتراضي py-vm2. اختيار SSH وSSH في الجهاز الافتراضي
- يمكنك الحصول على إذن الوصول إلى الجذر من خلال كتابة الرمز
sudo -i
. - تحقَّق من مسار الاتصال إلى us-central1-aiplatform.googleapis.com باستخدام الأمر
ping
. سيؤدي ذلك إلى إرسال طلب بحث عن عنوان IP في نظام أسماء النطاقات الخاص، وهو سجلّ A لـ googleapis. إنّ عنوان IP هذا هو نقطة نهاية PSC ولن تنجح عمليات إرسال طلبات فحص الاتصال.
ping -c 2 us-central1-aiplatform.googleapis.com
- تحقَّق من مسار الاتصال من خلال
ping
باستخدام إدخال نظام أسماء النطاقات الذي يتم إنشاؤه تلقائيًا لـ PSC Google APIs باستخدام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 في الجهاز الافتراضي.
- يمكنك الحصول على إذن الوصول إلى الجذر من خلال كتابة الرمز
sudo -i
. - نفِّذ الأمر التالي للاطّلاع على إمكانية الاتصال في ملف بيانات TCP.
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
- يمكنك الآن العودة إلى أول مثيل SSH لمثيل الجهاز الافتراضي 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 باستخدام كل من عنوان واجهة برمجة التطبيقات العلني أو بشكل خاص من خلال Private Service Connect Endpoint for Google APIs. يمكن أن توفّر هذه الوظيفة إمكانية الاتصال بواجهة برمجة التطبيقات الخاصة في بيئة السحابة الإلكترونية في مقرّ عملك أو غيرها من البيئات التي يتم ربطها من خلال (Interconnect وCross-Cloud Interconnect وVPC).
الخطوات التالية / مزيد من المعلومات
يمكنك الاطّلاع على مزيد من المعلومات حول شبكات Vertex AI.
درس تطبيقي حول الترميز: الوصول إلى Anthropic Claude on Vertex AI باستخدام حزمة python sdk من خلال نقطة نهاية Private Service Connect
الانتقال إلى التمرين المعملي التالي
يمكنك متابعة مهمتك باستخدام Google Cloud والاطّلاع على هذه الدروس التطبيقية الأخرى في "منصة تعزيز مهارات Google Cloud":