Skip to content

base

base

Base types and configuration for LLM providers.

LLMClient

Bases: Protocol

Protocol that all LLM providers must satisfy.

Returns OpenAI-format dicts everywhere so existing parsing code works unchanged regardless of provider.

Source code in autochecklist/providers/base.py
@runtime_checkable
class LLMClient(Protocol):
    """Protocol that all LLM providers must satisfy.

    Returns OpenAI-format dicts everywhere so existing parsing code
    works unchanged regardless of provider.
    """

    def chat_completion(
        self,
        model: str,
        messages: List[Dict[str, str]],
        temperature: float = 0.7,
        max_tokens: int = 2048,
        **kwargs: Any,
    ) -> Dict[str, Any]: ...

    def get_logprobs(
        self,
        model: str,
        messages: List[Dict[str, str]],
        **kwargs: Any,
    ) -> Dict[str, float]: ...

    def supports_logprobs(self, model: str) -> bool: ...

    def batch_completions(
        self,
        requests: List[Dict[str, Any]],
        concurrency: int = 5,
        progress_callback: Optional[Callable[[int], None]] = None,
    ) -> List[Dict[str, Any]]: ...

    def close(self) -> None: ...

    def __enter__(self) -> "LLMClient": ...

    def __exit__(self, *args: Any) -> None: ...

ProviderConfig dataclass

Configuration preset for an LLM provider.

Source code in autochecklist/providers/base.py
@dataclass
class ProviderConfig:
    """Configuration preset for an LLM provider."""

    name: str
    base_url: Optional[str] = None
    api_key_env_var: Optional[str] = None
    default_headers: Dict[str, str] = field(default_factory=dict)
    requires_api_key: bool = True

get_provider_config(provider, base_url=None)

Get provider config with optional overrides.

Parameters:

Name Type Description Default
provider str

Provider name ("openrouter", "openai", "vllm")

required
base_url Optional[str]

Override the default base URL

None

Returns:

Type Description
ProviderConfig

ProviderConfig with overrides applied

Source code in autochecklist/providers/base.py
def get_provider_config(
    provider: str,
    base_url: Optional[str] = None,
) -> ProviderConfig:
    """Get provider config with optional overrides.

    Args:
        provider: Provider name ("openrouter", "openai", "vllm")
        base_url: Override the default base URL

    Returns:
        ProviderConfig with overrides applied
    """
    if provider not in PROVIDER_PRESETS:
        raise ValueError(
            f"Unknown provider: {provider}. "
            f"Available: {', '.join(PROVIDER_PRESETS.keys())}"
        )

    preset = PROVIDER_PRESETS[provider]

    if base_url is not None:
        # Return a copy with overridden base_url
        return ProviderConfig(
            name=preset.name,
            base_url=base_url,
            api_key_env_var=preset.api_key_env_var,
            default_headers=preset.default_headers,
            requires_api_key=preset.requires_api_key,
        )

    return preset