BerriAI/litellm · error · ValueError
api_key and api_base are required for Arize Phoenix prompt…
Error message
api_key and api_base are required for Arize Phoenix prompt integration
What it means
The Arize Phoenix prompt integration (`prompt_initializer` in litellm/integrations/arize/__init__.py) builds an ArizePhoenixPromptManager for prompts managed in Phoenix. It requires both an api_key (from litellm_params or the PHOENIX_API_KEY env var) and an api_base (litellm_params only — there is no env fallback for the base URL). Missing either raises this ValueError at prompt initialization.
Solutions
- Add both fields to the model's litellm_params: `api_key: os.environ/PHOENIX_API_KEY` and `api_base: https://app.phoenix.arize.com/s/workspace/v1` (or your local `http://localhost:6006`)
- Ensure PHOENIX_API_KEY is exported if api_key is not given inline
- Confirm the api_base points to the Phoenix API root that serves /prompt_versions endpoints, not the collector/traces endpoint
Example fix
# before
model_list:
- model_name: my-prompt
litellm_params:
model: openai/gpt-4o
prompt_id: my_prompt_id
# api_key / api_base missing -> ValueError
# after
model_list:
- model_name: my-prompt
litellm_params:
model: openai/gpt-4o
prompt_id: my_prompt_id
api_base: https://app.phoenix.arize.com/s/workspace/v1
api_key: os.environ/PHOENIX_API_KEY Defensive patterns
Strategy: validation
Validate before calling
import os
def phoenix_prompt_params(prompt_id: str, api_base: str | None = None) -> dict:
api_key = os.getenv("PHOENIX_API_KEY")
api_base = api_base or os.getenv("PHOENIX_API_BASE")
if not api_key:
raise SystemExit("PHOENIX_API_KEY not set")
if not api_base:
raise SystemExit("api_base required for Arize Phoenix prompts (no env fallback)")
return {"prompt_id": prompt_id, "api_key": api_key, "api_base": api_base} Try / catch
try:
manager = prompt_initializer(litellm_params, prompt_spec)
except ValueError as e:
if "api_key and api_base are required" in str(e):
raise SystemExit("Phoenix prompt config incomplete: set api_key/PHOENIX_API_KEY and api_base in litellm_params") from e
raise Prevention
- Remember api_base has no env fallback in the prompt initializer — always set it in litellm_params
- Schema-validate model entries that use Phoenix prompts: require model, prompt_id, api_key, api_base
When it happens
Trigger: Declaring a model with `model: arize/phoenix/...` style prompt routing, or any config that routes prompt management to `prompt_initializer`, with `api_key`/`PHOENIX_API_KEY` unset or `api_base` absent from litellm_params. Note api_base has NO environment fallback, so relying on PHOENIX_HOST or similar will not help.
Common situations: Setting PHOENIX_API_KEY but forgetting api_base in the model's litellm_params; assuming a default localhost base URL exists (it does for tracing, not for the prompt client); copy-pasting a Phoenix tracing config and expecting prompts to work with the same env vars.
Understand the failure class
Background: "X is required", "must be set", "cannot be empty": the missing-required-config error family, from Vertex AI project/location to WeChat keys — this error's family across 18 libraries.
Related errors
- api_base is required
- Authentication failed. Check your Arize Phoenix API key and…
- prompt_id is required for Arize Phoenix prompt manager
- Prompt version ' ' not found
- Access denied to prompt version
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/e1fe345e2bd77e2a.
Report an issue: GitHub.
Appendix: source
Thrown at litellm/integrations/arize/__init__.py:25
from litellm.types.prompts.init_prompts import SupportedPromptIntegrations
from .arize_phoenix_prompt_manager import ArizePhoenixPromptManager
# Global instances
global_arize_config: Final[dict | None] = None
def prompt_initializer(litellm_params: "PromptLiteLLMParams", prompt_spec: "PromptSpec") -> "CustomPromptManagement":
"""
Initialize a prompt from Arize Phoenix.
"""
api_key: Final = getattr(litellm_params, "api_key", None) or os.environ.get("PHOENIX_API_KEY")
api_base: Final = getattr(litellm_params, "api_base", None)
prompt_id: Final = getattr(litellm_params, "prompt_id", None)
if not api_key or not api_base:
raise ValueError("api_key and api_base are required for Arize Phoenix prompt integration")
try:
arize_prompt_manager: Final = ArizePhoenixPromptManager(
**{
"api_key": api_key,
"api_base": api_base,
"prompt_id": prompt_id,
**litellm_params.model_dump(exclude={"api_key", "api_base", "prompt_id"}),
},
)
return arize_prompt_manager
except Exception as e:
raise e
prompt_initializer_registry: Final = {
SupportedPromptIntegrations.ARIZE_PHOENIX.value: prompt_initializer,View on GitHub (pinned to 77b7c6c40c)