Config Module
Configuration management utilities for LLM applications.
This module provides comprehensive tools for managing LLM-specific configuration across different providers and models.
Usage:
# Common imports - top-level
from kerb.config import (
Config, # Alias for ConfigManager
ConfigManager, # Main configuration manager
load_config, # Load configuration from file
save_config, # Save configuration to file
)
# Providers - specialized
from kerb.config.providers import (
get_openai_config,
get_anthropic_config,
get_google_config,
validate_credentials,
)
Features:
Centralized LLM configuration management
Multi-provider support (OpenAI, Anthropic, Google, Azure, HuggingFace)
Secure API key management with environment variables
Encrypted secrets storage for prototyping/development
Model configuration with full parameter control (temperature, max_tokens, etc.)
Provider switching utilities
Configuration validation
File-based and environment variable loading
Change listeners for reactive updates
Configuration history and rollback
- kerb.config.Config
alias of
ConfigManager
- class kerb.config.ConfigManager(app_name='llm_app', config_file=None, auto_load_env=True, encryption_key=None, encryption_salt=None)[source]
Bases:
objectCentralized configuration manager for LLM applications.
Manages model configs, provider settings, and API keys in a unified way. Focuses on LLM-specific configuration without general application settings.
- __init__(app_name='llm_app', config_file=None, auto_load_env=True, encryption_key=None, encryption_salt=None)[source]
Initialize configuration manager.
- Parameters:
- switch_provider(from_provider, to_provider, model_mapping=None)[source]
Switch from one provider to another.
- Parameters:
from_provider (
ProviderType) – Current providerto_provider (
ProviderType) – Target providermodel_mapping (
Optional[Dict[str,str]]) – Optional mapping of old model names to new ones
- Return type:
- validate_api_keys()[source]
Validate that all configured providers have API keys.
- Return type:
- Returns:
Dictionary mapping providers to validation status
- load_from_environment()[source]
Load configuration from environment variables.
Looks for variables in the format: - {APP_NAME}_MODEL_CONFIG__{MODEL_NAME}__{PARAM} - {APP_NAME}_PROVIDER__{PROVIDER}__{PARAM} - {APP_NAME}__{PARAM}
- Return type:
- set_secret(key, value)[source]
Store a secret value with encryption.
Secrets are encrypted in memory using Fernet symmetric encryption. While not as secure as dedicated secrets management services, this provides reasonable protection for prototyping and development.
- rollback()[source]
Rollback to previous configuration.
- Return type:
- Returns:
True if rollback successful, False if no history
- get_model_for_task(task, fallback=None)[source]
Get recommended model for a specific task.
- Parameters:
- Return type:
- Returns:
Model configuration or None
- kerb.config.save_config(config, file_path, include_secrets=False)[source]
Save configuration to a JSON file.
- class kerb.config.ConfigSource(*values)[source]
Bases:
EnumConfiguration source types.
- ENVIRONMENT = 'environment'
- FILE = 'file'
- CODE = 'code'
- DEFAULT = 'default'
- class kerb.config.ProviderType(*values)[source]
Bases:
EnumLLM provider types.
- OPENAI = 'openai'
- ANTHROPIC = 'anthropic'
- GOOGLE = 'google'
- AZURE_OPENAI = 'azure_openai'
- HUGGINGFACE = 'huggingface'
- CUSTOM = 'custom'
- class kerb.config.AppConfig(app_name, default_model=None, providers=<factory>, models=<factory>, metadata=<factory>)[source]
Bases:
objectComplete application configuration.
- app_name
Application name
- default_model
Default model to use
- providers
Provider configurations
- models
Model configurations
- metadata
Additional application metadata
- providers: Dict[ProviderType, ProviderConfig]
- models: Dict[str, ModelConfig]
- __init__(app_name, default_model=None, providers=<factory>, models=<factory>, metadata=<factory>)
- class kerb.config.ModelConfig(name, provider, api_key_env_var=None, max_tokens=4096, temperature=0.7, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0, endpoint=None, api_version=None, deployment_name=None, timeout=60.0, max_retries=3, metadata=<factory>)[source]
Bases:
objectConfiguration for a specific model.
- name
Model identifier (e.g., “gpt-4o”, “claude-3-5-sonnet-20241022”)
- provider
LLM provider
- api_key_env_var
Environment variable name for API key
- max_tokens
Maximum tokens for this model
- temperature
Default temperature (0.0 to 2.0)
- top_p
Default top_p sampling parameter
- frequency_penalty
Frequency penalty for repetition
- presence_penalty
Presence penalty for topic diversity
- endpoint
Custom API endpoint (optional)
- api_version
API version for provider (e.g., Azure)
- deployment_name
Deployment name (for Azure)
- timeout
Request timeout in seconds
- max_retries
Maximum retry attempts
- metadata
Additional metadata
- provider: ProviderType
- classmethod from_dict(data)[source]
Create from dictionary, handling enum deserialization.
- Return type:
- __init__(name, provider, api_key_env_var=None, max_tokens=4096, temperature=0.7, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0, endpoint=None, api_version=None, deployment_name=None, timeout=60.0, max_retries=3, metadata=<factory>)
- class kerb.config.ProviderConfig(provider, api_key=None, api_key_env_var=None, base_url=None, organization=None, timeout=60.0, max_retries=3, rate_limit=None, models=<factory>, metadata=<factory>)[source]
Bases:
objectConfiguration for an LLM provider.
- provider
Provider type
- api_key
API key (prefer api_key_env_var for security)
- api_key_env_var
Environment variable containing API key
- base_url
Base URL for API endpoint
- organization
Organization ID (for OpenAI)
- timeout
Default timeout in seconds
- max_retries
Default max retry attempts
- rate_limit
Rate limit (requests per minute)
- models
Available models for this provider
- metadata
Additional provider metadata
- provider: ProviderType
- get_api_key()[source]
Get API key from env var or direct value.
Priority: 1. Environment variable (if set and exists) 2. Direct API key value
- __init__(provider, api_key=None, api_key_env_var=None, base_url=None, organization=None, timeout=60.0, max_retries=3, rate_limit=None, models=<factory>, metadata=<factory>)
- kerb.config.create_config_manager(app_name='llm_app', config_file=None, encryption_key=None)[source]
Create a new configuration manager.
- kerb.config.create_model_config(name, provider, **kwargs)[source]
Create a model configuration.
- Parameters:
name (
str) – Model nameprovider (
Union[ProviderType,str]) – Provider type or string**kwargs – Additional model configuration parameters
- Return type:
- Returns:
ModelConfig instance
- kerb.config.create_provider_config(provider, **kwargs)[source]
Create a provider configuration.
- Parameters:
provider (
Union[ProviderType,str]) – Provider type or string**kwargs – Additional provider configuration parameters
- Return type:
- Returns:
ProviderConfig instance
- kerb.config.get_openai_config(api_key_env_var='OPENAI_API_KEY')[source]
Get default OpenAI provider configuration.
- Parameters:
api_key_env_var (
str) – Environment variable name for API key- Return type:
- Returns:
ProviderConfig for OpenAI
- kerb.config.get_anthropic_config(api_key_env_var='ANTHROPIC_API_KEY')[source]
Get default Anthropic provider configuration.
- Parameters:
api_key_env_var (
str) – Environment variable name for API key- Return type:
- Returns:
ProviderConfig for Anthropic
- kerb.config.get_google_config(api_key_env_var='GOOGLE_API_KEY')[source]
Get default Google (Gemini) provider configuration.
- Parameters:
api_key_env_var (
str) – Environment variable name for API key- Return type:
- Returns:
ProviderConfig for Google
- kerb.config.validate_credentials(provider, api_key)[source]
Validate provider credentials (basic check).
Note: This is a basic validation. For production, implement actual API calls to verify credentials.
- Parameters:
provider (
ProviderType) – Provider typeapi_key (
str) – API key to validate
- Return type:
- Returns:
True if credentials appear valid (basic check)
- kerb.config.load_config_from_file(file_path)
Load configuration from a JSON file.
- kerb.config.save_config_to_file(config, file_path, include_secrets=False)
Save configuration to a JSON file.
- kerb.config.get_default_openai_config(api_key_env_var='OPENAI_API_KEY')
Get default OpenAI provider configuration.
- Parameters:
api_key_env_var (
str) – Environment variable name for API key- Return type:
- Returns:
ProviderConfig for OpenAI
- kerb.config.get_default_anthropic_config(api_key_env_var='ANTHROPIC_API_KEY')
Get default Anthropic provider configuration.
- Parameters:
api_key_env_var (
str) – Environment variable name for API key- Return type:
- Returns:
ProviderConfig for Anthropic
- kerb.config.get_default_google_config(api_key_env_var='GOOGLE_API_KEY')
Get default Google (Gemini) provider configuration.
- Parameters:
api_key_env_var (
str) – Environment variable name for API key- Return type:
- Returns:
ProviderConfig for Google
- kerb.config.validate_provider_credentials(provider, api_key)
Validate provider credentials (basic check).
Note: This is a basic validation. For production, implement actual API calls to verify credentials.
- Parameters:
provider (
ProviderType) – Provider typeapi_key (
str) – API key to validate
- Return type:
- Returns:
True if credentials appear valid (basic check)
Configuration management for models, providers, and application settings.