{"record":{"id":"72412a7c178657d3","repo":"tirth8205/code-review-graph","slug":"google-genai-not-installed-run-pip-install-code","errorCode":null,"errorMessage":"google-genai not installed. Run: pip install \"code-review-graph[google-embeddings]\"","messagePattern":"google-genai not installed\\. Run: pip install \"code-review-graph\\[google-embeddings\\]\"","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"code_review_graph/embeddings.py","lineNumber":190,"sourceCode":"        model = self._get_model()\n        if hasattr(model, \"get_embedding_dimension\"):\n            return model.get_embedding_dimension()\n        return model.get_sentence_embedding_dimension()\n\n    @property\n    def name(self) -> str:\n        return f\"local:{self._model_name}\"\n\n\nclass GoogleEmbeddingProvider(EmbeddingProvider):\n    def __init__(self, api_key: str, model: str = \"gemini-embedding-001\") -> None:\n        try:\n            from google import genai\n            self._client = genai.Client(api_key=api_key)\n            self.model = model\n            self._dimension: int | None = None\n        except ImportError:\n            raise ImportError(\n                \"google-genai not installed. \"\n                \"Run: pip install \\\"code-review-graph[google-embeddings]\\\"\"\n            )\n\n    def embed(self, texts: list[str]) -> list[list[float]]:\n        batch_size = 100\n        results = []\n        for i in range(0, len(texts), batch_size):\n            batch = texts[i:i + batch_size]\n            response = self._call_with_retry(\n                lambda b=batch: self._client.models.embed_content(\n                    model=self.model,\n                    contents=b,\n                    config={\"task_type\": \"RETRIEVAL_DOCUMENT\"},\n                )\n            )\n            results.extend([e.values for e in response.embeddings])\n        if self._dimension is None and results:","sourceCodeStart":172,"sourceCodeEnd":208,"githubUrl":"https://github.com/tirth8205/code-review-graph/blob/b58668751ab0c7670c078cf7cbd4d1f5b8e54f81/code_review_graph/embeddings.py#L172-L208","documentation":"The Google embedding provider's __init__ tries to construct a google-genai Client and catches ImportError, re-raising with a hint to install the [google-embeddings] extra. It means the optional google-genai SDK is absent from the environment, so no Google embeddings can be produced until installed and an API key supplied.","triggerScenarios":"Instantiating the Google embeddings provider class (e.g. GoogleEmbeddingProvider(api_key=...)) in an environment where `from google import genai` fails.","commonSituations":"Base install without extras, or confusion between the legacy `google-generativeai` package and the newer `google-genai` SDK — having only the former installed still triggers this error.","solutions":["pip install 'code-review-graph[google-embeddings]'","Confirm the right SDK is present: python -c \"from google import genai\" (not google-generativeai)","Ensure GOOGLE_API_KEY / the passed api_key is set so construction succeeds after install"],"exampleFix":"# before\npip install code-review-graph google-generativeai\n# after\npip install 'code-review-graph[google-embeddings]'","handlingStrategy":"validation","validationCode":"import importlib.util\n\nif importlib.util.find_spec(\"google.genai\") is None:\n    raise SystemExit(\"Run: pip install 'code-review-graph[google-embeddings]'\")","typeGuard":"def google_provider_available() -> bool:\n    return importlib.util.find_spec(\"google.genai\") is not None","tryCatchPattern":"try:\n    provider = GoogleProvider(api_key=...)\nexcept ImportError as e:\n    if \"google-genai\" in str(e):\n        # fall back to another provider or install extra\n        provider = LocalProvider()","preventionTips":["Install the [google-embeddings] extra in the same environment as the app","Don't rely on the legacy google-generativeai package — the provider needs google-genai","Feature-detect the SDK before choosing Google as the embedding backend"],"tags":["python","missing-dependency","import-error","google-genai","embeddings"],"backgroundTag":"missing-optional-dependency","analyzedSha":"b58668751ab0c7670c078cf7cbd4d1f5b8e54f81","analyzedAt":"2026-08-28T13:19:08.966Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}