MemPalace/mempalace · error · LLMError
Unknown provider '{name}'. Choices: {sorted(PROVIDERS.keys()
Error message
Unknown provider '{name}'. Choices: {sorted(PROVIDERS.keys())} What it means
LLMError raised by build_provider() when the requested provider name is not a key in the PROVIDERS registry (ollama, openai-compat, anthropic). The message lists the valid choices, making typos and stale names easy to spot.
Source
Thrown at mempalace/llm_client.py:464
}
def get_provider(
name: str,
model: str,
endpoint: Optional[str] = None,
api_key: Optional[str] = None,
timeout: int = 120,
**provider_kwargs: object,
) -> LLMProvider:
"""Build a provider by name. Raises LLMError on unknown provider.
Extra kwargs (e.g. num_ctx for Ollama) are forwarded to the provider's
constructor; providers that don't recognize them ignore via **_.
"""
cls = PROVIDERS.get(name)
if cls is None:
raise LLMError(f"Unknown provider '{name}'. Choices: {sorted(PROVIDERS.keys())}")
return cls(model=model, endpoint=endpoint, api_key=api_key, timeout=timeout, **provider_kwargs)
View on GitHub (pinned to 06cb6987f0)
Solutions
- Use one of the listed choices exactly: ollama, openai-compat, anthropic
- For any /v1/chat/completions server (vLLM, LM Studio, llama.cpp), the name is openai-compat
- Trim/normalize the provider string in config before passing it
Example fix
# before
provider = build_provider("openai", model="gpt-4o-mini", endpoint="http://localhost:8000") # Unknown provider 'openai'
# after
provider = build_provider("openai-compat", model="gpt-4o-mini", endpoint="http://localhost:8000") Defensive patterns
Strategy: type-guard
Type guard
from mempalace.llm_client import PROVIDERS
def is_known_provider(name: str) -> bool:
return isinstance(name, str) and name in PROVIDERS Try / catch
from mempalace.llm_client import LLMError, PROVIDERS
try:
provider = build_provider(name, model=m)
except LLMError as e:
if "Unknown provider" in str(e):
name = "ollama" if "ollama" in name.lower() else "openai-compat"
provider = build_provider(name, model=m)
else:
raise Prevention
- Validate provider names against PROVIDERS keys at config load time
- Strip whitespace and lowercase before comparison
- Remember any /v1/chat/completions server (vLLM, LM Studio) is 'openai-compat'
When it happens
Trigger: build_provider("openai", ...), build_provider("OpenAI-Compat", ...), or any name not exactly matching a registry key — including case mismatches and old names from earlier versions.
Common situations: Config files or CLI flags written against an older/newer provider list; users naturally typing "openai" instead of "openai-compat"; YAML/JSON config with trailing whitespace in the provider field.
Related errors
- LLM_ENDPOINT must use http:// or https:// (got scheme {schem
- HTTP {e.code} from {url}: {detail or e.reason}
- openai-compat provider requires --llm-endpoint
- Anthropic provider requires ANTHROPIC_API_KEY env or --llm-a
- milvus_consistency_level must be one of: {allowed}
AI-assisted analysis of MemPalace/mempalace@06cb6987f0 (2026-08-15).
Data as JSON: /api/errors/fde49e15a13cf9e5.
Report an issue: GitHub.