1. Omówienie
Do interfejsu Vertex AI API można uzyskać dostęp przez internet, ale w Twojej firmie możesz chcieć uzyskać dostęp do interfejsu Vertex AI API prywatnie, bez korzystania z internetu. W tym module zaczniesz korzystać z interfejsu Vertex Gemini Chat API za pomocą pakietu SDK Pythona uruchomionego w instancji maszyny wirtualnej przez publiczny internet.
Następnie utwórz punkt końcowy usługi Private Service Connect dla interfejsów Google API i zmień przepływ ruchu, aby używać prywatnego punktu końcowego do łączenia się z interfejsem API czatu Gemini. Konfiguracje będą kombinacją Terraform, gcloud i konsoli.
W tym module utworzysz następujący wzorzec.
Rysunek1.
2. Cel
Z tego modułu nauczysz się, jak:
- Konfigurowanie maszyny wirtualnej do korzystania z pakietu SDK Pythona
- Połącz się z czatem z Gemini za pomocą skryptu Pythona
- Skonfiguruj punkt końcowy PSC, aby połączyć się z Googleapis
- Sprawdzanie ścieżki łączności z Googleais
- Konfigurowanie ręcznych wpisów DNS
Konfiguracja środowiska w samodzielnym tempie
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. Jest to ciąg znaków, którego nie używają interfejsy API Google. Zawsze możesz ją zaktualizować.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po jego ustawieniu nie można go zmienić). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie ma znaczenia, jaki to ciąg. W większości laboratoriów z kodem trzeba podać identyfikator projektu (zwykle oznaczony jako
PROJECT_ID
). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować inny losowy. Możesz też spróbować własnych sił i sprawdzić, czy jest dostępna. Po wykonaniu tej czynności nie można jej już zmienić. Pozostanie ona przez cały czas trwania projektu. - Informacyjnie: istnieje jeszcze 3 wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Cloud/interfejsów API. Przejście przez ten samouczek nie będzie wiązać się z wielkimi kosztami, jeśli w ogóle będą jakieś. Aby wyłączyć zasoby i uniknąć obciążenia opłatami po zakończeniu samouczka, możesz usunąć utworzone zasoby lub usunąć projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.
Uruchom Cloud Shell
Google Cloud można obsługiwać zdalnie z laptopa, ale w tym ćwiczeniu będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:
Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po jego zakończeniu powinno wyświetlić się coś takiego:
Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie poprawia wydajność sieci i uwierzytelnianie. Wszystkie zadania w ramach tego ćwiczenia z programowania można wykonywać w przeglądarce. Nie musisz niczego instalować.
3. Zadanie 1. Skonfiguruj środowisko z Terraform
Utworzymy niestandardową sieć VPC z regułami zapory sieciowej i podsiecią. Otwórz konsolę Google Cloud i wybierz projekt, którego będziesz używać.
- Otwórz Cloud Shell u góry konsoli po prawej stronie. Sprawdź, czy w Cloud Shell wyświetla się prawidłowy identyfikator projektu. Jeśli wyświetli się prośba o zezwolenie na dostęp, potwierdź, że go nie widzisz.
- Utwórz folder o nazwie terraform-build i przejdź do niego
mkdir terraform-build && cd terraform-build
- Utwórz pliki main.tf i variable.tf.
touch main.tf variable.tf
- Przełącz się na widok Edytor Cloud Shell. Wybierz Edytor i potwierdź wyświetlone prompty, aby umożliwić wczytanie interfejsu.
- Po załadowaniu przejdź do Plik > Otwórz folder, przejdź do folderu /home/nazwa_użytkownika/terraform-build i kliknij OK, aby otworzyć folder w edytorze.
- Wybierz plik variable.tf i dodaj te informacje. Zastąp tekst
your-project-id-here
swoim identyfikatorem projektu w cudzysłowie.
variable "project_id" { type = string default = "your-project-id-here" } variable "network_id" { type = string default = "python-net" }
- Następnie otwórz plik main.tf. Dodamy kod Terraform, aby wykonywać różne działania zgodnie z poniższym opisem.
Włączanie interfejsów API |
|
Utworzenie sieci VPC o nazwie python-net |
|
Dodawanie podsieci |
|
Dodawanie 2 reguł zapory sieciowej |
|
- Skopiuj i wklej ten kod do głównego pliku .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"] }
- Wróć do terminala Cloud Shell i upewnij się, że jesteś w katalogu
cd terraform-build
terraform-build. Następnie uruchom te polecenia.
terraform init
Inicjuje katalog roboczy. Ten krok umożliwia pobranie dostawców wymaganych w przypadku danej konfiguracji.
terraform plan
Tworzy plan wykonania, który pokazuje, jakie działania Terraform wykona, aby wdrożyć Twoją infrastrukturę.
- Teraz, aby utworzyć zasoby, uruchom polecenie
terraform apply
i wpiszyes
.
4. Zadanie 2. Tworzenie bramy NAT i maszyn wirtualnych za pomocą Terraform
Musimy przyznać wychodzący zewnętrzny dostęp do internetu, aby umożliwić utworzenie i podłączenie bramy Cloud NAT.
- Otwórz Cloud Shell, przejdź do folderu terraform-build i utwórz wymienione poniżej pliki (łącznie 3 pliki). Będziemy je później zmieniać.
touch nat-vm.tf psc.tf dns.tf
- Przejdź do widoku edytora Cloud Shell i wybierz plik nat-vm.tf, a następnie dodaj podany niżej kod Terraform. Spowoduje to utworzenie bramy NAT i dwóch maszyn wirtualnych.
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
}
- Przełącz się na terminal Cloud Shell, sprawdź, czy jesteś w folderze terraform-build, a następnie uruchom polecenie
terraform plan
. Spowoduje to dodanie 4 elementów. Następnie uruchom polecenieterraform apply
i wpiszyes
, aby utworzyć bramę NAT i 2 maszyny wirtualne.
5. Zadanie 3. Konfigurowanie maszyn wirtualnych i testowanie
- Przejdź do instancji maszyn wirtualnych. Wybierz maszynę wirtualną rozpoczynający się od py-vm1. Wybierz SSH.
- Po połączeniu SSH z py-vm1 włącz roota,wpisując
sudo -i
- Aktywuj środowisko venv:
cd py-gem-env
source env/bin/activate
- Teraz zweryfikuj to, aby później przeprowadzić testy. Uruchom to polecenie w maszynie wirtualnej i w razie potrzeby naciśnij y.
gcloud auth application-default login
- Następnie skopiuj adres URL, który zaczyna się od https://, otwórz nową kartę w oknie przeglądarki laboratorium i wklej adres URL. Zaakceptuj wyświetlone instrukcje.
- Gdy zobaczysz ten fragment kodu, przełącz się z powrotem do sesji vm py-vm1 i w miejscu Wpisz kod autoryzacji wklej skopiowany kod i naciśnij Enter, aby uwierzytelnić.
- Wykonajmy teraz krótki test, aby sprawdzić, czy uda się połączyć z interfejsem Vertex Gemini API. Korzysta on z us-central1-aiplatform.googleapis.com, więc użyjemy do niego
dig
, aby sprawdzić, jak ruch jest kierowany.
dig us-central1-aiplatform.googleapis.com
- Powinien pojawić się podobny ekran (adres będzie inny). Pamiętaj, że ścieżka prowadzi przez publiczne adresy IP, ponieważ interfejs API jest publicznym interfejsem API. NIE KOPIUJ
; <<>> 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
- Teraz użyjmy Pythona. Wpisz
ipython
, aby aktywować interfejs ipythona.
ipython
- Skopiuj i wklej ten tekst. Gemini zapyta: „Jakie są wszystkie kolory logo Google” i „Jaki jest kolor nieba”. Zastąp
enter-your-project-id-here
identyfikatorem projektu w cudzysłowach
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))
- Naciśnij Enter, aby uruchomić test i zobaczyć wynik.
- To żądanie uzyskało dostęp do Vertex za pomocą publicznego interfejsu API.
- Zamknij sesję SSH i kontynuuj.
Teraz skonfiguruj py-vm2 z tymi samymi konfiguracjami
- Przejdź do instancji maszyn wirtualnych. Wybierz maszynę wirtualną, której nazwa zaczyna się od py-vm2. Wybierz SSH.
- Po nawiązaniu połączenia SSH z py-vm2 włącz root, wpisując **
sudo -i
** - Aktywuj środowisko venv:
cd py-gem-env
source env/bin/activate
- Uwierzytelnijmy to, by przeprowadzić trochę testów później. Uruchom to polecenie w maszynie wirtualnej
gcloud auth application-default login
- Następnie skopiuj adres URL, który zaczyna się od https://, otwórz nową kartę w oknie przeglądarki laboratorium i wklej adres URL. Zaakceptuj wyświetlone instrukcje.
- Gdy zobaczysz ten fragment kodu, przełącz się z powrotem do sesji vm py-vm2 i w miejscu Wpisz kod autoryzacji wklej skopiowany kod i naciśnij Enter, aby uwierzytelnić.
- Wykonajmy teraz krótki test, aby sprawdzić, czy uda się połączyć z interfejsem Vertex Gemini API. To polecenie użyje 4 pingów do adresu us-central1-aiplatform.googleapis.com, więc otrzymamy odpowiedź z publicznego adresu interfejsu API.
ping -c 4 us-central1-aiplatform.googleapis.com
- Wrócimy później, aby przetestować tę maszynę wirtualną. Zamknij sesję SSH i kontynuuj.
6. Zadanie 4. Tworzenie punktu końcowego PSC dla googleapis za pomocą Terraform
Aby umożliwić prywatne połączenie z punktem końcowym interfejsu Vertex API, utworzymy punkt końcowy Private Service Connect dla interfejsów Google API. Umożliwi nam to używanie prywatnego adresu IP, który przypiszemy do kierowania ruchu do interfejsów API Google, których potrzebujemy, w tym przypadku Vertex.
- Otwórz Cloud Shell w widoku edytora, jeśli jeszcze nie jest otwarty. Utworzymy te elementy:
- Utwórz adres IP dla punktu końcowego PSC 192.168.255.250 (
resource "google_compute_global_address" "default")
- Utwórz punkt końcowy PSC dla interfejsów API Google (
resource "google_compute_global_forwarding_rule" "default")
Otwórz plik psc.tf w folderze terraform-build. Dodaj poniższy kod do pliku.
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 = ""
}
- Przełącz się na terminal Cloud Shell i sprawdź, czy jesteś w folderze
terraform-build
. Następnie uruchomterraform init
. Następnie uruchomterraform plan
. W ten sposób zobaczysz, że zostaną dodane 2 elementy.
Następnie uruchomterraform apply
i wpiszyes
, aby utworzyć punkt końcowy interfejsu IP i PSC Google. - Weryfikacja istnienia punktu końcowego
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global
7. Zadanie 5. Sprawdzanie łączności punktu końcowego za pomocą adresu IP
Połączmy się z Gemini za pomocą prywatnego punktu końcowego.
- Otwórz maszynę wirtualną py-vm1. Wybierz SSH i połącz się z maszyną wirtualną za pomocą SSH
- Aby uzyskać dostęp na poziomie roota, wpisz
sudo -i
. - Użyjemy tej instancji tylko do przetestowania punktu końcowego PSC, więc zmodyfikujemy plik hosta, dodając ten wpis:
echo 192.168.255.250 us-central1-aiplatform.googleapis.com >> /etc/hosts
cat /etc/hosts
- Sprawdź ścieżkę łączności do adresu us-central1-aiplatform.googleapis.com, używając polecenia
ping
. Spowoduje to wysłanie pinga do adresu IP podanego w plikach hosta. To jest punkt końcowy PSC, więc pingi nie będą działać.
ping -c 2 us-central1-aiplatform.googleapis.com
- Wróć do konsoli i otwórz kolejną instancję instancji maszyny wirtualnej py-vm1. Wybierz SSH i połącz się z maszyną wirtualną przez SSH
- Aby uzyskać dostęp do roota, wpisz
sudo -i
- Aby sprawdzić łączność w zbiorze danych TCP, uruchom to polecenie:
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
- Wróć do pierwszego połączenia SSH z instancją maszyny wirtualnej py-vm1.
- Aktywuj środowisko za pomocą:
cd py-gem-env
source env/bin/activate
- Teraz przetestujmy Pythona. Aby aktywować interfejs ipython, wpisz
ipython
. Ruch w tym czasie będzie przepływał przez punkt końcowy PSC.
ipython
- Teraz skopiuj i wklej ten fragment kodu. Zapytaj Gemini „Jakie są wszystkie kolory logo Google” i „Opisz wodospady Niagara”. Zastąp
enter-your-project-id-here
identyfikatorem projektu w cudzysłowie.
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))
- Naciśnij Enter, aby uruchomić zapytanie i zobaczyć wynik.
- Wróć do drugiej instancji maszyny wirtualnej py-vm1. Powinien pojawić się wynik polecenia TCPDUMP. Zwróć uwagę na ruch przychodzący i wychodzący z adresami IP maszyny wirtualnej oraz adresem IP punktu końcowego PSC, który łączy się z 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
- Zamknij wszystkie sesje SSH do instancji maszyny wirtualnej py-vm1.
8. Zadanie 6. Tworzenie ręcznego wpisu DNS do googleapis za pomocą Terraform (opcjonalnie)
Możesz utworzyć ręczny wpis DNS, który będzie wskazywał punkt końcowy PSC za pomocą prywatnego DNS. Ma to wpływ na wszystkie sieci, które przypiszesz do tego konta.
- Przejdź do Usług sieciowych i wybierz Cloud DNS.
- W strefach powinna być widoczna automatycznie utworzona strefa dla usługi Private Service Connect dla interfejsów API Google z katalogiem usług typu strefy. Można go użyć do połączenia z punktem końcowym PSC w formacie **SERVICE-ENDPOINT.p.googleapis.com. Przykład:
aiplatform-pscvertexgemini.p.googleapis.com
- W takim przypadku chcemy ręcznie utworzyć prywatny wpis DNS. Konfiguracja będzie wyglądać tak:
- Utwórz prywatną strefę DNS o nazwie „googleapis-private” dla usługi „googleapis.com” i ogranicz ją do sieci „python-net”.
- Dodaj rekord A, aby zmapować „googleapis.com” na adres IP „192.168.255.250”.
- Dodaj rekord CNAME, aby przekierować wszystkie subdomeny domeny „googleapis.com” (np. www.googleapis.com) do domeny „googleapis.com”.
- Otwórz Cloud Shell w widoku edytora, jeśli jeszcze nie jest otwarty. Otwórz plik dns.tf w folderze terraform-build. Dodaj poniższy kod do pliku.
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."]
}
- Przełącz się na terminal Cloud Shell i sprawdź, czy jesteś w folderze
terraform-build
. Następnie uruchomterraform plan
, aby sprawdzić, jakie elementy zostaną dodane.
Następnie uruchomterraform apply
i wpiszyes
, aby utworzyć wpis DNS prywatnego. - Zobaczysz konfigurację z rekordem A i rekordem CNAME podobną do tej:
.
- Następnie weryfikujemy połączenie z tymi zmianami w py-vm2
9. Zadanie 7. Sprawdzanie łączności punktu końcowego za pomocą adresu IP (opcjonalnie)
Aby połączyć się z Gemini, użyj prywatnego punktu końcowego.
- Otwórz instancję maszyny wirtualnej py-vm2. Wybierz SSH i SSH do maszyny wirtualnej
- Aby uzyskać dostęp do roota, wpisz
sudo -i
- Sprawdź ścieżkę połączenia z us-central1-aiplatform.googleapis.com za pomocą polecenia
ping
. Spowoduje to wysłanie pinga do adresu IP w prywatnym DNS, rekordu A dla googleapis. Ten adres IP to punkt końcowy PSC i Twoje pingi zakończą się niepowodzeniem.
ping -c 2 us-central1-aiplatform.googleapis.com
- Sprawdź ścieżkę połączenia z
ping
za pomocą automatycznie utworzonego wpisu DNS dla interfejsów PSC API Google zaiplatform-pscvertexgemini.p.googleapis.com
. Wskazuje adres IP punktu końcowego PSC i pingi nie będą udane.
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
- Sprawdź ścieżkę połączenia z us-central1-aiplatform.googleapis.com za pomocą polecenia
dig
. Powinien to być adres IP punktu końcowego PSC.
dig us-central1-aiplatform.googleapis.com
- Wróć do konsoli i otwórz kolejną instancję maszyny wirtualnej py-vm2. Wybierz SSH i połącz się z maszyną wirtualną przez SSH
- Aby uzyskać dostęp na poziomie roota, wpisz
sudo -i
. - Uruchom polecenie zgodne z instrukcjami, aby wyświetlić połączenie w zrzucie TCP
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
- Teraz przełącz się z powrotem na pierwszą instancję SSH instancji maszyny wirtualnej py-vm2
- Aktywuj środowisko za pomocą
cd py-gem-env
source env/bin/activate
- Teraz przetestujmy Pythona. Wpisz
ipython
, aby aktywować interfejs ipythona.
ipython
- Teraz skopiuj i wklej ten fragment kodu. Zapytaj Gemini: „Jakie są wszystkie kolory logo Google” i „Jakie są 2 funkcje Gemini Pro”. Zastąp
enter-your-project-id-here
identyfikatorem projektu w cudzysłowach
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))
- Naciśnij Enter, aby uruchomić polecenie i zobaczyć wynik.
- Wróć do drugiej instancji maszyny wirtualnej py-vm2. Powinien wyświetlić się wynik działania protokołu TCPDUMP. Zauważysz, że do połączenia z us-central1-aiplatform.googleapis.com adres IP maszyny wirtualnej używa adresu IP punktu końcowego PSC.
Zamknij wszystkie sesje SSH w instancji maszyny wirtualnej py-vm2
10. Czyszczenie
- Otwórz Cloud Shell, sprawdź, czy jesteś w katalogu terraform-build
cd terraform-build
, a następnie uruchom następujące polecenieterraform destroy
i wpiszyes
. Wszystkie zasoby utworzone w projekcie za pomocą Terraform zostaną usunięte.
11. Gratulacje
Gratulujemy. Udało Ci się połączyć z czatem w Vertex Gemini przy użyciu publicznego adresu interfejsu API i prywatnego przy użyciu punktu końcowego usługi Private Service Connect dla interfejsów API Google. Ta funkcja może rozszerzyć łączność prywatnego interfejsu API do środowiska lokalnego lub innego środowiska chmurowego, które są połączone za pomocą (Interconnect, Cross-Cloud Interconnect i VPC).
Kolejne kroki / Więcej informacji
Dowiedz się więcej o sieciach Vertex AI.
Ćwiczenia z programowania: Uzyskiwanie dostępu do aplikacji Anthropic Claude w Vertex AI przy użyciu pakietu SDK Pythona przez punkt końcowy Private Service Connect
Przejdź do kolejnego modułu
Możesz uczyć się dalej w ramach modułów Google Cloud i sprawdzać te moduły Google Cloud Skills Boost: