ooai_llm.providers

Provider normalization helpers.

Purpose:

Normalize provider names, aliases, and package metadata used across the package.

Design:
  • Use a canonical provider enum that matches the provider strings commonly passed to LangChain and other SDKs.

  • Keep alias normalization and model-name inference in one place so both settings and typed model-string utilities reuse the same logic.

  • Expose native environment-variable names, LiteLLM provider prefixes, native SDK package names, and extra names for installation guidance.

Important mappings:

PROVIDER_ALIASES: Mapping from common aliases to canonical providers. PROVIDER_API_KEY_ENV_VARS: Native environment-variable names by provider. PROVIDER_LITELLM_PREFIXES: Native LiteLLM provider prefixes. PROVIDER_NATIVE_SDK_PACKAGES: Official or primary Python SDK package names. PROVIDER_LANGCHAIN_PACKAGES: LangChain integration package names. PROVIDER_EXTRAS: Optional-dependency extra names by provider.

Examples

>>> normalize_provider_name("claude") == Provider.ANTHROPIC
True
>>> infer_provider_from_model_name("gpt-5.4-mini") == Provider.OPENAI
True
>>> get_litellm_provider_prefix("google")
'gemini'

Attributes

Classes

Provider

Canonical provider identifiers.

Functions

normalize_provider_name(→ Provider | None)

Normalize a provider alias to its canonical enum value.

get_litellm_provider_prefix(→ str | None)

Return the canonical LiteLLM provider prefix for a provider.

infer_provider_from_model_name(→ Provider | None)

Infer a provider from a raw model name.

split_model_string(→ tuple[Provider | None, str])

Split a model string into provider and model parts.

Module Contents

class ooai_llm.providers.Provider[source]

Bases: enum.StrEnum

Canonical provider identifiers.

OPENAI = 'openai'[source]
ANTHROPIC = 'anthropic'[source]
GOOGLE_GENAI = 'google_genai'[source]
XAI = 'xai'[source]
DEEPSEEK = 'deepseek'[source]
MISTRAL = 'mistral'[source]
ooai_llm.providers.PROVIDER_ALIASES: dict[str, Provider][source]
ooai_llm.providers.PROVIDER_API_KEY_ENV_VARS: dict[Provider, str][source]
ooai_llm.providers.PROVIDER_LITELLM_PREFIXES: dict[Provider, str][source]
ooai_llm.providers.PROVIDER_NATIVE_SDK_PACKAGES: dict[Provider, str][source]
ooai_llm.providers.PROVIDER_LANGCHAIN_PACKAGES: dict[Provider, str][source]
ooai_llm.providers.PROVIDER_EXTRAS: dict[Provider, str][source]
ooai_llm.providers.normalize_provider_name(provider: Provider | str | None) Provider | None[source]

Normalize a provider alias to its canonical enum value.

Parameters:

provider – Provider enum, alias, or None.

Returns:

Canonical provider enum or None when provider is absent.

Raises:

ValueError – If the provider value is unknown.

ooai_llm.providers.get_litellm_provider_prefix(provider: Provider | str | None) str | None[source]

Return the canonical LiteLLM provider prefix for a provider.

Parameters:

provider – Canonical provider or alias.

Returns:

LiteLLM provider prefix or None when provider is absent.

ooai_llm.providers.infer_provider_from_model_name(model_name: str) Provider | None[source]

Infer a provider from a raw model name.

Parameters:

model_name – Raw or provider-prefixed model string.

Returns:

Inferred provider enum, or None when inference is not possible.

ooai_llm.providers.split_model_string(model: str) tuple[Provider | None, str][source]

Split a model string into provider and model parts.

Parameters:

model – Provider-prefixed or bare model string.

Returns:

A tuple of (provider, model_name) where provider may be None.

Examples

>>> split_model_string("openai:gpt-5.4")
(<Provider.OPENAI: 'openai'>, 'gpt-5.4')
>>> split_model_string("anthropic/claude-sonnet-4")
(<Provider.ANTHROPIC: 'anthropic'>, 'claude-sonnet-4')