Truy cập vào Gemini Chat bằng SDK python thông qua điểm cuối Private Service Connect

1. Tổng quan

Bạn có thể truy cập vào API Vertex AI trên Internet. Tuy nhiên, trong doanh nghiệp của mình, bạn có thể muốn truy cập vào API Vertex AI một cách riêng tư mà không cần truy cập qua Internet. Trong phòng thí nghiệm này, trước tiên, bạn sẽ truy cập vào Vertex Gemini Chat API thông qua SDK python chạy trên một thực thể máy ảo thông qua Internet công cộng.

Sau đó, bạn sẽ tạo một điểm cuối Private Service Connect đến các API của Google và thay đổi luồng lưu lượng truy cập để sử dụng điểm cuối riêng tư nhằm kết nối với API trò chuyện Gemini. Các cấu hình sẽ là sự kết hợp giữa Terraform, gcloud và Console.

Trong phòng thí nghiệm này, bạn sẽ tạo mẫu dưới đây.

Hình 1.

8b283cc5684283c2.pngS

2. Mục tiêu

Trong lớp học này, bạn sẽ tìm hiểu cách thực hiện nhiệm vụ sau:

  • Thiết lập thực thể máy ảo để sử dụng SDK python
  • Kết nối với cuộc trò chuyện trên Gemini bằng tập lệnh python
  • Định cấu hình điểm cuối PSC để kết nối với Googleapis
  • Xác minh đường dẫn kết nối đến Googleais
  • Định cấu hình mục nhập DNS thủ công

Thiết lập môi trường theo tốc độ của riêng bạn

  1. Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Tên dự án là tên hiển thị cho người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn luôn có thể cập nhật thông tin này.
  • Mã dự án là duy nhất trên tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã được tạo, bạn có thể tạo một mã ngẫu nhiên khác. Ngoài ra, bạn có thể thử dùng email của riêng mình để xem có thể sử dụng hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ được giữ nguyên trong suốt thời gian diễn ra dự án.
  • Xin lưu ý rằng có một giá trị thứ ba là Mã dự án mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu.
  1. Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc tham gia lớp học lập trình này sẽ không tốn kém nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh phát sinh việc thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạn đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Khởi động Cloud Shell

Mặc dù có thể điều khiển Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên đám mây.

Trong Google Cloud Console, hãy nhấp vào biểu tượng Cloud Shell ở thanh công cụ trên cùng bên phải:

55efc1aaa7a4d3ad.pngS

Quá trình cấp phép và kết nối với môi trường chỉ mất vài phút. Khi quá trình này hoàn tất, bạn sẽ thấy như sau:

7ffe5cbb04455448.pngS

Máy ảo này được tải sẵn tất cả các công cụ phát triển mà bạn cần. Ứng dụng này cung cấp một thư mục gốc 5 GB ổn định và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất mạng và xác thực. Bạn có thể thực hiện tất cả công việc trong lớp học lập trình này trong một trình duyệt. Bạn không cần cài đặt gì cả.

3. Nhiệm vụ 1. Thiết lập môi trường bằng địa hình

Chúng ta sẽ tạo một VPC tuỳ chỉnh có các quy tắc về Tường lửa và mạng con. Mở bảng điều khiển trên đám mây rồi chọn dự án mà bạn sẽ sử dụng.

  1. Mở Cloud Shell ở phần trên cùng của bảng điều khiển ở bên phải, đảm bảo bạn xem đúng mã dự án trong Cloud Shell, xác nhận mọi lời nhắc cấp quyền truy cập. 4261e776f64ea978.png
  2. Tạo một thư mục có tên là terraform-build rồi di chuyển vào thư mục đó
mkdir terraform-build  && cd terraform-build
  1. Tạo tệp main.tfvariable.tf.
touch main.tf variable.tf 
  1. Chuyển sang chế độ xem Trình chỉnh sửa Cloud Shell. Chọn editor (trình chỉnh sửa), đảm bảo bạn cho phép mọi lời nhắc cần thiết để giao diện có thể tải.
  2. Sau khi tải, hãy chuyển đến File > Open Folder (Tệp > Mở thư mục) rồi chuyển đến /home/your-user-name/terraform-build và chọn Ok để mở thư mục trong trình chỉnh sửa. 78f5eb9f2f82f1b0.png
  3. Chọn tệp variable.tf rồi thêm nội dung sau. Thay thế văn bản your-project-id-here bằng mã dự án thực tế của bạn trong dấu ngoặc kép
variable "project_id" {
  type = string
  default = "your-project-id-here"
}

variable "network_id" {
  type = string
  default = "python-net"
}
  1. Tiếp theo, hãy mở tệp main.tf. Chúng ta sẽ thêm một số mã terraform để thực hiện nhiều thao tác như giải thích bên dưới.

Bật API

resource "google_project_service" "default"

Tạo VPC có tên python-net

resource "google_compute_network" "default"

Thêm mạng con

resource "google_compute_subnetwork" "default"

Thêm hai quy tắc về Tường lửa

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

  1. Sao chép và dán đường dẫn sau đây vào tệp .tf chính.
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. Quay lại thiết bị đầu cuối Cloud Shell để đảm bảo rằng bạn đang ở trong thư mục terraform-build cd terraform-build rồi chạy các lệnh sau

terraform init

Khởi động thư mục đang hoạt động. Bước này sẽ tải các nhà cung cấp cần thiết cho cấu hình đã cho xuống.

terraform plan

Tạo một kế hoạch thực thi, cho biết những hành động mà Terraform sẽ thực hiện để triển khai cơ sở hạ tầng của bạn.

  1. Bây giờ, để tạo tài nguyên, hãy chạy lệnh terraform apply và nhập yes để chạy.

4. Nhiệm vụ 2. Tạo cổng NAT và máy ảo bằng Terraform

Chúng ta cần cấp quyền truy cập Internet ra bên ngoài để có thể tạo và đính kèm cổng Cloud NAT.

  1. Mở Cloud Shell, chuyển đến thư mục terraform-build rồi tạo các tệp sau đây (tổng cộng 3 tệp). Chúng ta sẽ chỉnh sửa các thuộc tính này sau.
touch nat-vm.tf psc.tf dns.tf
  1. Chuyển sang chế độ xem Trình chỉnh sửa Cloud Shell rồi chọn tệp nat-vm.tf và thêm mã Terraform sau. Thao tác này sẽ tạo một cổng vào NAT và hai máy ảo.

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. Chuyển sang Dòng lệnh Cloud Shell, đảm bảo bạn đang ở thư mục terraform-build và chạy terraform plan. Thao tác này sẽ cho bạn thấy 4 mục sẽ được thêm, sau đó chạy terraform apply và nhập yes để tạo cổng NAT và hai máy ảo.

5. Nhiệm vụ 3. Định cấu hình máy ảo và kiểm thử

  1. Chuyển đến các phiên bản máy ảo. Chọn máy ảo bắt đầu bằng py-vm1. Chọn SSH.
  2. Sau khi bạn SSH vào py-vm1, hãy bật quyền truy cập thư mục gốc bằng cách nhập sudo -i
  3. Kích hoạt môi trường venv:
cd py-gem-env
source env/bin/activate
  1. Bây giờ, hãy xác thực điều này để thực hiện một số kiểm thử sau. Chạy lệnh sau trong máy ảo, nhấn y khi được nhắc.
gcloud auth application-default login
  1. Tiếp theo, hãy sao chép URL xuất hiện trong phần bắt đầu bằng https://, mở một thẻ mới trong cửa sổ trình duyệt của lớp học lập trình rồi dán URL đó. Chấp nhận các lời nhắc.
  2. Khi bạn thấy phần chọn sao chép sau, hãy chuyển về phiên máy ảo py-vm1 và cho phần Enter authorization code (Nhập mã uỷ quyền): dán mã bạn đã sao chép rồi nhấn enter để xác thực.

c29615cdf9324209.png

  1. Bây giờ, hãy làm một bài kiểm thử nhanh để xem liệu chúng ta có thể kết nối với Vertex Gemini API hay không. API này sử dụng us-central1-aiplatform.googleapis.com nên chúng ta sẽ thực hiện dig đến địa chỉ đó để xem tình hình giao thông.
dig us-central1-aiplatform.googleapis.com
  1. Bạn sẽ thấy nội dung tương tự (địa chỉ sẽ khác). Xin lưu ý rằng đường dẫn được gửi qua địa chỉ IP công khai vì API này là một API công khai. KHÔNG SAO CHÉP
; <<>> 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. Bây giờ, hãy sử dụng python. Nhập ipython để kích hoạt giao diện ipython.
ipython

4685b31f13df54e1.png

  1. Bây giờ, hãy sao chép và dán nội dung sau. Thao tác này sẽ hỏi Gemini "Biểu trưng của Google có những màu nào?" và "Bầu trời có màu gì?". Thay thế enter-your-project-id-here bằng mã dự án trong dấu ngoặc kép
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. Nhấn Enter để chạy và xem kết quả.
  2. Yêu cầu này đã truy cập vào Vertex thông qua API công khai.
  3. Đóng phiên SSH để tiếp tục.

Bây giờ, hãy định cấu hình py-vm2 với cùng các cấu hình

  1. Chuyển đến các thực thể máy ảo. Chọn máy ảo bắt đầu bằng py-vm2. Chọn SSH.
  2. Sau khi bạn SSH vào py-vm2-****, hãy bật quyền truy cập thư mục gốc bằng cách nhập **sudo -i**
  3. Kích hoạt môi trường venv:
cd py-gem-env
source env/bin/activate
  1. Bây giờ, hãy xác thực thông tin này để kiểm thử sau. Chạy lệnh sau trong máy ảo
gcloud auth application-default login
  1. Tiếp theo, hãy sao chép url xuất hiện trong phần đầu bằng https://, mở một tab mới trong cửa sổ trình duyệt trong phòng thí nghiệm của bạn và dán url. Chấp nhận các lời nhắc.
  2. Khi bạn thấy phần sau, hãy chọn sao chép, chuyển về phiên vm py-vm2 và cho phần Enter authorization code (Nhập mã uỷ quyền): dán mã bạn đã sao chép và nhấn enter để xác thực.

c29615cdf9324209.png

  1. Bây giờ, hãy kiểm thử nhanh để xem chúng ta có thể kết nối với API Vertex Gemini hay không. Lệnh này sẽ sử dụng 4 ping gửi đến us-central1-aiplatform.googleapis.com, vì vậy, chúng ta sẽ nhận được phản hồi từ địa chỉ công khai của API.
ping -c 4 us-central1-aiplatform.googleapis.com
  1. Chúng ta sẽ quay lại để thử nghiệm máy ảo này sau. Đóng phiên SSH và tiếp tục.

6. Nhiệm vụ 4. Tạo điểm cuối PSC đến googleapis bằng Terraform

Để bật kết nối riêng tư với điểm cuối Vertex API, chúng tôi sẽ tạo một điểm cuối Private Service Connect cho các API của Google. Việc này sẽ cho phép chúng ta sử dụng địa chỉ IP riêng tư mà chúng ta đã chỉ định để định tuyến lưu lượng truy cập đến các API của Google mà chúng ta cần, trong trường hợp này là Vertex.

  1. Mở Cloud Shell trong chế độ xem trình chỉnh sửa nếu chưa mở. Chúng ta sẽ tạo những thành phần sau:
  • Tạo IP cho điểm cuối PSC 192.168.255.250 (resource "google_compute_global_address" "default")
  • Tạo điểm cuối PSC đến các API của Google (resource "google_compute_global_forwarding_rule" "default"))

Mở tệp psc.tf trong thư mục terraform-build. Thêm mã sau vào tệp.

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. Chuyển sang Dòng lệnh Cloud Shell, đảm bảo bạn đang ở trong thư mục terraform-build. Sau đó, hãy chạy terraform init. Sau đó, hãy chạy terraform plan. Thao tác này sẽ cho bạn thấy 2 mục sẽ được thêm,
    sau đó chạy terraform apply và nhập yes để tạo điểm cuối API của Google cho IP và PSC.
  2. Xác minh có tồn tại điểm cuối
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

7. Nhiệm vụ 5. Xác minh khả năng kết nối của thiết bị đầu cuối qua địa chỉ IP

Hãy kết nối bằng điểm cuối riêng tư để kết nối với Gemini.

  1. Chuyển đến Phiên bản máy ảo py-vm1. Chọn SSH và SSH vào máy ảo
  2. Lấy quyền truy cập thư mục gốc bằng cách nhập sudo -i
  3. Chúng ta sẽ chỉ sử dụng thực thể riêng lẻ này để kiểm thử điểm cuối PSC, vì vậy chúng ta sẽ sửa đổi tệp máy chủ bằng mục nhập sau
echo 192.168.255.250 us-central1-aiplatform.googleapis.com >> /etc/hosts

cat /etc/hosts
  1. Kiểm tra đường dẫn kết nối đến us-central1-aiplatform.googleapis.com bằng cách sử dụng lệnh ping. Thao tác này sẽ ping địa chỉ IP mà bạn đã nhập vào các tệp lưu trữ. Đây là điểm cuối PSC và ping của bạn sẽ không thành công.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. Quay lại bảng điều khiển và mở một thực thể khác của Phiên bản máy ảo py-vm1. Chọn SSH và SSH vào máy ảo
  2. Lấy quyền truy cập thư mục gốc bằng cách nhập sudo -i
  3. Chạy lệnh sau để xem khả năng kết nối trong một tệp kết xuất TTCP
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
  1. Bây giờ, hãy chuyển về phiên bản SSH đầu tiên của Phiên bản máy ảo py-vm1
  2. Kích hoạt môi trường bằng
cd py-gem-env
source env/bin/activate
  1. Bây giờ, hãy kiểm thử python. Nhập ipython để kích hoạt giao diện ipython. Lần này, lưu lượng truy cập sẽ đi qua điểm cuối PSC.
ipython
  1. Bây giờ, hãy sao chép và dán nội dung sau. Câu lệnh này yêu cầu Gemini trả lời câu hỏi "Biểu trưng của Google có những màu nào?" và "Mô tả Thác Niagara". Thay thế enter-your-project-id-here bằng mã dự án trong dấu ngoặc kép
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. Nhấn Enter để chạy và xem kết quả.
  2. Chuyển trở lại phiên bản thứ hai của Phiên bản máy ảo py-vm1. Bạn sẽ thấy kết quả của TCPDUMP. Bạn sẽ thấy các mục In và Ra có địa chỉ IP của máy ảo cũng như địa chỉ IP của điểm cuối PSC để kết nối với 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. Đóng tất cả các phiên SSH vào Phiên bản máy ảo py-vm1

8. Nhiệm vụ 6. Tạo mục nhập DNS thủ công vào googleapis bằng Terraform (Không bắt buộc)

Bạn có thể tạo mục nhập DNS theo cách thủ công để trỏ đến điểm cuối PSC bằng DNS riêng tư. Việc này sẽ ảnh hưởng đến tất cả các mạng mà bạn chỉ định.

  1. Chuyển đến Dịch vụ mạng rồi chọn Cloud DNS.
  2. Trong các vùng, bạn sẽ thấy một vùng được tạo tự động cho Private Service Connect dành cho các API của Google cùng với thư mục dịch vụ loại vùng. Bạn có thể dùng URL này để kết nối với điểm cuối PSC có định dạng **SERVICE-ENDPOINT.p.googleapis.com Ví dụ: aiplatform-pscvertexgemini.p.googleapis.com
  3. Trong trường hợp này, chúng ta muốn tạo một mục nhập DNS riêng tư theo cách thủ công. Cấu hình sẽ như sau
  • Tạo một vùng DNS riêng tư có tên "googleapis-private" cho "googleapis.com" và hạn chế vùng này ở mạng "python-net".
  • Thêm bản ghi A để liên kết "googleapis.com" với địa chỉ IP "192.168.255.250".
  • Thêm bản ghi CNAME để chuyển hướng tất cả miền con của "googleapis.com" (ví dụ: www.googleapis.com) đến "googleapis.com".
  1. Mở Cloud Shell trong chế độ xem trình chỉnh sửa nếu chưa mở. Mở tệp dns.tf trong thư mục terraform-build. Thêm mã sau vào tệp.

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. Chuyển sang Dòng lệnh Cloud Shell, đảm bảo bạn đang ở trong thư mục terraform-build. Sau đó chạy terraform plan. Thao tác này sẽ cho bạn biết những mục sẽ được thêm vào,
    Sau đó chạy terraform apply và nhập yes để tạo mục nhập DNS riêng tư.
  2. Bạn sẽ thấy một thiết lập có bản ghi ACNAME như sau, xem b7f122f0d1fd2850.png
  3. Tiếp theo, chúng ta xác minh khả năng kết nối với những thay đổi này trên py-vm2

9. Nhiệm vụ 7. Xác minh khả năng kết nối của thiết bị đầu cuối qua địa chỉ IP (Không bắt buộc)

Hãy kết nối bằng điểm cuối riêng tư để kết nối với Gemini.

  1. Chuyển đến Phiên bản máy ảo py-vm2. Chọn SSH và SSH vào máy ảo
  2. Nhập sudo -i để có quyền truy cập thư mục gốc
  3. Kiểm tra đường dẫn kết nối đến us-central1-aiplatform.googleapis.com bằng lệnh ping. Thao tác này sẽ ping địa chỉ IP trong DNS riêng tư, bản ghi A cho googleapis. IP này là một điểm cuối PSC và ping của bạn sẽ không thành công.
ping -c 2 us-central1-aiplatform.googleapis.com
  1. Kiểm tra đường dẫn kết nối bằng ping bằng cách sử dụng mục nhập DNS được tạo tự động cho các API PSC của Google bằng aiplatform-pscvertexgemini.p.googleapis.com. Địa chỉ này trỏ đến địa chỉ IP của điểm cuối PSC và các ping của bạn sẽ không thành công.
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
  1. Kiểm tra đường dẫn kết nối đến us-central1-aiplatform.googleapis.com bằng lệnh dig. Đây phải là địa chỉ IP của điểm cuối PSC.
dig us-central1-aiplatform.googleapis.com
  1. Quay lại bảng điều khiển và mở một phiên bản khác của Phiên bản máy ảo py-vm2. Chọn SSH và SSH vào máy ảo
  2. Lấy quyền truy cập thư mục gốc bằng cách nhập sudo -i
  3. Chạy lệnh sau để xem khả năng kết nối trong tệp báo lỗi TCP
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
  1. Bây giờ, hãy chuyển về phiên bản SSH đầu tiên của Phiên bản máy ảo py-vm2
  2. Kích hoạt môi trường bằng
cd py-gem-env
source env/bin/activate
  1. Bây giờ, hãy kiểm thử python. Nhập ipython để kích hoạt giao diện ipython.
ipython
  1. Bây giờ, hãy sao chép và dán nội dung sau. Câu lệnh này yêu cầu Gemini trả lời "Biểu trưng của Google có tất cả bao nhiêu màu" và "Gemini pro có hai tính năng gì". Thay thế enter-your-project-id-here bằng mã dự án của bạn trong dấu ngoặc kép
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. Nhấn enter để chạy và xem kết quả.
  2. Chuyển về phiên bản thứ hai của Phiên bản máy ảo py-vm2. Bạn sẽ thấy kết quả của TCPDUMP. Bạn sẽ thấy các gói dữ liệu đến và đi và địa chỉ IP của máy ảo đang sử dụng địa chỉ IP của điểm cuối PSC để kết nối với us-central1-aiplatform.googleapis.com

Đóng tất cả phiên SSH tới Thực thể máy ảo py-vm2

10. Dọn dẹp

  1. Truy cập Cloud Shell đảm bảo bạn đang ở trong thư mục terraform-build cd terraform-build, chạy lệnh sau terraform destroy rồi nhập yes tất cả tài nguyên bạn đã tạo trong dự án bằng Terraform sẽ bị xoá.

11. Xin chúc mừng

Xin chúc mừng! Bạn đã kết nối thành công với cuộc trò chuyện trên Vertex Gemini bằng cả địa chỉ API công khai và điểm cuối Private Service Connect riêng tư cho các API của Google. Chức năng này có thể mở rộng khả năng kết nối API riêng tư vào môi trường đám mây tại cơ sở/khác của bạn được kết nối qua (Kết nối, Kết nối đám mây và Kết nối đám mây).

Các bước tiếp theo / Tìm hiểu thêm

Bạn có thể đọc thêm về mạng Vertex AI

Lớp học lập trình: Truy cập Config Anthropic trên Vertex AI bằng sdk python thông qua điểm cuối Private Service Connect

Làm bài tập trong lớp học tiếp theo

Tiếp tục nhiệm vụ của bạn với Google Cloud và tham khảo các phòng thí nghiệm khác sau đây về Google Cloud Skills Boost: