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

1. نظرة عامة

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

بعد ذلك، عليك إنشاء نقطة نهاية Private Service Connect لـ Google APIs، وتغيير تدفق الزيارات لاستخدام نقطة النهاية الخاصة للاتصال بواجهة برمجة تطبيقات Gemini chat. ستكون الإعدادات عبارة عن مجموعة من Terraform وgcloud ووحدة التحكّم.

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

الشكل 1

8b283cc5684283c2.png

2. الهدف

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

  • إعداد مثيل جهاز افتراضي لاستخدام حزمة تطوير البرامج (SDK) لـ Python
  • الاتصال بخدمة Gemini Chat من خلال نص 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 إعداد البيئة باستخدام terraform

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

  1. افتح Cloud Shell في أعلى وحدة التحكّم على يسار الصفحة، وتأكَّد من ظهور رقم تعريف المشروع الصحيح في Cloud Shell، وأكِّد أي طلبات للسماح بالوصول. 4261e776f64ea978.png
  2. أنشئ مجلدًا باسم terraform-build وانتقِل إليه.
mkdir terraform-build  && cd terraform-build
  1. أنشئ ملفَّي main.tf وvariable.tf.
touch main.tf variable.tf 
  1. انتقِل إلى عرض محرِّر Cloud Shell. اختَر المحرِّر، وتأكَّد من السماح بأي طلبات ضرورية حتى تتمكّن الواجهة من التحميل.
  2. بعد التحميل، انتقِل إلى ملف > فتح مجلد وانتقِل إلى ‎/home/your-user-name/terraform-build وانقر على حسنًا لفتح المجلد في المحرِّر. 78f5eb9f2f82f1b0.png
  3. اختَر ملف variable.tf وأضِف ما يلي. استبدِل نص your-project-id-here بمعرّف مشروعك الفعلي بين علامتَي اقتباس.
variable "project_id" {
  type = string
  default = "your-project-id-here"
}

variable "network_id" {
  type = string
  default = "python-net"
}
  1. بعد ذلك، افتح ملف main.tf. سنضيف بعض رموز terraform لتنفيذ إجراءات مختلفة كما هو موضّح أدناه.

تفعيل واجهات برمجة التطبيقات

resource "google_project_service" "default"

إنشاء شبكة VPC باسم python-net

resource "google_compute_network" "default"

إضافة شبكة فرعية

resource "google_compute_subnetwork" "default"

إضافة قاعدتَي جدار حماية

resource "google_compute_firewall" "allow_icmp"resource "google_compute_firewall" "allow_ssh"

  1. انسخ ما يلي والصقه في ملف main .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"]
}
  1. ارجع إلى وحدة طرفية Cloud Shell وتأكَّد من أنّك في الدليل terraform-build cd terraform-build ونفِّذ الأوامر التالية.

terraform init

تبدأ عملية إعداد دليل العمل. تعمل هذه الخطوة على تنزيل موفّري الخدمات المطلوبين للإعداد المحدّد.

terraform plan

تُنشئ خطة تنفيذ توضّح الإجراءات التي ستتّخذها Terraform لنشر البنية الأساسية.

  1. الآن لإنشاء الموارد، يمكنك تنفيذ الأمر terraform apply ثم كتابة yes لتشغيله.

4. المهمة رقم 2 إنشاء بوابة NAT وأجهزة افتراضية باستخدام Terraform

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

  1. افتح Cloud Shell وانتقِل إلى مجلد terraform-build وأنشئ الملفات التالية (ثلاثة ملفات في المجمل). سنعدّل هذه التفاصيل لاحقًا.
touch nat-vm.tf psc.tf dns.tf
  1. انتقِل إلى عرض محرر 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
}
  1. انتقِل إلى وحدة تحكّم Cloud Shell، وتأكَّد من أنّك في مجلد terraform-build وشغِّل terraform plan، وسيظهر لك أنّه ستتم إضافة 4 عناصر، ثم شغِّل terraform apply واكتب yes لإنشاء بوابة NAT وVM (آلة افتراضية) اثنتان.

5- المهمة رقم 3 ضبط الأجهزة الافتراضية واختبارها

  1. انتقِل إلى مثيلات الأجهزة الافتراضية. اختَر جهاز الكمبيوتر الظاهري الذي يبدأ بالاسم py-vm1. اختَر SSH.
  2. بعد استخدام بروتوكول النقل الآمن (SSH) للاتصال بجهاز py-vm1، فعِّل حساب root عن طريق كتابة sudo -i.
  3. فعِّل بيئة venv:
cd py-gem-env
source env/bin/activate
  1. لنبدأ الآن بمصادقة هذا الجهاز لإجراء بعض الاختبارات لاحقًا. نفِّذ الأمر التالي في جهاز الكمبيوتر الظاهري، واضغط على y عندما يُطلب منك ذلك.
gcloud auth application-default login
  1. بعد ذلك، انسخ عنوان URL الذي يظهر في البداية بـ https:// وافتح علامة تبويب جديدة في نافذة متصفّح المختبر والصق عنوان URL. اقبل الطلبات.
  2. عندما يظهر لك الخيار التالي، اختَر نسخة، ثم انتقِل مرة أخرى إلى جلسة py-vm1، وفي حقل إدخال رمز التفويض: الصِق الرمز الذي نسخته واضغط على مفتاح Enter لتأكيد المصادقة.

c29615cdf9324209.png

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

4685b31f13df54e1.png

  1. الآن، انسخ ما يلي والصقه. يسأل هذا الطلب 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))
  1. اضغط على مفتاح Enter لتنفيذ الأمر والاطّلاع على النتيجة.
  2. وصل هذا الطلب إلى Vertex من خلال واجهة برمجة التطبيقات العامة.
  3. يُرجى إغلاق جلسة SSH لنتمكّن من المتابعة.

الآن، عليك ضبط py-vm2 بالإعدادات نفسها.

  1. انتقِل إلى مثيلات الأجهزة الافتراضية. اختَر جهاز الكمبيوتر الظاهري الذي يبدأ بالاسم py-vm2. اختَر بروتوكول النقل الآمن (SSH).
  2. بعد استخدام بروتوكول النقل الآمن (SSH) للوصول إلى py-vm2-****، يمكنك تفعيل حساب root عن طريق كتابة **sudo -i**.
  3. فعِّل بيئة venv:
cd py-gem-env
source env/bin/activate
  1. لنبدأ الآن بمصادقة هذا الجهاز لإجراء بعض الاختبارات لاحقًا. نفِّذ الأمر التالي في جهاز الكمبيوتر الظاهري.
gcloud auth application-default login
  1. بعد ذلك، انسخ عنوان URL الذي يظهر في البداية بـ https:// وافتح علامة تبويب جديدة في نافذة متصفّح المختبر والصق عنوان URL. اقبل الطلبات.
  2. عندما يظهر لك الخيار التالي، اختَر نسخة، ثم انتقِل مرة أخرى إلى جلسة py-vm2، وبالنسبة إلى إدخال رمز التفويض: الصِق الرمز الذي نسخته واضغط على مفتاح Enter لتأكيد المصادقة.

c29615cdf9324209.png

  1. لنجري الآن اختبارًا سريعًا لمعرفة ما إذا كان بإمكاننا الاتصال بواجهة برمجة التطبيقات Vertex Gemini API. سيستخدم هذا الأمر 4 عمليات إرسال إشعارات إلى us-central1-aiplatform.googleapis.com حتى نتلقّى ردًا من العنوان العام لواجهة برمجة التطبيقات.
ping -c 4 us-central1-aiplatform.googleapis.com
  1. سنعود لاختبار هذا الجهاز الظاهري لاحقًا. يُرجى إغلاق جلسة SSH ولنواصل.

6- المهمة رقم 4 إنشاء نقطة نهاية PSC في googleapis باستخدام Terraform

لتفعيل الاتصال الخاص بنقطة نهاية Vertex API، سننشئ نقطة نهاية Private Service Connect لواجهات برمجة تطبيقات Google. سيتيح لنا ذلك استخدام عنوان IP خاص نحدّده لتوجيه الزيارات إلى واجهات برمجة تطبيقات Google التي نحتاج إليها، وفي هذه الحالة Vertex.

  1. افتح Cloud Shell في طريقة عرض المحرِّر إذا لم يكن مفتوحًا من قبل. سننشئ ما يلي:
  • أنشئ عنوان IP لنقطة نهاية وحدة التحكّم في حدود الجلسة 192.168.255.250 (resource "google_compute_global_address" "default")
  • إنشاء نقطة نهاية PSC لواجهات برمجة تطبيقات Google (resource "google_compute_global_forwarding_rule" "default")

افتح ملف psc.tf في مجلد terraform-build. أضِف الرمز البرمجي التالي إلى الملف.

Terraform 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 = ""
  }
  1. انتقِل إلى وحدة تحكّم Cloud Shell وتأكَّد من أنّك في المجلد terraform-build. بعد ذلك، نفِّذ terraform init ثم نفِّذ terraform plan، وسيظهر لك أنّه سيتمّ إضافة عنصرَين،
    ثمّ نفِّذ terraform apply واكتب yes لإنشاء نقطة نهاية واجهة برمجة تطبيقات Google لعنوان IP وPSC.
  2. التأكّد من توفّر نقطة النهاية
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

7- المهمة رقم 5 التحقّق من إمكانية الاتصال بنقطة النهاية من خلال عنوان IP

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

  1. انتقِل إلى مثيل الجهاز الافتراضي py-vm1. اختيار SSH وSSH في الجهاز الافتراضي
  2. الحصول على إذن الوصول إلى الجذر من خلال كتابة sudo -i
  3. سنستخدم هذه النسخة الفردية فقط لاختبار نقطة نهاية PSC، لذا سنعدِّل ملف المضيف باستخدام الإدخال التالي:
echo 192.168.255.250 us-central1-aiplatform.googleapis.com >> /etc/hosts

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

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

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

  1. انتقِل إلى "خدمات الشبكة" واختَر Cloud DNS.
  2. في المناطق، من المفترض أن تظهر لك منطقة تم إنشاؤها تلقائيًا لـ Private Service Connect لواجهات برمجة تطبيقات Google، مع دليل خدمة نوع المنطقة. يمكن استخدام هذا العنوان للاتصال بنقطة نهاية PSC باستخدام التنسيق **SERVICE-ENDPOINT.p.googleapis.com. على سبيل المثال: aiplatform-pscvertexgemini.p.googleapis.com
  3. في هذه الحالة، نريد إنشاء إدخال خاص لنظام أسماء النطاقات يدويًا. ستكون الإعدادات على النحو التالي:
  • أنشئ منطقة نظام أسماء نطاقات خاصة باسم "googleapis-private" لنطاق "googleapis.com" وحدِّدها للشبكة "python-net".
  • أضِف سجلّ A لربط "googleapis.com" بعنوان IP "192.168.255.250".
  • أضِف سجلّ CNAME لإعادة توجيه جميع النطاقات الفرعية لموقع "googleapis.com" (مثل www.googleapis.com) إلى "googleapis.com".
  1. افتح 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."]  
}
  1. انتقِل إلى وحدة تحكّم Cloud Shell وتأكَّد من أنّك في المجلد terraform-build. بعد ذلك، يمكنك تشغيل terraform plan وسيعرض لك هذا الإجراء العناصر التي سيتمّ إضافتها.
    بعد ذلك، يمكنك تشغيل terraform apply وكتابة yes لإنشاء إدخال نظام أسماء النطاقات الخاص.
  2. من المفترض أن يظهر لك إعداد باستخدام سجلّ A وCNAME على النحو التالي: b7f122f0d1fd2850.png
  3. بعد ذلك، نتحقّق من إمكانية الاتصال باستخدام هذه التغييرات على py-vm2.

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

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

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

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

10. تنظيف

  1. انتقِل إلى Cloud Shell وتأكَّد من أنّك في الدليل terraform-build cd terraform-build ونفِّذ الأمر التالي terraform destroy واكتب yes، ستتم إزالة جميع الموارد التي أنشأتها في مشروعك باستخدام Terraform.

11. تهانينا

نبارك لك على نجاحك في التواصل مع محادثة Vertex Gemini باستخدام عنوان واجهة برمجة التطبيقات العام واستخدام نقطة نهاية Private Service Connect لواجهات برمجة تطبيقات Google بشكل خاص. يمكن أن توفّر هذه الوظيفة إمكانية الاتصال بواجهة برمجة التطبيقات الخاصة في بيئة السحابة الإلكترونية في مقرّ عملك أو غيرها من البيئات التي يتم ربطها من خلال (Interconnect وCross-Cloud Interconnect وVPC).

الخطوات التالية / مزيد من المعلومات

يمكنك الاطّلاع على مزيد من المعلومات حول شبكات Vertex AI.

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

إجراء الاختبار التالي

يمكنك مواصلة رحلتك مع Google Cloud والاطّلاع على المختبرات الأخرى في "منصة تعزيز مهارات Google Cloud":