Google Vertex AI
Google Vertex AI zapewnia dostęp do rodziny modeli Gemini - zaawansowanych modeli multimodalnych obsługujących tekst, obrazy, dźwięk i wideo. Modele Gemini wyróżniają się dużym oknem kontekstu, sięgającym w niektórych wersjach nawet 2 mln tokenów, a także wysoką wydajnością i konkurencyjnym modelem cenowym.
Kiedy wybrać Google Vertex AI
Duże dokumenty i długi kontekst:
- analiza wielostronicowychdokumentów,
- przetwarzanie długich konwersacji i rozbudowanej historii,
- praca na kontekście obejmującym całe bazy wiedzy.
Przetwarzanie multimedialne:
- analiza obrazów i wykrywanie obiektów,
- Transkrypcja oraz analiza dźwięku,
- przetwarzanie materiałów wideo.
Optymalizacja kosztów:
- Modele Gemini Flash oferują bardzo dobry stosunek ceny do wydajności,
- niższe koszty przy dużych wolumenach zapytań.
Integracja z GCP:
- korzystasz z Google Cloud Platform,
- potrzebujesz funkcji RAG opartych na Vertex AI Search.
Wymagania
- konto Google Cloud Platform (GCP),
- projekt w GCP z włączonym Vertex AI API,
- Service Account Key w formacie JSON,
- bucket Google Cloud Storage do przetwarzania plików.
Krok 1: Przygotowanie środowiska w Google Cloud
1. Utwórz Service Account
- Przejdź do Google Cloud Console.
- Wybierz istniejący projekt lub utwórz nowy.
- Przejdź do IAM & Admin > Service Accounts.
- Kliknij Create Service Account
- Nadaj nazwę, np.
aiproxy-vertex. - Przypisz następujące role:
Vertex AI User,Storage Object Admin(dla bucket).
- Kliknij Create key > JSON, a następnie pobierz plik.
2. Włącz wymagane API
- Przejdź do APIs & Services > Library.
- Włącz następujące interfejsy API:
- Vertex AI API,
- Cloud Storage API.
3. Utwórz Storage Bucket
- Przejdź do Cloud Storage > Buckets.
- Kliknij Create bucket.
- Nadaj nazwę, np.
aiproxy-files. - Wybierz region, np.
us-central1. - Kliknij Create.
Bucket w Cloud Storage jest niezbędny do przetwarzania plików, takich jak obrazy, nagrania audio i dokumenty, przez modele Gemini.
Krok 2: Konfiguracja AI Proxy
Przykład aiconfiguration.json
{
"ProviderConnections": {
"GoogleVertex": {
"Description": "Google Vertex AI Connection",
"Type": "Gemini",
"ProviderConfiguration": {
"ApiKey": "your-google-api-key-if-available",
"ServiceAccount": "{\"type\":\"service_account\",\"project_id\":\"your-project\",\"private_key_id\":\"...\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n\",\"client_email\":\"aiproxy-vertex@your-project.iam.gserviceaccount.com\",\"client_id\":\"...\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"token_uri\":\"https://oauth2.googleapis.com/token\"}",
"ProjectId": "your-gcp-project-id",
"Region": "us-central1",
"BucketName": "aiproxy-files"
}
}
},
"ProviderModels": [
{
"ConnectionName": "GoogleVertex",
"Priority": 100,
"Name": "Gemini Flash",
"Description": "",
"TextModel": {
"ModelName": "gemini-2.0-flash-exp"
},
"ImageModel": {
"ModelName": "imagen-3.0-fast-generate-001"
},
"AudioModel": {
"ModelName": "gemini-2.0-flash-exp"
},
"EmbeddingModel": {
"ModelName": "text-embedding-004"
}
}
],
"MethodTypesConfiguration": {
"ConciergePrompt": [ "Gemini Flash" ],
"ConciergeExecuteTool": [ "Gemini Flash" ]
}
}
- ServiceAccount - wklej pełną zawartość pobranego pliku JSON w postaci pojedynczego ciągu znaków, z odpowiednio zapisanymi cudzysłowami.
- ProjectId - identyfikator projektu w Google Cloud.
- Region - region, w którym jest dostępna usługa Vertex AI, na przykład
us-central1lubeurope-west1. - BucketName - nazwa utworzonego Storage Bucket.
Zalecane modele to gemini-flash lub gemini-flash-lite. Są to modele multimodalne, obsługujące tekst, obrazy i dźwięk, a jednocześnie oferujące wydajność wystarczającą do większości zastosowań.
Przykład docker-compose.yml
name: aiproxy_containers
services:
ai-proxy:
image: webconbps/aiproxy:1.0.0.235
container_name: ai-proxy
restart: unless-stopped
ports:
- "5298:8080"
- "7033:8081"
environment:
- ASPNETCORE_ENVIRONMENT=Production
- AppConfiguration__SelfHosted__Certificate__Path=/app/https/certificate.pem
- Logging__LogLevel__Default=Information
- Logging__LogLevel__Microsoft=Warning
volumes:
- ./certificates/certificate.pem:/app/https/certificate.pem:ro
- ./aiconfiguration.json:/app/aiconfiguration.json:ro
Krok 3: Uruchomienie
# Upewnij się że masz przygotowane pliki:
# - ./certificates/certificate.pem
# - ./aiconfiguration.json (z całą zawartością Service Account JSON)
# Uruchom kontener
docker-compose up -d
# Sprawdź logi
docker-compose logs -f ai-proxy
Rozwiązywanie problemów
Błąd: Permission denied / 403 Forbidden
Możliwe przyczyny:
- Service Account nie ma wymaganych uprawnień.
- W projekcie nie zostały włączone wymagane interfejsy API.
Rozwiązanie:
# Sprawdź czy Service Account ma role:
# - Vertex AI User
# - Storage Object Admin
# Sprawdź czy API są włączone:
# - Vertex AI API
# - Cloud Storage API
# Zrestartuj kontener
docker-compose restart ai-proxy
Błąd: Invalid Service Account JSON
Możliwe przyczyny:
- Nieprawidłowy format JSON w polu ServiceAccount.
- Cudzysłowy w treści JSON nie zostały poprawnie zapisane.
Rozwiązanie:
# ServiceAccount musi być stringiem JSON z escaped cudzysłowami
# Przykład poprawnego formatu:
# "ServiceAccount": "{\"type\":\"service_account\",\"project_id\":\"my-project\"...}"
# Możesz użyć narzędzi online do escape JSON string
Błąd: Bucket not found
Możliwe przyczyny:
- Bucket o podanej nazwie nie istnieje.
- Service Account nie ma uprawnień dostępu do bucket.
Rozwiązanie:
# Sprawdź czy bucket istnieje w Cloud Storage
# Upewnij się że Service Account ma rolę Storage Object Admin
# Sprawdź czy BucketName w konfiguracji jest poprawny
Popularne modele Gemini
Poniżej znajdują się zalecane modele do użycia z AI Proxy.
Modele tekstowe i multimodalne:
- gemini-2.0-flash-exp - najnowszy szybki model multimodalny, obsługujący tekst, obrazy i dźwięk,
- gemini-2.0-flash-lite - lżejszy wariant modelu, również obsługujący dane multimodalne,
- gemini-1.5-flash - sprawdzony model multimodalny do szerokiego zakresu zastosowań,
- gemini-1.5-pro - większy model oferujący szersze możliwości i lepszą jakość odpowiedzi w bardziej wymagających scenariuszach.
Modele embeddingów:
- text-embedding-004 - aktualny model przeznaczony do generowania embeddingów,
- text-multilingual-embedding-002 - model embeddingowy z obsługą wielu języków.
Modele do generowania obrazów:
- imagen-3.0-fast-generate-001 - model do szybkiego generowania obrazów,
- imagen-3.0-generate-001 - model nastawiony na wyższą jakość generowanych obrazów.
Modele z rodziny Gemini Flash są multimodalne, co oznacza, że obsługują tekst, obrazy i dźwięk w ramach jednego modelu. Dzięki temu konfiguracja jest prostsza, a integracja z różnymi typami danych bardziej spójna.