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
- 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.
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
- 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.
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
- The api_base argument must be provided.
- The PIL python package is not installed. Please install it w
- Failed to register embedding function: {e}
- Failed to register sparse embedding function: {e}
- Config must contain a 'name' field.
AI-assisted analysis of chroma-core/chroma@aecdd12c8a (2026-08-16).
Data as JSON: /api/errors/2da0f54f65247520.
Report an issue: GitHub.