ooai_llm.model_defaults¶
Provider-generic model default refresh helpers.
- Purpose:
Build refreshed provider presets from live provider catalogs or LiteLLM’s local model registry so convenience factories can track newer models without hard-coding every provider release.
- Design:
Keep factory refresh opt-in and cache automatic refresh results in-process.
Prefer provider-native model listings when credentials are available.
Use LiteLLM metadata as an optional no-credential fallback.
Select presets with transparent name/cost/capability heuristics and return notes when a provider cannot be refreshed.
Examples
>>> from ooai_llm import AppSettings, refresh_model_defaults
>>> result = refresh_model_defaults(
... AppSettings(),
... providers=["openai"],
... source="litellm",
... )
>>> isinstance(result.settings, AppSettings)
True
Attributes¶
Classes¶
Candidate chat model used for provider preset selection. |
|
Recommended provider presets and the candidates used to pick them. |
|
Result of refreshing model defaults for one or more providers. |
|
Result of updating model defaults for immediate or persisted use. |
|
Cross-provider model catalog result for CLI and application display. |
Functions¶
Recommend provider presets from candidate chat models. |
|
|
List model candidates across providers from live catalogs or LiteLLM. |
|
Return settings with refreshed provider presets. |
|
Refresh model defaults according to factory auto-refresh settings. |
|
Build a non-secret settings override payload for model defaults. |
Render model-default overrides as |
|
Render model-default overrides as formatted JSON. |
|
Render model-default overrides in a supported persistence format. |
|
|
Refresh model defaults and optionally write reusable overrides. |
Module Contents¶
- class ooai_llm.model_defaults.ModelDefaultCandidate(/, **data: Any)[source]¶
Bases:
pydantic.BaseModelCandidate chat model used for provider preset selection.
- model_config[source]¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- provider: ooai_llm.providers.Provider[source]¶
- property model_string: ooai_llm.types.ModelString[source]¶
Return the provider-prefixed model string.
- property release_date: str | None[source]¶
Return the best available release-date label for display.
- property input_cost_per_1m_tokens: decimal.Decimal | None[source]¶
Return input-token cost normalized to one million tokens.
- property output_cost_per_1m_tokens: decimal.Decimal | None[source]¶
Return output-token cost normalized to one million tokens.
- property supports_chat: bool[source]¶
Return whether this candidate looks usable for chat/generation.
- property supports_reasoning: bool[source]¶
Return whether this candidate appears reasoning-oriented.
- class ooai_llm.model_defaults.ModelPresetRecommendation(/, **data: Any)[source]¶
Bases:
pydantic.BaseModelRecommended provider presets and the candidates used to pick them.
- model_config[source]¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- provider: ooai_llm.providers.Provider[source]¶
- candidates: list[ModelDefaultCandidate] = None[source]¶
- class ooai_llm.model_defaults.ModelDefaultsRefreshResult(/, **data: Any)[source]¶
Bases:
pydantic.BaseModelResult of refreshing model defaults for one or more providers.
- model_config[source]¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- settings: ooai_llm.settings.AppSettings[source]¶
- recommendations: dict[str, ModelPresetRecommendation] = None[source]¶
- class ooai_llm.model_defaults.ModelDefaultsUpdateResult(/, **data: Any)[source]¶
Bases:
pydantic.BaseModelResult of updating model defaults for immediate or persisted use.
- model_config[source]¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- settings: ooai_llm.settings.AppSettings[source]¶
- recommendations: dict[str, ModelPresetRecommendation] = None[source]¶
- output_format: ModelDefaultsExportFormat | None = None[source]¶
- class ooai_llm.model_defaults.ModelCatalogResult(/, **data: Any)[source]¶
Bases:
pydantic.BaseModelCross-provider model catalog result for CLI and application display.
- model_config[source]¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- models: list[ModelDefaultCandidate] = None[source]¶
- ooai_llm.model_defaults.recommend_provider_model_presets(provider: ooai_llm.providers.Provider | str, candidates: Sequence[ModelDefaultCandidate], *, source: str = 'custom') ModelPresetRecommendation[source]¶
Recommend provider presets from candidate chat models.
- Parameters:
provider – Provider being refreshed.
candidates – Candidate models from a provider catalog or LiteLLM.
source – Human-readable source label.
- Returns:
Preset recommendation for the provider.
- Raises:
ValueError – If no chat-like candidates are available.
- ooai_llm.model_defaults.list_model_catalog(settings: ooai_llm.settings.AppSettings | None = None, *, providers: Iterable[ooai_llm.providers.Provider | str] | None = None, source: ModelDefaultSource = 'auto', config: ooai_llm.catalog.ListModelsConfig | None = None, include_non_chat: bool = False, capabilities: Iterable[ModelCapabilityName] | None = None, min_context_tokens: int | None = None, min_output_tokens: int | None = None, max_input_cost_per_1m: decimal.Decimal | None = None, max_output_cost_per_1m: decimal.Decimal | None = None, released_after: str | None = None, released_before: str | None = None, sort_by: ModelCatalogSortName = 'recency', strict: bool = False) ModelCatalogResult[source]¶
List model candidates across providers from live catalogs or LiteLLM.
- Parameters:
settings – Base settings. Defaults to
AppSettings().providers – Providers to list. Defaults to every supported provider.
source –
"provider"for live model-listing APIs,"litellm"for LiteLLM metadata, or"auto"to use provider catalogs when credentials exist and LiteLLM otherwise.config – Optional provider-listing configuration.
include_non_chat – Include embeddings, audio, image, and other non-chat-like models instead of filtering to chat candidates.
capabilities – Optional capability labels that every returned model must satisfy, such as
"reasoning","coding", or"vision".min_context_tokens – Optional minimum context/input-token window.
min_output_tokens – Optional minimum output-token limit.
max_input_cost_per_1m – Optional maximum input cost per one million tokens.
max_output_cost_per_1m – Optional maximum output cost per one million tokens.
released_after – Optional lower release-date bound. Accepts
YYYY-MM-DD,YYYY-MM, or common date-like model-name suffixes.released_before – Optional upper release-date bound.
sort_by – Sort mode for the returned rows.
strict – Raise on the first provider listing failure.
- Returns:
Catalog result containing model rows and non-fatal notes.
- ooai_llm.model_defaults.refresh_model_defaults(settings: ooai_llm.settings.AppSettings | None = None, *, providers: Iterable[ooai_llm.providers.Provider | str] | None = None, source: ModelDefaultSource = 'auto', config: ooai_llm.catalog.ListModelsConfig | None = None, primary_alias_provider: ooai_llm.providers.Provider | str = Provider.OPENAI, strict: bool = False) ModelDefaultsRefreshResult[source]¶
Return settings with refreshed provider presets.
- Parameters:
settings – Base settings. Defaults to
AppSettings().providers – Providers to refresh. Defaults to every supported provider.
source –
"provider"for live provider APIs,"litellm"for LiteLLM’s local registry, or"auto"to prefer live APIs when credentials are present and fall back to LiteLLM.config – Optional provider-listing configuration.
primary_alias_provider – Provider whose refreshed presets should update global aliases like
alias="latest"andalias="cheap".strict – Raise on the first provider refresh failure instead of returning notes and leaving that provider unchanged.
- Returns:
Refresh result containing copied settings and per-provider recommendations.
- ooai_llm.model_defaults.auto_refresh_model_defaults(settings: ooai_llm.settings.AppSettings | None = None, *, enabled: bool | None = None, force: bool = False) ModelDefaultsRefreshResult[source]¶
Refresh model defaults according to factory auto-refresh settings.
- Parameters:
settings – Base settings. Defaults to
AppSettings().enabled – Optional override for
settings.llm.auto_refresh_models.enabled.force – Bypass the process-local refresh cache.
- Returns:
Refresh result. When automatic refresh is disabled, the original settings are returned unchanged with no recommendations.
- ooai_llm.model_defaults.build_model_default_overrides(settings: ooai_llm.settings.AppSettings, *, providers: Iterable[ooai_llm.providers.Provider | str] | None = None, include_aliases: bool = True) dict[str, Any][source]¶
Build a non-secret settings override payload for model defaults.
- Parameters:
settings – Settings containing the desired model defaults.
providers – Providers to include. Defaults to every supported provider.
include_aliases – Whether to include global aliases and default model.
- Returns:
Nested dictionary suitable for
AppSettings(**payload).
- ooai_llm.model_defaults.model_default_overrides_to_env(overrides: Mapping[str, Any]) str[source]¶
Render model-default overrides as
OOAI_nested environment variables.
- ooai_llm.model_defaults.model_default_overrides_to_json(overrides: Mapping[str, Any]) str[source]¶
Render model-default overrides as formatted JSON.
- ooai_llm.model_defaults.render_model_default_overrides(overrides: Mapping[str, Any], *, output_format: ModelDefaultsExportFormat) str[source]¶
Render model-default overrides in a supported persistence format.
- ooai_llm.model_defaults.update_model_defaults(settings: ooai_llm.settings.AppSettings | None = None, *, providers: Iterable[ooai_llm.providers.Provider | str] | None = None, source: ModelDefaultSource = 'auto', config: ooai_llm.catalog.ListModelsConfig | None = None, primary_alias_provider: ooai_llm.providers.Provider | str = Provider.OPENAI, strict: bool = False, output_path: str | pathlib.Path | None = None, output_format: ModelDefaultsExportFormat = 'json', include_aliases: bool = True) ModelDefaultsUpdateResult[source]¶
Refresh model defaults and optionally write reusable overrides.
- Parameters:
settings – Base settings. Defaults to
AppSettings().providers – Providers to update. Defaults to every supported provider.
source – Model source, passed through to
refresh_model_defaults.config – Optional provider-listing configuration.
primary_alias_provider – Provider whose presets update global aliases.
strict – Raise on provider refresh failure.
output_path – Optional file path to write rendered overrides.
output_format –
"json"or"env".include_aliases – Whether exported overrides include global aliases.
- Returns:
Update result with refreshed settings, overrides, and rendered text when
output_pathis omitted.