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_envprovider_from_env은 모든 API 키보다 먼저 두 개의 환경 플래그를 확인합니다. 플래그 값이 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 대체 경로 없음
Truthy컴파일되지 않음GeminiModel::from_env 오류; provider_from_envtracing 경고를 발생시키고 API 키 감지로 넘어가며, 이 과정에서 Studio가 선택될 수 있음
Truthy가 아님API (Studio)를 GOOGLE_API_KEY 또는 GEMINI_API_KEY를 통해 사용

중요: 플래그는 API의 모든 키보다 우선하며, provider_from_envANTHROPIC_API_KEYOPENAI_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_KEYGEMINI_API_KEY의 설정을 해제합니다. 플래그가 truthy이면 해당 값은 절대 참조되지 않지만, 제거하면 남아 있는 경로를 완전히 없앨 수 있습니다.

3. Application Default Credentials 구성

Vertex 경로는 API 키가 아닌 ADC로 인증합니다.

# 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 자동 감지를 사용합니다.

use adk_rust::provider_from_env;

#[tokio::main]
async fn main() -> adk_rust::Result<()> {
    let model = provider_from_env()?;
    Ok(())
}

Studio 트래픽이 없는지 확인

빌드 시 — 플래그는 자동으로 조용히 성능을 저하하는 대신 오류를 발생시킵니다.

  • truthy 플래그가 설정되어 있고 gemini-vertex 기능이 없으면 GeminiModel::from_env가 기능 이름을 포함한 오류를 반환합니다.
  • GOOGLE_CLOUD_PROJECT 또는 GOOGLE_CLOUD_LOCATION가 누락된 상태에서 truthy 플래그를 사용하면 누락된 변수 이름을 포함한 오류가 반환됩니다.

런타임 — 보호 경고를 확인합니다. provider_from_env는 Vertex 플래그가 truthy이지만 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로의 송신을 차단합니다. 플래그가 truthy이고 기능이 컴파일된 상태에서는 어떤 코드 경로도 Studio 클라이언트를 생성하지 않으므로 ADK 트래픽에 대해 차단이 발생하지 않습니다.

문제 해결

증상원인해결 방법
GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_LOCATION 이름 관련 오류플래그가 참으로 평가됨, Vertex 대상이 불완전함두 변수를 모두 설정
gemini-vertex 기능 이름 관련 오류플래그가 참으로 평가됨, 기능이 컴파일되지 않음adk-rust 기능에 gemini-vertex(또는 gemini-agent-platform) 추가
가드레일 경고가 표시됨provider_from_env이 API 키로 대체됨gemini-vertex로 다시 빌드하고 환경에서 Studio API 키를 제거합니다
요청 시 인증 오류 발생ADC가 구성되지 않음gcloud auth application-default login을 실행하거나 GOOGLE_APPLICATION_CREDENTIALS을 설정합니다
Vertex 전용 배포 - ADK-Rust 문서 | ADK-Rust