عمليات النشر المخصّصة لـ 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