{"record":{"id":"2da0f54f65247520","repo":"chroma-core/chroma","slug":"the-openai-python-package-is-not-installed-please","errorCode":null,"errorMessage":"The openai python package is not installed. Please install it with `pip install openai`","messagePattern":"The openai python package is not installed\\. Please install it with `pip install openai`","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"chromadb/utils/embedding_functions/baseten_embedding_function.py","lineNumber":28,"sourceCode":"\nclass BasetenEmbeddingFunction(OpenAIEmbeddingFunction):\n    def __init__(\n        self,\n        api_key: Optional[str],\n        api_base: str,\n        api_key_env_var: str = \"CHROMA_BASETEN_API_KEY\",\n    ):\n        \"\"\"\n        Initialize the BasetenEmbeddingFunction.\n        Args:\n            api_key (str, optional): The API key for your Baseten account\n            api_base (str, required): The Baseten URL of the deployment\n            api_key_env_var (str, optional): The environment variable to use for the API key. Defaults to \"CHROMA_BASETEN_API_KEY\".\n        \"\"\"\n        try:\n            import openai\n        except ImportError:\n            raise ValueError(\n                \"The openai python package is not installed. Please install it with `pip install openai`\"\n            )\n\n        if api_key is not None:\n            warnings.warn(\n                \"Direct api_key configuration will not be persisted. \"\n                \"Please use environment variables via api_key_env_var for persistent storage.\",\n                DeprecationWarning,\n            )\n\n        if os.getenv(\"BASETEN_API_KEY\") is not None:\n            self.api_key_env_var = \"BASETEN_API_KEY\"\n        else:\n            self.api_key_env_var = api_key_env_var\n\n        # Prioritize api_key argument, then environment variable\n        resolved_api_key = api_key or os.getenv(self.api_key_env_var)\n        if not resolved_api_key:","sourceCodeStart":10,"sourceCodeEnd":46,"githubUrl":"https://github.com/chroma-core/chroma/blob/aecdd12c8a891610db8653630b066b32ceb678b5/chromadb/utils/embedding_functions/baseten_embedding_function.py#L10-L46","documentation":"BasetenEmbeddingFunction subclasses OpenAIEmbeddingFunction and talks to a Baseten deployment through the OpenAI-compatible client, so its constructor imports openai and immediately builds openai.OpenAI(...). The openai package is an optional dependency of chromadb; if it is missing, the ImportError is re-raised as this ValueError before any credential or URL validation happens.","triggerScenarios":"Constructing BasetenEmbeddingFunction(api_key=..., api_base=...) — or deserializing a \"baseten\" config — in an environment where the openai package is not installed.","commonSituations":"Minimal venv with only chromadb; CI pipelines that skip extras; a worker image that never needed openai before Baseten support was added.","solutions":["Install the client: pip install openai (and pin it in requirements next to chromadb).","Verify with python -c \"import openai; print(openai.__version__)\" in the same interpreter your app runs under.","Add openai to the dependency list of any image/process that constructs or deserializes the Baseten function."],"exampleFix":"# before: ValueError \"The openai python package is not installed...\"\nef = BasetenEmbeddingFunction(api_base=\"https://app.baseten.co/...\")\n\n# after: pip install openai\nef = BasetenEmbeddingFunction(api_base=\"https://app.baseten.co/...\")","handlingStrategy":"validation","validationCode":"import importlib.util\n\nif importlib.util.find_spec(\"openai\") is None:\n    raise RuntimeError(\"openai is required for BasetenEmbeddingFunction; run: pip install openai\")\n\nfrom chromadb.utils.embedding_functions import BasetenEmbeddingFunction\nef = BasetenEmbeddingFunction(api_base=api_base, api_key_env_var=\"CHROMA_BASETEN_API_KEY\")","typeGuard":null,"tryCatchPattern":"try:\n    ef = BasetenEmbeddingFunction(api_base=api_base, api_key_env_var=\"CHROMA_BASETEN_API_KEY\")\nexcept ValueError as e:\n    if \"openai python package\" in str(e):\n        raise RuntimeError(\"Install the openai package to use Baseten embeddings\") from e\n    raise","preventionTips":["Include openai in the dependency bundle whenever Baseten embeddings are enabled.","Probe optional imports at startup (find_spec) rather than discovering failures on first embed.","Keep a single extras group (chromadb + openai + pillow + fastembed as needed) for embedding-heavy services."],"tags":["python","baseten","openai-sdk","optional-dependency","embedding-functions","chromadb"],"backgroundTag":"missing-optional-dependency","analyzedSha":"aecdd12c8a891610db8653630b066b32ceb678b5","analyzedAt":"2026-08-16T21:53:27.228Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}