केवल Vertex परिनियोजन
गारंटी दें कि Gemini ट्रैफ़िक केवल Vertex AI ({location}-aiplatform.googleapis.com) तक पहुँचे और कभी भी Gemini API Studio एंडपॉइंट (generativelanguage.googleapis.com) तक न पहुँचे। विनियमित वर्कलोड — HIPAA, डेटा-रेज़िडेंसी, VPC Service Controls — के लिए यह आवश्यक है: Studio एंडपॉइंट Google Cloud BAA के अंतर्गत शामिल नहीं है, जबकि Vertex AI शामिल है।
एंडपॉइंट निर्णय
GeminiModel::from_env और provider_from_env किसी भी API कुंजी से पहले दो पर्यावरण फ़्लैग की जाँच करते हैं। किसी फ़्लैग को truthy माना जाता है जब उसका मान 1 या केस-इंसेंसिटिव true हो।
| फ़्लैग | स्थिति | टिप्पणियाँ |
|---|---|---|
GOOGLE_GENAI_USE_ENTERPRISE | वर्तमान | दोनों सेट होने पर प्राथमिकता लेता है |
GOOGLE_GENAI_USE_VERTEXAI | अप्रचलित | adk-python समानता के लिए अभी भी मान्य; कोई अप्रचलन चेतावनी जारी नहीं की जाती |
| Vertex फ़्लैग | gemini-vertex सुविधा | परिणाम |
|---|---|---|
| सत्य | संकलित | Application Default Credentials (GOOGLE_CLOUD_PROJECT + GOOGLE_CLOUD_LOCATION) के माध्यम से Vertex AI |
| सत्य, प्रोजेक्ट या स्थान अनुपलब्ध | संकलित | अनुपलब्ध वेरिएबल का नाम बताने वाली त्रुटि — कोई Studio फ़ॉलबैक नहीं |
| सत्य | संकलित नहीं | GeminiModel::from_env त्रुटियाँ; provider_from_env एक tracing चेतावनी जारी करता है और API-कुंजी पहचान पर आगे बढ़ता है, जो Studio का चयन कर सकता है |
| सत्य नहीं | — | GOOGLE_API_KEY या GEMINI_API_KEY के माध्यम से Gemini API (Studio) |
महत्वपूर्ण: फ़्लैग प्रत्येक API कुंजी पर प्राथमिकता रखते हैं, जिनमें
provider_from_envमें मौजूदANTHROPIC_API_KEYऔरOPENAI_API_KEYभी शामिल हैं। कोई अप्रत्याशित API कुंजी Vertex-पिन किए गए डिप्लॉयमेंट को Studio की ओर नहीं मोड़ सकती।
सेटअप
1. gemini-vertex सुविधा सक्षम करें
इसके बिना Vertex बैकएंड को कंपाइल करें — इसके बिना फ़्लैग का पालन नहीं किया जा सकता:
[dependencies]
adk-rust = { version = "2.1.0", features = ["minimal", "gemini-vertex"] }
या प्लेटफ़ॉर्म प्रीसेट का उपयोग करें, जिसमें यह शामिल है:
[dependencies]
adk-rust = { version = "2.1.0", features = ["minimal", "gemini-agent-platform"] }
2. वातावरण के फ़्लैग सेट करें
export GOOGLE_GENAI_USE_ENTERPRISE=true
export GOOGLE_CLOUD_PROJECT=my-project
export GOOGLE_CLOUD_LOCATION=us-central1
डिफ़ेंस-इन-डेप्थ के लिए डिप्लॉयमेंट वातावरण में GOOGLE_API_KEY और GEMINI_API_KEY को अनसेट करें — फ़्लैग के truthy होने पर इन्हें कभी जाँचा नहीं जाता, लेकिन इन्हें हटाने से बचा हुआ मार्ग पूरी तरह समाप्त हो जाता है।
3. Application Default Credentials कॉन्फ़िगर करें
Vertex पथ ADC से प्रमाणीकृत होता है, API कुंजी से नहीं:
# Local development
gcloud auth application-default login
# Service accounts (CI, containers)
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
GKE और Cloud Run पर, Workload Identity किसी कुंजी फ़ाइल के बिना ADC प्रदान करता है।
4. वातावरण से मॉडल बनाएँ
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(())
}
या umbrella crate पर provider auto-detection के माध्यम से:
use adk_rust::provider_from_env;
#[tokio::main]
async fn main() -> adk_rust::Result<()> {
let model = provider_from_env()?;
Ok(())
}
Studio ट्रैफ़िक न होने का सत्यापन
बिल्ड-समय — फ़्लैग चुपचाप कमज़ोर पड़ने के बजाय त्रुटि देता है:
- truthy फ़्लैग के साथ
GeminiModel::from_envऔर बिनाgemini-vertexसुविधा के, सुविधा का नाम बताने वाली त्रुटि लौटती है। GOOGLE_CLOUD_PROJECTयाGOOGLE_CLOUD_LOCATIONके अनुपस्थित होने पर truthy फ़्लैग, अनुपस्थित चर का नाम बताने वाली त्रुटि लौटाता है।
रनटाइम — सुरक्षा-रेल चेतावनी पर नज़र रखें। provider_from_env इसे तब उत्सर्जित करता है जब कोई Vertex फ़्लैग truthy हो, लेकिन gemini-vertex सुविधा कंपाइल न की गई हो और detection API कुंजियों तक पहुँच जाए:
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)
केवल-Vertex डिप्लॉयमेंट को इस चेतावनी को डिप्लॉयमेंट त्रुटि मानना चाहिए: इसका अर्थ है कि बाइनरी को gemini-vertex सुविधा के बिना बनाया गया था। लॉग एग्रीगेशन में इस पर अलर्ट सेट करें।
नेटवर्क — VPC Service Controls परिधियों के लिए, generativelanguage.googleapis.com तक ईग्रेस को अवरुद्ध करें। फ़्लैग के truthy होने और सुविधा के संकलित होने पर, कोई भी कोड पथ Studio क्लाइंट का निर्माण नहीं करता, इसलिए ADK ट्रैफ़िक के लिए अवरोध कभी सक्रिय नहीं होता।
समस्या निवारण
| लक्षण | कारण | समाधान |
|---|---|---|
GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_LOCATION का नाम बताने वाली त्रुटि | फ़्लैग truthy है, Vertex लक्ष्य अधूरा है | दोनों वैरिएबल सेट करें |
gemini-vertex सुविधा का नाम बताने वाली त्रुटि | फ़्लैग truthy है, सुविधा संकलित नहीं की गई है | adk-rust सुविधाओं में gemini-vertex (या gemini-agent-platform) जोड़ें |
| गार्ड-रेल चेतावनी दिखाई देती है | provider_from_env ने API कुंजियों पर वापस लौट गया | gemini-vertex के साथ पुनर्निर्माण करें; पर्यावरण से Studio API कुंजियाँ हटाएँ |
| अनुरोध के समय प्रमाणीकरण त्रुटियाँ | ADC कॉन्फ़िगर नहीं है | gcloud auth application-default login चलाएँ या GOOGLE_APPLICATION_CREDENTIALS सेट करें |