{"record":{"id":"2b700bb7971eb5de","repo":"crewAIInc/crewAI","slug":"failed-to-initialize-self-config-provider-embedd","errorCode":null,"errorMessage":"Failed to initialize {self.config.provider} embedding service: {e}","messagePattern":"Failed to initialize (.+?) embedding service: (.+?)","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"lib/crewai-tools/src/crewai_tools/rag/embedding_service.py","lineNumber":132,"sourceCode":"            from crewai.rag.embeddings.factory import build_embedder\n\n            config = self._build_provider_config()\n\n            self._embedding_function = build_embedder(config)\n\n            logger.info(\n                f\"Initialized {self.config.provider} embedding service with model \"\n                f\"{self.config.model}\"\n            )\n\n        except ImportError as e:\n            raise ImportError(\n                f\"CrewAI embedding providers not available. \"\n                f\"Make sure crewai is installed: {e}\"\n            ) from e\n        except Exception as e:\n            logger.error(f\"Failed to initialize embedding function: {e}\")\n            raise RuntimeError(\n                f\"Failed to initialize {self.config.provider} embedding service: {e}\"\n            ) from e\n\n    def _build_provider_config(self) -> dict[str, Any]:\n        \"\"\"Build configuration dictionary for CrewAI's embedding factory.\"\"\"\n        base_config = {\"provider\": self.config.provider, \"config\": {}}\n\n        # Provider-specific configuration mapping\n        if self.config.provider == \"openai\":\n            base_config[\"config\"] = {\n                \"api_key\": self.config.api_key,\n                \"model_name\": self.config.model,\n                **self.config.extra_config,\n            }\n        elif self.config.provider == \"azure\":\n            base_config[\"config\"] = {\n                \"api_key\": self.config.api_key,\n                \"model_name\": self.config.model,","sourceCodeStart":114,"sourceCodeEnd":150,"githubUrl":"https://github.com/crewAIInc/crewAI/blob/754d7323beb2fd042e33444a115ea2d5a47193f0/lib/crewai-tools/src/crewai_tools/rag/embedding_service.py#L114-L150","documentation":"The generic except in EmbeddingService initialization: build_embedder(config) ran but raised (invalid provider name, bad API key format caught at construction, unknown config keys, provider client instantiation failure). The service wraps it as RuntimeError naming the provider, and logs the underlying error before raising. The chained exception carries the root cause.","triggerScenarios":"config.provider set to a string build_embedder doesn't recognize (typo like 'open_ai' vs 'openai'); missing required provider config (api_key None passed to a client that validates); incompatible provider config schema after a crewai upgrade changed the factory's expected keys.","commonSituations":"Config-driven provider selection with typos; switching embedding providers (openai, gemini, cohere, etc.) while reusing the wrong config keys; crewai version changes to the embedder factory schema.","solutions":["Check the logged error / e.__cause__ for the factory's specific complaint","Verify the provider string against crewai's supported providers (exact spelling, e.g. 'openai')","Pass required credentials in config (api_key) and correct per-provider keys (model_name etc.)","Upgrade crewai-tools and crewai in lockstep so the config schema matches"],"exampleFix":"# before\nsvc = EmbeddingService(config=EmbeddingConfig(provider='open_ai', model='text-embedding-3-small'))\n# after\nsvc = EmbeddingService(config=EmbeddingConfig(provider='openai', model='text-embedding-3-small', api_key=os.environ['OPENAI_API_KEY']))","handlingStrategy":"validation","validationCode":"KNOWN_PROVIDERS = {'openai', 'google', 'cohere', 'azure', 'vertexai', 'ollama', 'anthropic', 'huggingface'}\nif cfg.provider not in KNOWN_PROVIDERS:\n    raise ValueError(f'unknown embedding provider: {cfg.provider}')\nif cfg.provider == 'openai' and not (cfg.api_key or os.getenv('OPENAI_API_KEY')):\n    raise ValueError('OPENAI_API_KEY not set')","typeGuard":"def is_known_provider(p: str) -> bool:\n    return p in KNOWN_PROVIDERS","tryCatchPattern":"try:\n    svc = EmbeddingService(config=cfg)\nexcept RuntimeError as e:\n    logger.error('embedder init failed: %s', e.__cause__)\n    raise","preventionTips":["Validate provider strings against crewai's factory docs before config load","Supply per-provider required keys (api_key, model) explicitly","Upgrade crewai and crewai-tools together when the factory schema changes"],"tags":["rag","embeddings","configuration","runtime-error"],"backgroundTag":null,"analyzedSha":"754d7323beb2fd042e33444a115ea2d5a47193f0","analyzedAt":"2026-08-15T04:06:56.746Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}