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 laboratorium najpierw uzyskasz dostęp do Anthropic Claude w Vertex za pomocą pakietu Python SDK działającego na instancji maszyny wirtualnej przez publiczny internet.
Następnie utworzysz punkt końcowy Private Service Connect dla Googleapis i zmienisz przepływ ruchu, aby używać punktu końcowego prywatnego do łączenia się z interfejsem Vertex API.
W tym laboratorium utworzysz taki wzór.
Rysunek 1.
2. Cele
Z tego modułu dowiesz się, jak wykonać te czynności:
- Konfigurowanie maszyny wirtualnej do korzystania z pakietu SDK Pythona
- Łączenie z czatem Claude od Anthropic za pomocą skryptu Pythona
- Konfigurowanie punktu końcowego PSC do łączenia się z Googleapis
- Konfigurowanie ręcznych wpisów DNS
- Sprawdzanie ścieżki łączności z Googleais
Konfiguracja laboratorium
Konfiguracja środowiska w samodzielnym tempie
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu to wyświetlana nazwa 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 niepowtarzalny w ramach wszystkich projektów Google Cloud i nie można go zmienić (po ustawieniu). 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 musisz 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ć użyć własnego adresu e-mail, aby sprawdzić, czy jest on dostępny. Nie można go zmienić po wykonaniu tego kroku. Pozostanie on do końca 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ć rozliczenia w konsoli Cloud, aby korzystać z zasobów i interfejsów API Cloud. Przejście przez ten samouczek nie będzie kosztowne, a być może nawet bezpłatne. 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 bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie 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 tym CodeLab możesz wykonać w przeglądarce. Nie musisz niczego instalować.
3. Zadanie 1. Konfigurowanie środowiska
Utworzymy niestandardową sieć VPC z regułami zapory sieciowej. Jeśli masz już sieć VPC i projekt, możesz pominąć tę część.
Otwórz Cloud Shell, który znajduje się u góry konsoli po prawej stronie. Skonfiguruj je w ten sposób:
- Włącz niektóre interfejsy API, których użyjemy w tym laboratorium.
gcloud services enable dns.googleapis.com gcloud services enable aiplatform.googleapis.com gcloud services enable servicedirectory.googleapis.com
- Ustaw kilka zmiennych. Te zmienne to identyfikator projektu i identyfikator sieci niestandardowej VPC (utworzysz tę sieć w kroku 4).
projectid=$(gcloud config get-value project) networkid=anthropic-net echo $projectid echo $networkid clear
- Teraz utwórz niestandardową sieć VPC o nazwie anthropic-net.
gcloud compute networks create $networkid \ --project=$projectid \ --subnet-mode=custom \ --mtu=1460 \ --bgp-routing-mode=global
- Utwórz podsieć vm1 w nowej sieci VPC.
gcloud compute networks subnets create vm-subnet \ --project=$projectid --range=10.0.88.0/24 \ --stack-type=IPV4_ONLY --network=$networkid \ --region=us-east1
- Dodawanie reguły zapory sieciowej ICMP do 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
- Dodawanie reguły zapory sieciowej SSH do 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. Zadanie 2. Włączanie Anthropic w bazie modeli Vertex
Musimy przyznać zewnętrzny dostęp do internetu, więc utwórzmy bramę Cloud NAT i dodaj ją.
- Otwórz Vertex AI i wybierz Baza modeli.
- Wyszukaj Anthropic i wybierz Claude 3.5 Sonnet.
- Kliknij Włącz. Musisz podać kilka informacji. Wypełnij formularz i kliknij Dalej.
- Na ostatniej stronie wybierz Zgadzam się, aby włączyć Claude 3.5 Sonnet
5. Zadanie 3. Tworzenie bramy NAT i maszyn wirtualnych
Musimy przyznać zewnętrzny dostęp do internetu, więc utwórzmy bramę Cloud NAT i dodaj ją.
W Cloud Shell użyj tych poleceń
- Utwórz Cloud NAT.
gcloud compute routers create anthro-out-nat \ --network $networkid \ --region us-east1
- Utwórz bramę Cloud NAT.
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
Utwórz teraz jedną maszynę wirtualną, aby uzyskać dostęp do usługi Anthropic w Vertex AI za pomocą pakietu Python SDK.
Utworzymy maszynę wirtualną, na której przetestujemy działanie tych pakietów:
- W tej samej sesji Cloud Shell utwórz instancję anthro-vm, wykonując te czynności.
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]'"
Powinna zostać utworzona maszyna wirtualna bez publicznych adresów IP. Skonfigurujmy teraz maszynę wirtualną.
6. Zadanie 4. Konfigurowanie maszyny wirtualnej i testowanie
- Przejdź do instancji maszyny wirtualnej. Wybierz maszynę wirtualną, której nazwa zaczyna się od anthro-vm. Wybierz SSH.
- Po połączeniu się przez SSH z anthro-vm włącz root,wpisując
sudo -i
. - Aktywuj środowisko venv:
cd py-anthro-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 prompty.
- Gdy zobaczysz ten tekst, wybierz opcję „Kopiuj”, wróć do sesji vm anthro-vm i w polu Wpisz kod autoryzacji: wklej skopiowany kod i naciśnij Enter, aby uwierzytelnić.
- Teraz przeprowadzimy szybki test, aby sprawdzić, czy możemy połączyć się z interfejsem Vertex Gemini API. Używa on adresu us-east5-aiplatform.googleapis.com, więc spróbujemy wysłać do niego żądanie
dig
, aby sprawdzić, jak jest kierowany ruch.
dig us-east5-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.
; <<>> 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
- Teraz użyjemy Pythona. Aby aktywować interfejs ipython, wpisz
ipython
.
ipython
- Teraz skopiuj i wklej ten fragment kodu. Pyta Claude’a: „Gdzie odbędą się igrzyska w 2024 r.?” . p.s. Zastąp
YOUR-Project-ID-Here
nazwą identyfikatora projektu
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)
- Naciśnij klawisz Enter, aby uruchomić i zobaczyć wynik.
- To żądanie uzyskało dostęp do Anthropic za pomocą publicznego interfejsu Vertex API.
- Zamknij sesję SSH i przejdź dalej.
7. Zadanie 5. Tworzenie punktu końcowego PSC dla googleapis
Aby umożliwić prywatne połączenie z punktem końcowym interfejsu Vertex API, utworzymy punkt końcowy Private Service Connect dla googleapis. Umożliwi nam to użycie prywatnego adresu IP, który przypiszemy do przekierowania ruchu do potrzebnych nam usług googleapis, w tym przypadku Vertex Gemini.
- Otwórz Cloud Shell, jeśli nie jest jeszcze otwarta. Utwórz adres IP dla punktu końcowego PSC. W tym przypadku użyjemy adresu 192.168.255.230.
gcloud compute addresses create anthro-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=192.168.255.230 \
--network=$networkid
- Weryfikacja utworzonego adresu IP
gcloud compute addresses list --filter="name=( 'anthro-ip' ...)"
- Następnie utwórz punkt końcowy PSC.
gcloud compute forwarding-rules create pscanthrovertex \
--global \
--network=$networkid \
--address=anthro-ip \
--target-google-apis-bundle=all-apis
- Spowoduje to utworzenie punktu końcowego i wpisu w katalogu usług. Weryfikacja istnienia punktu końcowego
gcloud compute forwarding-rules describe pscanthrovertex --global
8. Zadanie 6. Sprawdzanie połączenia punktu końcowego za pomocą automatycznej strefy katalogu usług
Aby połączyć się z Gemini, użyj punktu końcowego prywatnego.
- Otwórz instancję maszyny wirtualnej anthro-vm1. Wybierz SSH i połącz się z maszyną wirtualną za pomocą SSH
- Aby uzyskać dostęp na poziomie roota, wpisz
sudo -i
. - Sprawdź ścieżkę łączności do adresu aiplatform-pscanthrovertex.p.googleapis.com, używając polecenia
dig
. Powinien pojawić się adres IP punktu końcowego PSC.
dig aiplatform-pscanthrovertex.p.googleapis.com
9. Zadanie 7. Tworzenie ręcznego wpisu DNS do googleapis (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 tej kampanii.
- Przejdź do Usług sieciowych i wybierz Cloud DNS.
- W sekcji „Strefa” powinna pojawić się automatycznie utworzona strefa dla usługi Private Service Connect dla interfejsów Google API z katalogiem usług typu „strefa”. 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 tym przypadku chcemy ręcznie utworzyć prywatny wpis DNS. Otwórz Cloud DNS i wybierz Utwórz strefę.
- Skonfiguruj w ten sposób:
Konfiguracja | Nazwa |
Rodzaj strefy | Prywatny |
Nazwa strefy | googleapis-private |
Nazwa DNS | googleapis.com |
Dodawanie sieci (wybierz „Gotowe” po dodaniu) | anthropic-net |
Aby zakończyć wybieranie | Utwórz |
- W obszarze Szczegóły strefy wybierz Dodaj standard, aby dodać rekord A.
Konfiguracja | Nazwa |
Typ rekordu zasobu | A |
Adres IPv4 (dodaj adres IP punktu końcowego) | 192.168.255.230 |
Zakończ zaznaczanie | Utwórz |
- W obszarze Szczegóły strefy kliknij Dodaj standardowy, aby dodać rekord CNAME.
Konfiguracja | Nazwa |
Nazwa DNS | * |
Typ rekordu zasobu | CNAME |
Nazwa kanoniczna 1 | googleapis.com |
Zakończ zaznaczanie | Utwórz |
- Powinieneś zobaczyć konfigurację z rekordem A i CNAME, jak na ilustracji
- Następnie sprawdzamy połączenie z tymi zmianami na maszynie anthro-vm.
10. Zadanie 8. Sprawdzanie łączności punktu końcowego za pomocą adresu IP (opcjonalnie)
Aby połączyć się z Gemini, użyj punktu końcowego prywatnego.
- Otwórz instancję maszyny wirtualnej anthro-vm. Wybierz SSH i połącz się z maszyną wirtualną za pomocą SSH
- Aby uzyskać dostęp na poziomie roota, wpisz
sudo -i
. - Sprawdź ścieżkę łączności do adresu us-east5-aiplatform.googleapis.com, używając polecenia
ping
. Spowoduje to wysłanie pinga do adresu IP w prywatnym DNS, rekordu A dla googleapis. Ten adres IP jest punktem końcowym PSC, więc pingi nie będą działać.
ping -c 2 us-east5-aiplatform.googleapis.com
- Sprawdź ścieżkę łączności z
ping
, korzystając z automatycznie utworzonego wpisu DNS dla interfejsów PSC Google API zaiplatform-pscanthrovertex.p.googleapis.com
. Wskazuje on adres IP punktu końcowego PSC, więc pingi nie będą działać.
ping -c 2 aiplatform-pscanthrovertex.p.googleapis.com
- Sprawdź ścieżkę łączności do adresu us-east5-aiplatform.googleapis.com, używając polecenia
dig
. Powinien to być adres IP punktu końcowego PSC.
dig us-east5-aiplatform.googleapis.com
- Wróć do konsoli i otwórz kolejną instancję maszyny wirtualnej anthro-vm. Wybierz SSH i połącz się z maszyną wirtualną przez SSH.
- Aby uzyskać dostęp na poziomie roota, wpisz
sudo -i
. - Aby sprawdzić łączność w pliku z danymi TCP, uruchom to polecenie
sudo tcpdump -i any port 53 -n or host us-east5-aiplatform.googleapis.com
- Wróć do pierwszego połączenia SSH z instancją maszyny wirtualnej anthro-vm.
- Aktywuj środowisko za pomocą
cd py-gem-env
source env/bin/activate
- Teraz przetestujmy Pythona. Aby aktywować interfejs ipython, wpisz
ipython
.
ipython
- Teraz skopiuj i wklej ten fragment kodu. Pyta Claude’a „Co to jest roti?”. p.s. Zastąp
YOUR-Project-ID-Here
nazwą identyfikatora projektu
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)
- Naciśnij Enter, aby uruchomić zapytanie i zobaczyć wynik.
- Wróć do drugiej instancji maszyny wirtualnej anthro-vm. Powinien pojawić się wynik polecenia TCPDUMP. Zauważysz, że adres IP maszyny wirtualnej używa adresu IP punktu końcowego PSC, aby połączyć się z adresem us-east5-aiplatform.googleapis.com.
Zamknij wszystkie sesje SSH do instancji maszyny wirtualnej anthro-vm.
11. Gratulacje
Gratulacje! Udało Ci się połączyć z Anthropic na Vertex przy użyciu zarówno publicznego adresu interfejsu API, jak i prywatnego punktu końcowego Private Service Connect dla interfejsów Googleapis. 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).
Czyszczenie danych
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
Więcej informacji o sieci Vertex AI