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 (do 2M tokenów w niektórych wersjach), szybkością działania i konkurencyjnymi cenami.
Kiedy wybrać Google Vertex AI
Duże dokumenty i długi kontekst:
- Analiza dokumentów wielostronicowych
- Przetwarzanie długich konwersacji i historii
- Kontekst obejmujący całe bazy wiedzy
Przetwarzanie multimedialne:
- Analiza obrazów i wykrywanie obiektów
- Transkrypcja i analiza dźwięku
- Przetwarzanie wideo
Optymalizacja kosztów:
- Modele Gemini Flash oferują najlepszy stosunek ceny do wydajności
- Niższe koszty dla dużych wolumenów zapytań
Integracja z GCP:
- Już korzystasz z Google Cloud Platform
- Potrzebujesz funkcji RAG z Vertex AI Search
Wymagania
- Konto Google Cloud Platform (GCP)
- Projekt w GCP z włączonym Vertex AI API
- Service Account Key (plik JSON)
- Google Cloud Storage Bucket (dla przetwarzania plików)
Krok 1: Przygotowanie w Google Cloud
1. Utwórz Service Account
- Przejdź do Google Cloud Console
- Wybierz projekt lub utwórz nowy
- Przejdź do IAM & Admin > Service Accounts
- Kliknij Create Service Account
- Nadaj nazwę (np.
aiproxy-vertex) - Przypisz role:
Vertex AI UserStorage Object Admin(dla bucket)
- Kliknij Create key > JSON i pobierz plik
2. Włącz API
- Przejdź do APIs & Services > Library
- Włącz następujące 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
Storage Bucket jest potrzebny do przetwarzania plików (obrazy, audio, 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 całą zawartość pobranego pliku JSON jako string (z escaped cudzysłowami)
- ProjectId - ID projektu z Google Cloud
- Region - region gdzie masz włączony Vertex AI (np.
us-central1,europe-west1) - BucketName - nazwa utworzonego Storage Bucket
Zalecane modele to gemini-flash lub gemini-flash-lite - są multimodal (obsługują tekst, obrazy, audio) i wystarczająco wydajne dla 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
Przyczyny:
- Service Account nie ma wymaganych uprawnień
- API nie są włączone w projekcie
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
Przyczyny:
- Nieprawidłowy format JSON w ServiceAccount
- Cudzysłowy nie są escaped
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
Przyczyny:
- Bucket o podanej nazwie nie istnieje
- Service Account nie ma 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
Zalecane modele do użycia z AI Proxy:
Modele tekstowe/multimodal:
- gemini-2.0-flash-exp - najnowszy, szybki, multimodal (tekst, obrazy, audio)
- gemini-2.0-flash-lite - lżejsza wersja, nadal multimodal
- gemini-1.5-flash - sprawdzona wersja, multimodal
- gemini-1.5-pro - większy model, więcej możliwości
Modele embeddings:
- text-embedding-004 - najnowszy model do embeddingów
- text-multilingual-embedding-002 - wsparcie dla wielu języków
Modele obrazów:
- imagen-3.0-fast-generate-001 - szybkie generowanie obrazów
- imagen-3.0-generate-001 - wyższa jakość
Modele z rodziny gemini-flash są multimodal - obsługują teksty, obrazy i audio w jednym modelu, co upraszcza konfigurację.