tirth8205/code-review-graph · error · ValueError

GOOGLE_API_KEY environment variable is required for the Goog

Error message

GOOGLE_API_KEY environment variable is required for the Google embedding provider.

What it means

The google provider requires GOOGLE_API_KEY before it will construct GoogleEmbeddingProvider. The raise happens before any client init, so no API quota is touched.

Source

Thrown at code_review_graph/embeddings.py:1003

        batch_size = int(batch_env) if batch_env else None
        min_interval_env = os.environ.get("CRG_VOYAGE_MIN_INTERVAL_SEC")
        min_interval_sec = float(min_interval_env) if min_interval_env else 0.0
        if not _is_localhost_url(base_url):
            _warn_cloud_egress("voyage")
        return VoyageEmbeddingProvider(
            api_key=api_key,
            base_url=base_url,
            model=resolved_model,
            output_dimension=output_dimension,
            output_dtype=output_dtype,
            batch_size=batch_size,
            min_interval_sec=min_interval_sec,
        )

    if name == "google":
        api_key = os.environ.get("GOOGLE_API_KEY")
        if not api_key:
            raise ValueError(
                "GOOGLE_API_KEY environment variable is required for "
                "the Google embedding provider."
            )
        _warn_cloud_egress("google")
        try:
            return GoogleEmbeddingProvider(
                api_key=api_key,
                **({"model": model} if model else {}),
            )
        except ImportError:
            return None

    # Default: local
    if not _check_available():
        return None
    try:
        return LocalEmbeddingProvider(model_name=model)
    except ImportError:

View on GitHub (pinned to b58668751a)

Solutions

  1. export GOOGLE_API_KEY=<your key> from Google AI Studio
  2. Note GOOGLE_APPLICATION_CREDENTIALS is NOT sufficient — set GOOGLE_API_KEY explicitly
  3. Verify with printenv GOOGLE_API_KEY

Example fix

# before
export GOOGLE_APPLICATION_CREDENTIALS=/path/sa.json
# after
export GOOGLE_API_KEY=AIza...
Defensive patterns

Strategy: validation

Validate before calling

if not os.environ.get("GOOGLE_API_KEY"):
    raise RuntimeError("GOOGLE_API_KEY not set; cannot use google provider")

Try / catch

try:
    provider = get_provider("google")
except ValueError as e:
    if "GOOGLE_API_KEY" in str(e):
        provider = get_provider("local")
    else:
        raise

Prevention

When it happens

Trigger: Passing provider='google' to get_provider() without GOOGLE_API_KEY in the environment.

Common situations: Confusing this var with GCLOUD_* or GOOGLE_APPLICATION_CREDENTIALS (neither is read here), missing secret in deployment, or unset var in cron/agent contexts.

Understand the failure class

Background: "environment variable is not set" and "Missing keys in environment" errors: what missing required env var messages mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of tirth8205/code-review-graph@b58668751a (2026-08-28). Data as JSON: /api/errors/7a83c764f9d439a1. Report an issue: GitHub.