chroma-core/chroma · error · ValueError

The openai python package is not installed. Please install i

Error message

The openai python package is not installed. Please install it with `pip install openai`

What it means

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.

Source

Thrown at chromadb/utils/embedding_functions/baseten_embedding_function.py:28

class BasetenEmbeddingFunction(OpenAIEmbeddingFunction):
    def __init__(
        self,
        api_key: Optional[str],
        api_base: str,
        api_key_env_var: str = "CHROMA_BASETEN_API_KEY",
    ):
        """
        Initialize the BasetenEmbeddingFunction.
        Args:
            api_key (str, optional): The API key for your Baseten account
            api_base (str, required): The Baseten URL of the deployment
            api_key_env_var (str, optional): The environment variable to use for the API key. Defaults to "CHROMA_BASETEN_API_KEY".
        """
        try:
            import openai
        except ImportError:
            raise ValueError(
                "The openai python package is not installed. Please install it with `pip install openai`"
            )

        if api_key is not None:
            warnings.warn(
                "Direct api_key configuration will not be persisted. "
                "Please use environment variables via api_key_env_var for persistent storage.",
                DeprecationWarning,
            )

        if os.getenv("BASETEN_API_KEY") is not None:
            self.api_key_env_var = "BASETEN_API_KEY"
        else:
            self.api_key_env_var = api_key_env_var

        # Prioritize api_key argument, then environment variable
        resolved_api_key = api_key or os.getenv(self.api_key_env_var)
        if not resolved_api_key:

View on GitHub (pinned to aecdd12c8a)

Solutions

  1. Install the client: pip install openai (and pin it in requirements next to chromadb).
  2. Verify with python -c "import openai; print(openai.__version__)" in the same interpreter your app runs under.
  3. Add openai to the dependency list of any image/process that constructs or deserializes the Baseten function.

Example fix

# before: ValueError "The openai python package is not installed..."
ef = BasetenEmbeddingFunction(api_base="https://app.baseten.co/...")

# after: pip install openai
ef = BasetenEmbeddingFunction(api_base="https://app.baseten.co/...")
Defensive patterns

Strategy: validation

Validate before calling

import importlib.util

if importlib.util.find_spec("openai") is None:
    raise RuntimeError("openai is required for BasetenEmbeddingFunction; run: pip install openai")

from chromadb.utils.embedding_functions import BasetenEmbeddingFunction
ef = BasetenEmbeddingFunction(api_base=api_base, api_key_env_var="CHROMA_BASETEN_API_KEY")

Try / catch

try:
    ef = BasetenEmbeddingFunction(api_base=api_base, api_key_env_var="CHROMA_BASETEN_API_KEY")
except ValueError as e:
    if "openai python package" in str(e):
        raise RuntimeError("Install the openai package to use Baseten embeddings") from e
    raise

Prevention

When it happens

Trigger: Constructing BasetenEmbeddingFunction(api_key=..., api_base=...) — or deserializing a "baseten" config — in an environment where the openai package is not installed.

Common situations: Minimal venv with only chromadb; CI pipelines that skip extras; a worker image that never needed openai before Baseten support was added.

Related errors


AI-assisted analysis of chroma-core/chroma@aecdd12c8a (2026-08-16). Data as JSON: /api/errors/2da0f54f65247520. Report an issue: GitHub.