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

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

Thông tin về lớp học lập trình này

subjectLần cập nhật gần đây nhất: thg 10 29, 2024
account_circleTác giả: Ammett Williams & Sampath Kumar Maddula

1. Tổng quan

Bạn có thể truy cập vào API Vertex AI qua 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 qua Internet. Trong lớp học này, trước tiên, bạn sẽ truy cập vào API trò chuyện Vertex Gemini thông qua sdk python chạy trên một phiên bản 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ấu hình sẽ là sự kết hợp giữa Terraform, gcloud và bảng điều khiển.

Trong lớp học lập trình này, bạn sẽ tạo mẫu sau.

Hình 1.

8b283cc5684283c2.png

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 Gemini Chat thông qua 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 một dự án mới hoặc sử dụng lại một 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 cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. 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 bị tính phí sau khi hoàn tất hướng dẫn này, bạn có thể xoá các tài nguyê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 Bảng điều khiển Google Cloud, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ trên cùng bên phải:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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 mọi thao tá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 terraform

Chúng ta sẽ tạo một VPC tuỳ chỉnh có quy tắc 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 ở đầu bảng điều khiển ở bên phải, đảm bảo bạn thấy mã dự án chính xác trong Cloud Shell, xác nhận mọi lời nhắc để cho phép truy cập. 4261e776f64ea978.png
  2. Tạo một thư mục có tên là terraform-build và di chuyển đến 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 Tường lửa

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

  1. Sao chép và dán nội dung sau 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. Chuyển về cửa sổ dòng lệnh Cloud Shell, đảm bảo bạn đang ở thư mục terraform-build cd terraform-build và chạy các lệnh sau

terraform init

Khởi chạy 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.

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 từ bên ngoài, vì vậy, hãy tạo một cổng Cloud NAT và đính kèm cổng đó.

  1. Mở Cloud Shell, chuyển đến thư mục terraform-build và tạo các tệp sau (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 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 thông tin này để 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 vm 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 thử nghiệm nhanh để xem chúng ta có thể kết nối với API Vertex Gemini hay không. API này sử dụng us-central1-aiplatform.googleapis.com, vì vậy, chúng ta sẽ thực hiện dig đến địa chỉ đó để xem cách định tuyến lưu lượng truy cập.
dig us-central1-aiplatform.googleapis.com
  1. Bạn sẽ thấy nội dung tương tự (địa chỉ sẽ khác). Lưu ý rằng đường dẫn này là thông qua địa chỉ IP công khai vì API 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 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()  

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 bằng cùng một cấu hình

  1. Chuyển đến các phiên bản 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 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 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 đến us-central1-aiplatform.googleapis.com để chúng ta 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 để kiểm thử 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 khả năng kết nối riêng tư với điểm cuối API Vertex, chúng ta sẽ tạo một điểm cuối Private Service Connect cho các API của Google. Điều này 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 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 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 điểm cuối có tồn tại hay không
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 điểm 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. Nhập sudo -i để có quyền truy cập thư mục gốc
  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ủ lưu trữ 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 lệnh ping. Thao tác này sẽ ping địa chỉ IP bạn đã nhập vào tệp máy chủ 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 phiên bản khác của Phiên bản máy ảo py-vm1. Chọn SSH rồi SSH vào máy ảo
  2. Nhập sudo -i để có quyền truy cập thư mục gốc
  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-vm1
  2. Kích hoạt env bằng cách sử dụ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 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
= "Describe Niagara Falls"
print(get_chat_response(chat_session, prompt))
  1. Nhấn phím 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-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ả phiên SSH tới Thực thể 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 cho chiến dịch đó.

  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 cho API của Google, với thư mục dịch vụ loại vùng. Bạn có thể dùng giá trị này để kết nối với điểm cuối PSC theo đị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 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 đó, hãy chạy terraform plan để xem những mục sẽ được thêm,
    Sau đó, hãy 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 chế độ thiết lập có bản ghi ACNAME như sau, hãy 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 điểm 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 rồi SSH vào máy ảo
  2. Nhập sudo -i để có quyền truy cập thư mục gốc
  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 env bằng cách sử dụ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 phím 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. Chuyển đến Cloud Shell, đảm bảo bạn đang ở trong thư mục terraform-build cd terraform-build và 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 chỗ/môi trường đám mây khác được kết nối thông qua (Kết nối, Kết nối nhiều đám mây và VPC).

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

Bạn có thể đọc thêm về khả năng kết nối của Vertex AI

Lớp học lập trình: Truy cập Anthropic Claude trên Vertex AI bằng python sdk 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 hành trình khám phá của bạn với Google Cloud và tham khảo các lớp học khác trên Google Cloud Skills Boost: