Доступ к чату Gemini с помощью Python SDK через конечную точку Private Service Connect

1. Обзор

Доступ к Vertex AI API можно получить через Интернет , однако на вашем предприятии вы можете захотеть получить доступ к Vertex AI API в частном порядке, не выходя через Интернет. В ходе этой лабораторной работы вы сначала получите доступ к API чата Vertex Gemini через пакет Python SDK, работающий на экземпляре виртуальной машины через общедоступный Интернет.

Затем вы создадите конечную точку Private Service Connect для API Google и измените поток трафика, чтобы использовать частную конечную точку для подключения к API чата Gemini. Конфигурации будут представлять собой комбинацию Terraform, gcloud и консоли.

В этой лабораторной работе вы создадите следующий узор.

Рисунок 1.

8b283cc5684283c2.png

2. Цель

В ходе этой лабораторной работы вы научитесь выполнять следующую задачу:

  • Настройте экземпляр виртуальной машины для использования Python SDK
  • Подключитесь к чату Gemini с помощью скрипта Python
  • Настройте конечную точку PSC для подключения к Googleapis
  • Проверьте путь подключения к Googleais
  • Настройка записей DNS вручную

Самостоятельная настройка среды

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как PROJECT_ID ). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта.
  • К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи 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. Мы собираемся добавить код терраформирования для выполнения различных действий, как описано ниже.

Включить API

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. Скопируйте и вставьте следующее в основной файл .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 и две виртуальные машины.

Терраформировать 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 и две виртуальные машины.

5. Задача 3. Настройте ВМ и протестируйте

  1. Перейдите к экземплярам виртуальных машин. Выберите виртуальную машину, начинающуюся с py-vm1 . Выберите SSH .
  2. Как только вы подключитесь к py-vm1 по SSH, включите 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. Когда вы увидите следующую выделенную копию, вернитесь к сеансу vm py-vm1 и для ввода кода авторизации: вставьте скопированный код и нажмите Enter для аутентификации.

c29615cdf9324209.png

  1. Теперь давайте проведем быстрый тест, чтобы узнать, сможем ли мы подключиться к API Vertex Gemini. Он использует us-central1-aiplatform.googleapis.com , поэтому мы выполним dig по этому адресу, чтобы увидеть, как маршрутизируется трафик.
dig us-central1-aiplatform.googleapis.com
  1. Вы должны увидеть нечто похожее (адрес будет отличаться). Обратите внимание, что путь проходит через общедоступные IP-адреса, поскольку API является общедоступным API. НЕ КОПИРОВАТЬ
; <<>> 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. Теперь скопируйте и вставьте следующее. При этом Близнецы спрашивают: « Какие цвета логотипа 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 через общедоступный API.
  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. Когда вы увидите следующую выделенную копию, вернитесь к сеансу vm py-vm2 и для ввода кода авторизации: вставьте скопированный код и нажмите Enter для аутентификации.

c29615cdf9324209.png

  1. Теперь давайте проведем быстрый тест и проверим, сможем ли мы подключиться к API Vertex Gemini. Эта команда будет использовать 4 пинг-запроса к us-central1-aiplatform.googleapis.com, поэтому мы получим ответ с публичного адреса API.
ping -c 4 us-central1-aiplatform.googleapis.com
  1. Мы вернемся, чтобы протестировать эту виртуальную машину позже. Закройте сеанс SSH и продолжим.

6. Задача 4. Создайте конечную точку PSC для googleapis с помощью Terraform.

Чтобы обеспечить частное подключение к нашей конечной точке API Vertex, мы создадим конечную точку Private Service Connect для API Google. Это позволит нам использовать частный IP-адрес, который мы назначаем для маршрутизации трафика к нужным нам API Google, в данном случае Vertex.

  1. Откройте Cloud Shell в режиме редактора, если он еще не открыт. Мы собираемся создать следующее:
  • Создайте IP-адрес для конечной точки PSC 192.168.255.250 ( resource "google_compute_global_address" "default")
  • Создайте конечную точку PSC для API Google ( 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 = ""
  }
  1. Переключитесь на терминал Cloud Shell и убедитесь, что вы находитесь в папке terraform-build . Затем запустите terraform init Затем запустите terraform plan Это покажет вам, что будут добавлены 2 элемента.
    затем запустите terraform apply и введите yes чтобы создать конечную точку API 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. Получите root-доступ, набрав 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-адреса, который вы указали в файлах хоста. Это конечная точка PSC, и ваши проверки связи будут безуспешными.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. Вернитесь в консоль и откройте другой экземпляр виртуальной машины py-vm1 . Выберите SSH и SSH в виртуальной машине.
  2. Получите root-доступ, набрав 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. Теперь скопируйте и вставьте следующее. Для этого спросите Близнецов: « Какие цвета логотипа 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 . Вы увидите In и Out с 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. Создайте вручную DNS-запись в googleapis с помощью Terraform (необязательно)

Вы можете создать запись DNS вручную, чтобы указать на конечную точку PSC, используя частный DNS. Это повлияет на все сети, которые вы ему назначите.

  1. Перейдите к Сетевым службам и выберите Cloud DNS.
  2. В зонах вы должны увидеть автоматически созданную зону для Private Service Connect для API Google с каталогом службы типа зоны. Это можно использовать для подключения к конечной точке PSC в формате ** SERVICE-ENDPOINT. p.googleapis.com Пример: aiplatform-pscvertexgemini.p.googleapis.com
  3. В этом случае мы хотим вручную создать частную запись DNS. Конфигурация будет следующая
  • Создайте частную зону DNS с именем «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. Добавьте следующий код в файл.

Терраформ 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 , чтобы создать частную запись DNS.
  2. Вы должны увидеть настройку с записью A и CNAME, как показано ниже. b7f122f0d1fd2850.png
  3. Затем мы проверяем возможность подключения к этим изменениям на py-vm2.

9. Задача 7. Проверка подключения конечной точки через IP-адрес (необязательно)

Давайте подключимся к Gemini, используя частную конечную точку.

  1. Перейдите к экземпляру виртуальной машины py-vm2 . Выберите SSH и SSH в виртуальной машине.
  2. Получите root-доступ, набрав sudo -i
  3. Проверьте путь подключения к us-central1-aiplatform.googleapis.com с помощью команды ping . Это выполнит проверку IP-адреса в частном DNS, записи для googleapis. Этот IP-адрес является конечной точкой PSC, и ваши пинги будут безуспешными.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. Проверьте путь подключения с помощью ping используя автоматически созданную запись DNS для PSC API Google с помощью aiplatform-pscvertexgemini.p.googleapis.com . Это указывает на IP-адрес конечной точки PSC, и ваши запросы ping будут безуспешными.
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. Получите root-доступ, набрав 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. Теперь скопируйте и вставьте следующее. Это спросит Близнецов: « Какие цвета логотипа 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, используя как общедоступный адрес API, так и конфиденциально, используя конечную точку Private Service Connect для API Google. Эта функция может расширить возможности подключения частного API к вашей локальной или другой облачной среде, которая подключена через (Interconnect, Cross-Cloud Interconnect и VPC).

Следующие шаги / Узнать больше

Вы можете узнать больше о сетях Vertex AI.

Codelab: доступ к Anthropic Claude на Vertex AI с помощью Python SDK через конечную точку Private Service Connect

Возьмите следующую лабораторию

Продолжайте свои поиски с Google Cloud и посетите другие лаборатории Google Cloud Skills Boost: