عمليات النشر المخصّصة لـ Vertex فقط
اضمن وصول حركة مرور Gemini إلى Vertex AI ({location}-aiplatform.googleapis.com) فقط، وعدم وصولها مطلقًا إلى نقطة نهاية Gemini API Studio (generativelanguage.googleapis.com). تتطلب أعباء العمل الخاضعة للتنظيم — HIPAA، وموقع البيانات، وعناصر تحكم خدمة VPC — ذلك: إذ إن نقطة نهاية Studio لا تغطيها اتفاقية BAA مع Google Cloud، بينما تغطيها Vertex AI.
اختيار نقطة النهاية
يستشير GeminiModel::from_env وprovider_from_env علامتي بيئة قبل أي مفتاح API. تكون العلامة صحيحة عندما تكون قيمتها 1 أو قيمة true غير حساسة لحالة الأحرف.
| العَلَم | الحالة | الملاحظات |
|---|---|---|
GOOGLE_GENAI_USE_ENTERPRISE | حالي | له الأولوية عند تعيين كليهما |
GOOGLE_GENAI_USE_VERTEXAI | مهجور | لا يزال معمولًا به لتحقيق التكافؤ مع adk-python؛ لا يصدر أي تحذير بشأن الإهمال |
| علامة Vertex | ميزة gemini-vertex | النتيجة |
|---|---|---|
| قيمة صحيحة | مُجمّعة | Vertex AI عبر بيانات اعتماد التطبيق الافتراضية (GOOGLE_CLOUD_PROJECT + GOOGLE_CLOUD_LOCATION) |
| قيمة صحيحة، المشروع أو الموقع مفقود | مُجمّعة | خطأ يذكر المتغير المفقود — لا يوجد رجوع إلى Studio |
| صادق | لم يُجمَّع | أخطاء GeminiModel::from_env؛ يصدر tracing تحذيرًا عند provider_from_env ويتابع إلى اكتشاف المفتاح API، الذي قد يختار Studio |
| غير صادق | — | Gemini API (Studio) عبر GOOGLE_API_KEY أو GEMINI_API_KEY |
مهم: تحظى الرايات بالأولوية على كل مفتاح API، بما في ذلك
ANTHROPIC_API_KEYوOPENAI_API_KEYفيprovider_from_env. لا يمكن لمفتاح 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 في بيئة النشر لتعزيز الحماية في العمق — فعندما تكون الراية ذات قيمة صحيحة، لا يتم الرجوع إليهما مطلقًا، لكن إزالتهما تلغي المسار المتبقي بالكامل.
3. إعداد بيانات الاعتماد الافتراضية للتطبيق
يصادق مسار 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(())
}
أو عبر الاكتشاف التلقائي للمزوّد في الحزمة الجامعة:
use adk_rust::provider_from_env;
#[tokio::main]
async fn main() -> adk_rust::Result<()> {
let model = provider_from_env()?;
Ok(())
}
التحقق من عدم وجود حركة مرور إلى Studio
وقت الإنشاء — تُصدر الراية خطأً بدلًا من التدهور بصمت:
- يعيد
GeminiModel::from_envمع راية ذات قيمة صحيحة ومن دون ميزةgemini-vertexخطأً يذكر اسم الميزة. - تؤدي الراية ذات القيمة الصحيحة مع غياب
GOOGLE_CLOUD_PROJECTأوGOOGLE_CLOUD_LOCATIONإلى إرجاع خطأ يذكر اسم المتغير المفقود.
وقت التشغيل — راقب تحذير حاجز الحماية. يُصدر provider_from_env هذا التحذير كلما كانت إحدى رايات Vertex ذات قيمة صحيحة، لكن ميزة gemini-vertex لم تُضمَّن وقت التجميع، وانتقل الاكتشاف إلى مفاتيح 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. عند تفعيل العلامة وتجميع الميزة، لا ينشئ أي مسار برمجي عميل Studio، ولذلك لا يتم تفعيل الحظر مطلقًا لحركة مرور ADK.
استكشاف الأخطاء وإصلاحها
| العَرَض | السبب | الإصلاح |
|---|---|---|
خطأ في تسمية GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_LOCATION | العلامة ذات قيمة صحيحة، وهدف Vertex غير مكتمل | اضبط كلا المتغيرين |
خطأ في تسمية ميزة gemini-vertex | العلامة ذات قيمة صحيحة، والميزة لم تُجمَّع | أضف gemini-vertex (أو gemini-agent-platform) إلى ميزات adk-rust |
| يظهر تحذير الحاجز الوقائي | لجأ provider_from_env إلى مفاتيح API | أعد البناء باستخدام gemini-vertex؛ وأزل مفاتيح API الخاصة بـ Studio من البيئة |
| أخطاء المصادقة عند وقت الطلب | لم يتم تكوين ADC | شغّل gcloud auth application-default login أو عيّن GOOGLE_APPLICATION_CREDENTIALS |