zylon-ai/private-gpt · error · ValueError
Unknown default {model_type} model '{requested_default}'. Av
Error message
Unknown default {model_type} model '{requested_default}'. Available discovered models: {available} What it means
Raised by scripts/auto_discover_models.py when the requested default model name (from the CLI or configured default) does not match any model discovered from PGPT_MODELS_* environment variables. After discovery builds the set of model names, _resolve_default_model validates the explicitly requested default against that set and refuses to guess, listing all discovered names (or 'none' if discovery found nothing).
Source
Thrown at scripts/auto_discover_models.py:82
data.pop("sampling_params", None)
data.pop("reasoning_sampling_params", None)
tags = data.get("tags")
if isinstance(tags, list):
data["tags"] = sorted(tags)
return data
def _resolve_default_model(
requested_default: str | None,
configured_default: str,
discovered_models: list[LLMModelConfig] | list[EmbeddingModelConfig],
model_type: str,
) -> str:
discovered_names = {model.name for model in discovered_models}
if requested_default:
if requested_default not in discovered_names:
available = ", ".join(sorted(discovered_names)) or "none"
raise ValueError(
f"Unknown default {model_type} model '{requested_default}'. "
f"Available discovered models: {available}"
)
return requested_default
if configured_default and configured_default in discovered_names:
return configured_default
if discovered_models:
return discovered_models[0].name
return ""
def _find_model(
models: list[EmbeddingModelConfig],
name: str,
) -> EmbeddingModelConfig | None:
return next((model for model in models if model.name == name), None)
View on GitHub (pinned to 4a030776a3)
Solutions
- Run the script once without --default-llm/--default-embedding and read the 'Available discovered models' list in the error/output, then request one of those exact names
- Set the PGPT_MODELS_<ID>_* variables so the desired model is actually discovered before requesting it as default
- Match the exact lowercased model ID derived from the env var name (PGPT_MODELS_GPT4_API_KEY -> 'gpt4')
- If you intended the configured YAML default, omit the CLI default flag - it is used only when present
Example fix
# before export PGPT_MODELS_LLAMA3_API_KEY=k python scripts/auto_discover_models.py --default-llm gpt-4o # after python scripts/auto_discover_models.py --default-llm llama3
Defensive patterns
Strategy: validation
Validate before calling
import os
def discovered_model_names() -> set[str]:
names = set()
for key in os.environ:
if key.startswith("PGPT_MODELS_") and key.count("_") >= 3:
_, _, mid, _ = key.split("_", 3)
names.add(mid.lower())
return names
requested = "gpt-4o".strip().lower()
assert requested in discovered_model_names(), f"{requested} not discovered" Type guard
null
Try / catch
null
Prevention
- Derive the default model name from the same env var stem you set (PGPT_MODELS_X_... -> default 'x')
- Run discovery once without a --default flag and read the available list before pinning a default
- Remember model IDs are lowercased during discovery; request the lowercase form
- Ensure the PGPT_MODELS_* variables are present in the environment that executes the script
When it happens
Trigger: Running auto_discover_models.py --default-llm gpt-4o while only PGPT_MODELS_LLAMA3_* variables are set; the requested name differing in case or whitespace from the discovered name (model IDs are lowercased during discovery); discovery finding zero models because no PGPT_MODELS_ vars with at least 3 underscores are set, making every default invalid.
Common situations: Renaming a model's env vars without updating the default flag; drift between the discovery environment (CI job with injected secrets) and the local shell where discovery is empty; passing a display name ('GPT-4o') instead of the env-derived ID ('gpt4').
Related errors
- Conflict setting environment variable for model {model_id}:
- Environment variable {env_var} is not set and not default wa
- Unsupported PGPT_WORKER_MODE={name!r}. Registered modes: {su
- PGPT_WORKER_MODE is required
- Distribution metadata is missing Name
AI-assisted analysis of zylon-ai/private-gpt@4a030776a3 (2026-08-15).
Data as JSON: /api/errors/aa69bc13832a7c49.
Report an issue: GitHub.