BerriAI/litellm · error · ValueError
CREATE run is not supported for {custom_llm_provider}
Error message
CREATE run is not supported for {custom_llm_provider} What it means
Raised in litellm.evals.create_run (litellm/evals/main.py:1213) when the resolved provider has no Evals API config. Run execution (launching an eval against a data source) is OpenAI-only in LiteLLM — get_provider_evals_api_config maps only LlmProviders.OPENAI to OpenAIEvalsConfig — so any other custom_llm_provider is refused before the run request is assembled.
Source
Thrown at litellm/evals/main.py:1213
try:
litellm_logging_obj: Final[LiteLLMLoggingObj] = kwargs.get("litellm_logging_obj")
litellm_call_id: Final[str | None] = kwargs.get("litellm_call_id", None)
_is_async: Final = kwargs.pop("acreate_run", False) is True
# Get LiteLLM parameters
litellm_params: Final = GenericLiteLLMParams(**kwargs)
# Determine provider
if custom_llm_provider is None:
custom_llm_provider = "openai"
# Get provider config
evals_api_provider_config: BaseEvalsAPIConfig | None = ProviderConfigManager.get_provider_evals_api_config(
provider=litellm.LlmProviders(custom_llm_provider),
)
if evals_api_provider_config is None:
raise ValueError(f"CREATE run is not supported for {custom_llm_provider}")
# Build create request
create_request: Final[CreateRunRequest] = {
"data_source": data_source,
}
if name is not None:
create_request["name"] = name
# if metadata is not None:
# create_request["metadata"] = metadata
# Merge extra_body if provided
if extra_body:
create_request.update(extra_body)
# Validate environment and get headers
headers = extra_headers or {}
headers = evals_api_provider_config.validate_environment(headers=headers, litellm_params=litellm_params)
View on GitHub (pinned to 6c2dcb801b)
Solutions
- Run evals with custom_llm_provider='openai' (default) — note the model under test is specified inside testing_criteria/data_source, not via custom_llm_provider
- For non-OpenAI evaluation, use LiteLLM completion calls inside your own grading loop or a framework like braintrust/langfuse
- Verify OPENAI_API_KEY and api_base are set for the OpenAI Evals endpoint
Example fix
# before litellm.evals.create_run(eval_id="eval_123", data_source=ds, custom_llm_provider="anthropic") # after litellm.evals.create_run(eval_id="eval_123", data_source=ds, custom_llm_provider="openai")
Defensive patterns
Strategy: validation
Validate before calling
if custom_llm_provider != "openai":
raise ValueError("create_run requires the OpenAI provider")
litellm.evals.create_run(eval_id=eval_id, data_source=ds, custom_llm_provider="openai") Type guard
def evals_provider_supported(provider: str) -> bool:
return provider == "openai" Try / catch
try:
litellm.evals.create_run(eval_id=eval_id, data_source=ds)
except ValueError as e:
if "CREATE run is not supported" in str(e):
logger.error("eval runs execute on OpenAI; set custom_llm_provider='openai'")
raise Prevention
- Remember custom_llm_provider selects the eval HOST, not the model under test
- Use a dedicated eval harness (own grading loop) for non-OpenAI model evaluation
- Assert provider == 'openai' in a preflight check inside eval orchestration code
When it happens
Trigger: Calling litellm.evals.create_run(eval_id=..., data_source=..., custom_llm_provider='anthropic'|'azure'|...); executing OpenAI-created evals through a different provider's credentials.
Common situations: Evaluating models on non-OpenAI providers and expecting litellm.evals to run them; passing the provider of the model under test rather than the provider hosting the eval.
Related errors
- LIST runs is not supported for {custom_llm_provider}
- GET run is not supported for {custom_llm_provider}
- CANCEL run is not supported for {custom_llm_provider}
- CREATE eval is not supported for {custom_llm_provider}
- LIST evals is not supported for {custom_llm_provider}
AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15).
Data as JSON: /api/errors/b05883b9821dbdfb.
Report an issue: GitHub.