Bereitstellungen ausschließlich über Vertex
Stellen Sie sicher, dass der Gemini-Datenverkehr ausschließlich Vertex AI ({location}-aiplatform.googleapis.com) erreicht und niemals den Gemini-API-Studio-Endpunkt (generativelanguage.googleapis.com). Für regulierte Workloads – HIPAA, Datenresidenz und VPC Service Controls – ist dies erforderlich: Der Studio-Endpunkt ist nicht durch ein Google Cloud BAA abgedeckt, Vertex AI hingegen schon.
Endpunktentscheidung
GeminiModel::from_env und provider_from_env prüfen vor jedem API-Schlüssel zwei Umgebungsvariablen. Ein Flag gilt als wahr, wenn sein Wert 1 oder ein von der Groß- und Kleinschreibung unabhängiges true ist.
| Flag | Status | Hinweise |
|---|---|---|
GOOGLE_GENAI_USE_ENTERPRISE | Aktuell | Hat Vorrang, wenn beide gesetzt sind |
GOOGLE_GENAI_USE_VERTEXAI | Veraltet | Wird weiterhin aus Gründen der Parität mit adk-python berücksichtigt; es wird keine Veraltungswarnung ausgegeben |
| Vertex-Flag | gemini-vertex-Funktion | Ergebnis |
|---|---|---|
| Wahr | Kompiliert | Vertex AI über Application Default Credentials (GOOGLE_CLOUD_PROJECT + GOOGLE_CLOUD_LOCATION) |
| Wahr, Projekt oder Standort fehlt | Kompiliert | Fehler mit Angabe der fehlenden Variable – kein Studio-Fallback |
| Wahr | Nicht kompiliert | GeminiModel::from_env-Fehler; provider_from_env gibt eine tracing-Warnung aus und fährt mit der API-Schlüsselerkennung fort, die möglicherweise Studio auswählt |
| Nicht wahr | — | Gemini API (Studio) über GOOGLE_API_KEY oder GEMINI_API_KEY |
Wichtig: Die Flags haben Vorrang vor jedem API-Schlüssel, einschließlich
ANTHROPIC_API_KEYundOPENAI_API_KEYinprovider_from_env. Ein verwaister API-Schlüssel kann eine an Vertex gebundene Bereitstellung nicht zu Studio umleiten.
Einrichtung
1. Die gemini-vertex-Funktion aktivieren
Kompilieren Sie das Vertex-Backend mit — andernfalls kann das Flag nicht berücksichtigt werden:
[dependencies]
adk-rust = { version = "2.1.0", features = ["minimal", "gemini-vertex"] }
Oder verwenden Sie die Plattformvoreinstellung, die diese Funktion enthält:
[dependencies]
adk-rust = { version = "2.1.0", features = ["minimal", "gemini-agent-platform"] }
2. Die Umgebungs-Flags festlegen
export GOOGLE_GENAI_USE_ENTERPRISE=true
export GOOGLE_CLOUD_PROJECT=my-project
export GOOGLE_CLOUD_LOCATION=us-central1
Heben Sie die Einstellung von GOOGLE_API_KEY und GEMINI_API_KEY in der Bereitstellungsumgebung auf, um eine zusätzliche Schutzebene zu schaffen — bei gesetztem Flag werden sie niemals abgefragt, aber durch ihr Entfernen wird der verbleibende Pfad vollständig beseitigt.
3. Application Default Credentials konfigurieren
Der Vertex-Pfad authentifiziert sich mit ADC, nicht mit einem API-Schlüssel:
# Local development
gcloud auth application-default login
# Service accounts (CI, containers)
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
Auf GKE und Cloud Run stellt Workload Identity ADC ohne Schlüsseldatei bereit.
4. Das Modell aus der Umgebung erstellen
use adk_model::gemini::GeminiModel;
// The Vertex path builds Application Default Credentials, which requires a
// current Tokio runtime.
#[tokio::main]
async fn main() -> adk_core::Result<()> {
// Vertex AI when a flag is truthy; errors instead of falling back to
// Studio when the Vertex configuration is incomplete.
let model = GeminiModel::from_env("gemini-3.7-flash")?;
Ok(())
}
Oder per automatischer Provider-Erkennung über das Umbrella-Crate:
use adk_rust::provider_from_env;
#[tokio::main]
async fn main() -> adk_rust::Result<()> {
let model = provider_from_env()?;
Ok(())
}
Keinen Studio-Datenverkehr überprüfen
Zur Build-Zeit — das Flag führt zu einem Fehler, anstatt stillschweigend zurückzufallen:
GeminiModel::from_envmit einem gesetzten Flag und ohnegemini-vertex-Funktion gibt einen Fehler zurück, der die Funktion nennt.- Ein gesetztes Flag mit fehlendem
GOOGLE_CLOUD_PROJECToderGOOGLE_CLOUD_LOCATIONgibt einen Fehler zurück, der die fehlende Variable nennt.
Zur Laufzeit — achten Sie auf die Warnung der Schutzvorrichtung. provider_from_env gibt sie immer dann aus, wenn ein Vertex-Flag gesetzt ist, aber die gemini-vertex-Funktion nicht kompiliert wurde und die Erkennung auf API-Schlüssel zurückfällt:
WARN vertex backend requested via environment but the gemini-vertex feature is not compiled; api-key detection may select the gemini studio endpoint (generativelanguage.googleapis.com)
Eine reine Vertex-Bereitstellung muss diese Warnung als Bereitstellungsfehler behandeln: Sie bedeutet, dass das Binary ohne die gemini-vertex-Funktion erstellt wurde. Richten Sie dafür eine Überwachung in der Protokollaggregation ein.
Netzwerk — für VPC Service Controls-Perimeter den ausgehenden Datenverkehr zu generativelanguage.googleapis.com blockieren. Wenn das Flag einen Wahrheitswert hat und das Feature kompiliert wurde, erstellt kein Codepfad einen Studio-Client, sodass die Sperre bei ADK-Datenverkehr nie greift.
Fehlerbehebung
| Symptom | Ursache | Behebung |
|---|---|---|
Fehler mit Nennung von GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_LOCATION | Flag ist wahr, Vertex-Ziel unvollständig | Beide Variablen setzen |
Fehler mit Nennung des Features gemini-vertex | Flag ist wahr, Feature nicht kompiliert | gemini-vertex (oder gemini-agent-platform) zu den Features von adk-rust hinzufügen |
| Die Guardrail-Warnung wird angezeigt | provider_from_env ist auf API-Schlüssel zurückgefallen | Mit gemini-vertex neu erstellen; Studio-API-Schlüssel aus der Umgebung entfernen |
| Authentifizierungsfehler zum Zeitpunkt der Anfrage | ADC nicht konfiguriert | gcloud auth application-default login ausführen oder GOOGLE_APPLICATION_CREDENTIALS festlegen |