1. Tổng quan
Bạn có thể truy cập Vertex AI API qua Internet. Tuy nhiên, trong doanh nghiệp của mình, bạn có thể muốn truy cập riêng vào Vertex AI API 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 Anthropic Claude trên Vertex 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 Googleapis 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 Vertex API.
Trong lớp học lập trình này, bạn sẽ tạo mẫu sau.
Hình 1.
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 Anthropic Claude 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
- Định cấu hình mục nhập DNS thủ công
- Xác minh đường dẫn kết nối đến Googleais
Thiết lập phòng thí nghiệm
Thiết lập môi trường theo tốc độ của riêng bạn
- Đă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.
- 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.
- 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:
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 quá trình này hoàn tất, bạn sẽ thấy như sau:
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 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
Chúng ta sẽ tạo một VPC tuỳ chỉnh có Quy tắc về tường lửa. Nếu đã có VPC và Dự án, bạn có thể bỏ qua phần này.
Mở Cloud Shell ở đầu bảng điều khiển ở bên phải. Và định cấu hình như sau:
- Bật một số API mà chúng ta sẽ sử dụng trong lớp học này
gcloud services enable dns.googleapis.com gcloud services enable aiplatform.googleapis.com gcloud services enable servicedirectory.googleapis.com
- Đặt một số biến. Các biến này là Mã dự án và Mã mạng của VPC tuỳ chỉnh (bạn sẽ tạo VPC ở bước 4).
projectid=$(gcloud config get-value project) networkid=anthropic-net echo $projectid echo $networkid clear
- Bây giờ, hãy tạo một VPC tuỳ chỉnh có tên là anthropic-net.
gcloud compute networks create $networkid \ --project=$projectid \ --subnet-mode=custom \ --mtu=1460 \ --bgp-routing-mode=global
- Tạo vm1-subnet trong VPC mới
gcloud compute networks subnets create vm-subnet \ --project=$projectid --range=10.0.88.0/24 \ --stack-type=IPV4_ONLY --network=$networkid \ --region=us-east1
- Thêm quy tắc tường lửa ICMP vào VPC
gcloud compute firewall-rules create $networkid-allow-icmp --project=$projectid \ --network=$networkid \ --description="Allows ICMP connections from any source to any instance on the network." \ --direction=INGRESS \ --priority=65534 \ --source-ranges=0.0.0.0/0 \ --action=ALLOW \ --rules=icmp
- Thêm quy tắc tường lửa SSH vào VPC
gcloud compute firewall-rules create $networkid-allow-ssh \ --project=$projectid \ --network=$networkid \ --description="Allows TCP connections from any source to any instance on the network using port 22." \ --direction=INGRESS --priority=65534 \ --source-ranges=0.0.0.0/0 --action=ALLOW \ --rules=tcp:22
4. Nhiệm vụ 2. Bật Anthropic trong vườn mô hình Vertex
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 đó.
- Chuyển đến Vertex AI rồi chọn Model Garden (Vườn mô hình)
- Tìm Anthropic rồi chọn Claude 3.5 Sonnet
- Chọn Bật, bạn sẽ được yêu cầu điền một số thông tin. Điền thông tin vào biểu mẫu rồi chọn Tiếp theo
- Trên trang cuối cùng, hãy chọn Đồng ý để bật Claude 3.5 Sonnet
5. Nhiệm vụ 3. Tạo cổng NAT và máy ảo
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 đó.
Trong Cloud Shell, hãy sử dụng các lệnh sau
- Tạo Cloud NAT.
gcloud compute routers create anthro-out-nat \ --network $networkid \ --region us-east1
- Tạo cổng NAT trên đám mây.
gcloud compute routers nats create anthro-out-nat-gw \
--router-region us-east1 \
--router anthro-out-nat \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
Bây giờ, hãy tạo một máy ảo để truy cập vào Anthropic trên Vertex AI thông qua SDK Python.
Chúng ta sẽ tạo một máy ảo để kiểm thử với các gói sau đây được cài đặt
- Trong cùng một phiên shell trên đám mây, hãy tạo anthro-vm bằng cách sử dụng lệnh sau.
gcloud compute instances create anthro-vm \
--project=$projectid \
--zone=us-east1-b \
--network-interface=stack-type=IPV4_ONLY,subnet=vm-subnet,no-address,network=$networkid \
--metadata startup-script="#! /bin/bash
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-anthro-env
cd ~/py-anthro-env
python3 -m venv env
source env/bin/activate
pip install -U ipython google-cloud-aiplatform 'anthropic[vertex]'"
Bạn sẽ thấy một máy ảo được tạo mà không có địa chỉ IP công khai. Bây giờ, hãy định cấu hình máy ảo
6. Nhiệm vụ 4. Định cấu hình máy ảo và kiểm thử
- Chuyển đến các phiên bản máy ảo. Chọn máy ảo bắt đầu bằng anthro-vm. Chọn SSH.
- Sau khi bạn SSH vào anthro-vm, hãy bật quyền truy cập thư mục gốc bằng cách nhập
sudo -i
- Kích hoạt môi trường venv:
cd py-anthro-env
source env/bin/activate
- 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
- 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.
- Khi bạn thấy phần chọn sao chép sau đây, hãy chuyển về phiên vm anthro-vm 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.
- 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-east5-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-east5-aiplatform.googleapis.com
- Bạn sẽ thấy nội dung tương tự (địa chỉ sẽ khác). Xin 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.
; <<>> DiG 9.16.48-Debian <<>> us-east5-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-east5-aiplatform.googleapis.com. IN A
;; ANSWER SECTION:
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.210.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.211.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.212.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.213.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.215.95
us-east5-aiplatform.googleapis.com. 300 IN A 173.194.216.95
us-east5-aiplatform.googleapis.com. 300 IN A 108.177.12.95
us-east5-aiplatform.googleapis.com. 300 IN A 108.177.13.95
us-east5-aiplatform.googleapis.com. 300 IN A 74.125.26.95
- Bây giờ, hãy sử dụng python. Nhập
ipython
để kích hoạt giao diện ipython.
ipython
- Bây giờ, hãy sao chép và dán nội dung sau. Câu lệnh này sẽ hỏi Claude "Thế vận hội 2024 được tổ chức ở đâu!" . Lưu ý: Thay thế
YOUR-Project-ID-Here
bằng tên của mã dự án
from anthropic import AnthropicVertex
project_id = "YOUR-Project-ID-Here"
region = "us-east5"
client = AnthropicVertex(project_id=project_id, region=region)
message = client.messages.create(
model="claude-3-5-sonnet@20240620",
max_tokens=100,
messages=[
{
"role": "user",
"content": "Where is the olympics being held in 2024!",
}
],
)
print(message)
- Nhấn Enter để chạy và xem kết quả.
- Yêu cầu này đã truy cập vào Anthropic thông qua API công khai của Vertex.
- Đóng phiên SSH để tiếp tục.
7. Nhiệm vụ 5. Tạo điểm cuối PSC đến googleapis
Để 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 googleapis. Đ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 googleapis mà chúng ta cần, trong trường hợp này là Vertex Gemini.
- Mở Cloud Shell nếu chưa mở. Tạo IP cho điểm cuối PSC. Trong trường hợp này, chúng ta sẽ sử dụng 192.168.255.230.
gcloud compute addresses create anthro-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=192.168.255.230 \
--network=$networkid
- Xác minh IP đã tạo
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
- Tiếp theo, hãy tạo điểm cuối PSC
gcloud compute forwarding-rules create pscanthrovertex \
--global \
--network=$networkid \
--address=anthro-ip \
--target-google-apis-bundle=all-apis
- Thao tác này sẽ tạo một điểm cuối và một mục nhập thư mục dịch vụ. Xác minh điểm cuối có tồn tại hay không
gcloud compute forwarding-rules describe pscanthrovertex --global
8. Nhiệm vụ 6. Xác minh khả năng kết nối của điểm cuối thông qua vùng thư mục dịch vụ tự động
Hãy kết nối bằng điểm cuối riêng tư để kết nối với Gemini.
- Chuyển đến Phiên bản máy ảo anthro-vm1. Chọn SSH và SSH vào máy ảo
- Nhập
sudo -i
để có quyền truy cập thư mục gốc - Kiểm tra đường dẫn kết nối đến aiplatform-pscanthrovertex.p.googleapis.com bằng lệnh
dig
. Bạn sẽ thấy địa chỉ IP của điểm cuối PSC
dig aiplatform-pscanthrovertex.p.googleapis.com
9. Nhiệm vụ 7. Tạo mục nhập DNS thủ công vào googleapis (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 đó.
- Chuyển đến Dịch vụ mạng rồi chọn Cloud DNS.
- 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 URL 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
- 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. Chuyển đến Cloud DNS rồi chọn Tạo vùng
- Định cấu hình như sau
Cấu hình | Tên |
Loại vùng | Riêng tư |
Tên khu vực | googleapis-private |
Tên DNS | googleapis.com |
Thêm mạng (chọn xong khi thêm) | mạng lưới nhân học |
Cách hoàn tất thao tác chọn | Tạo |
- Trong khu vực Thông tin chi tiết về vùng, hãy chọn Thêm tiêu chuẩn để thêm Bản ghi A
Cấu hình | Tên |
Loại bản ghi tài nguyên | A |
Địa chỉ IPv4 (thêm địa chỉ IP của điểm cuối) | 192.168.255.230 |
Cách hoàn tất thao tác chọn | Tạo |
- Trong khu vực Thông tin chi tiết về vùng, hãy chọn Thêm tiêu chuẩn để thêm bản ghi CNAME
Cấu hình | Tên |
Tên DNS | * |
Loại tài nguyên bản ghi | CNAME |
Tên chính tắc 1 | googleapis.com |
Cách hoàn tất thao tác chọn | Tạo |
- Bạn sẽ thấy một chế độ thiết lập có bản ghi A và CNAME như sau, hãy xem
- 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 anthro-vm
10. Nhiệm vụ 8. Xác minh khả năng kết nối đ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.
- Chuyển đến Phiên bản máy ảo anthro-vm. Chọn SSH và SSH vào máy ảo
- Nhập
sudo -i
để có quyền truy cập thư mục gốc - Kiểm tra đường dẫn kết nối đến us-east5-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-east5-aiplatform.googleapis.com
- 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ằngaiplatform-pscanthrovertex.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-pscanthrovertex.p.googleapis.com
- Kiểm tra đường dẫn kết nối đến us-east5-aiplatform.googleapis.com bằng lệnh
dig
. Đây phải là địa chỉ IP của điểm cuối PSC.
dig us-east5-aiplatform.googleapis.com
- 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 anthro-vm. Chọn SSH rồi SSH vào máy ảo
- Nhập
sudo -i
để có quyền truy cập thư mục gốc - 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-east5-aiplatform.googleapis.com
- Bây giờ, hãy chuyển về thực thể SSH đầu tiên của Thực thể máy ảo anthro-vm
- Kích hoạt env bằng cách sử dụng
cd py-gem-env
source env/bin/activate
- Bây giờ, hãy kiểm thử python. Nhập
ipython
để kích hoạt giao diện ipython.
ipython
- Bây giờ, hãy sao chép và dán nội dung sau. Thao tác này sẽ hỏi Claude "Roti là gì?". Lưu ý: Thay thế
YOUR-Project-ID-Here
bằng tên của mã dự án
from anthropic import AnthropicVertex
project_id = "YOUR-Project-ID-Here"
region = "us-east5"
client = AnthropicVertex(project_id=project_id, region=region)
message = client.messages.create(
model="claude-3-5-sonnet@20240620",
max_tokens=100,
messages=[
{
"role": "user",
"content": "What is a roti?",
}
],
)
print(message)
- Nhấn phím enter để chạy và xem kết quả.
- Chuyển về thực thể thứ hai của Thực thể máy ảo anthro-vm. Bạn sẽ thấy kết quả của TCPDUMP. Bạn sẽ thấy các gói dữ liệu đi vào và đi ra, cũng như đị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-east5-aiplatform.googleapis.com
Đóng tất cả phiên SSH tới Thực thể máy ảo anthro-vm
11. Xin chúc mừng
Xin chúc mừng! Bạn đã kết nối thành công với Anthropic trên Vertex bằng cả địa chỉ API công khai và riêng tư bằng Điểm cuối kết nối dịch vụ riêng tư cho Googleapis. 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).
Dọn dẹp
gcloud compute instances delete anthro-vm --zone=us-east1-b --quiet
gcloud compute routers nats delete anthro-out-nat-gw --router=anthro-out-nat --region=us-east1 --quiet
gcloud compute routers delete anthro-out-nat --region=us-east1 --quiet
gcloud compute firewall-rules delete anthropic-net-allow-icmp anthropic-net-allow-ssh --quiet
gcloud compute forwarding-rules delete pscanthrovertex --global
gcloud dns record-sets delete googleapis.com. --zone googleapis-private --type A
gcloud dns record-sets delete *.googleapis.com --zone googleapis-private --type CNAME
gcloud dns managed-zones delete googleapis-private
gcloud compute addresses delete anthro-ip --global
gcloud compute networks subnets delete vm-subnet --region=us-east1 --quiet
gcloud compute networks delete anthropic-net --quiet
Bạn có thể đọc thêm về khả năng kết nối của Vertex AI