Configuration Guide¶
Claif Knollm offers flexible configuration options to match your specific needs. This guide covers everything from basic setup to advanced customization.
Configuration Methods¶
Knollm supports multiple configuration approaches:
- Environment Variables - Quick setup for API keys
- Configuration Files - Comprehensive settings management
- Runtime Configuration - Dynamic configuration in code
- CLI Arguments - Command-line overrides
Environment Variables¶
Basic Provider Setup¶
Set API keys as environment variables:
# Essential providers
export OPENAI_API_KEY="sk-proj-..."
export ANTHROPIC_API_KEY="sk-ant-api03-..."
export GOOGLE_API_KEY="AIza..."
# Fast inference providers
export GROQ_API_KEY="gsk_..."
export DEEPSEEK_API_KEY="sk-..."
export CEREBRAS_API_KEY="csk-..."
# Additional providers
export MISTRAL_API_KEY="..."
export COHERE_API_KEY="..."
export AI21_API_KEY="..."
export HUGGINGFACE_API_KEY="..."
Global Settings¶
Configure global behavior:
# Routing preferences
export KNOLLM_DEFAULT_STRATEGY="balanced"
export KNOLLM_FALLBACK_PROVIDERS="openai,anthropic,groq"
# Performance settings
export KNOLLM_CACHE_TTL="3600"
export KNOLLM_REQUEST_TIMEOUT="30"
export KNOLLM_MAX_RETRIES="3"
# Cost controls
export KNOLLM_MAX_COST_PER_REQUEST="0.10"
export KNOLLM_DAILY_BUDGET="50.00"
export KNOLLM_ALERT_THRESHOLD="40.00"
Configuration Files¶
Main Configuration File¶
Create ~/.config/knollm/config.toml
:
[general]
log_level = "INFO"
cache_directory = "~/.cache/knollm"
data_directory = "~/.local/share/knollm"
[routing]
strategy = "balanced" # cost_optimized, speed_optimized, quality_optimized, balanced
fallback_providers = ["openai", "anthropic", "groq"]
enable_caching = true
cache_ttl = 3600
max_retries = 3
retry_backoff = 2.0
[costs]
max_cost_per_request = 0.10
daily_budget = 50.00
monthly_budget = 1500.00
alert_threshold = 0.80
currency = "USD"
[performance]
request_timeout = 30
concurrent_requests = 10
rate_limit_buffer = 0.1
enable_monitoring = true
# Provider-specific configurations
[providers.openai]
api_key_env = "OPENAI_API_KEY"
base_url = "https://api.openai.com/v1"
enabled = true
tier = "premium"
rate_limit = 60 # requests per minute
preferred_models = ["gpt-4o-mini", "gpt-4o"]
cost_multiplier = 1.0
[providers.anthropic]
api_key_env = "ANTHROPIC_API_KEY"
base_url = "https://api.anthropic.com"
enabled = true
tier = "premium"
rate_limit = 40
preferred_models = ["claude-3-haiku", "claude-3-sonnet"]
cost_multiplier = 1.0
[providers.groq]
api_key_env = "GROQ_API_KEY"
base_url = "https://api.groq.com/openai/v1"
enabled = true
tier = "budget"
rate_limit = 100
preferred_models = ["llama-3.1-8b-instant", "mixtral-8x7b-32768"]
cost_multiplier = 0.1 # Very cheap
[providers.google]
api_key_env = "GOOGLE_API_KEY"
base_url = "https://generativelanguage.googleapis.com/v1"
enabled = true
tier = "premium"
rate_limit = 60
preferred_models = ["gemini-1.5-flash", "gemini-1.5-pro"]
cost_multiplier = 0.8
# Disable providers you don't want to use
[providers.together]
enabled = false
[providers.huggingface]
enabled = false
Project-Specific Configuration¶
Create knollm.toml
in your project directory:
[routing]
strategy = "cost_optimized"
fallback_providers = ["groq", "deepseek", "openai"]
[costs]
max_cost_per_request = 0.01
daily_budget = 5.00
[providers.openai]
enabled = false # Disable expensive provider
[providers.groq]
preferred_models = ["llama-3.1-8b-instant"]
Runtime Configuration¶
Programmatic Configuration¶
Configure Knollm directly in your Python code:
from claif_knollm import KnollmClient, RoutingStrategy, KnollmConfig
# Create custom configuration
config = KnollmConfig(
routing_strategy=RoutingStrategy.COST_OPTIMIZED,
fallback_providers=["groq", "deepseek", "openai"],
max_cost_per_request=0.05,
enable_caching=True,
cache_ttl=1800
)
# Initialize client with custom config
client = KnollmClient(config=config)
Dynamic Provider Configuration¶
Add or modify providers at runtime:
from claif_knollm import ProviderConfig, AuthType
# Configure a custom provider
custom_provider = ProviderConfig(
name="custom_provider",
base_url="https://api.custom.com/v1",
auth_type=AuthType.API_KEY,
api_key="your-api-key",
rate_limit=100,
enabled=True
)
# Add to client
client.add_provider(custom_provider)
Routing Strategies¶
Configure how Knollm selects providers:
Strategy Types¶
Strategy | Description | Best For |
---|---|---|
cost_optimized |
Always chooses cheapest option | Development, high-volume |
speed_optimized |
Prioritizes fastest response | Real-time applications |
quality_optimized |
Selects highest-quality models | Production, important tasks |
balanced |
Balances cost, speed, quality | General purpose |
round_robin |
Distributes load evenly | Load testing, fairness |
adaptive |
Learns from usage patterns | Long-running applications |
Strategy Configuration¶
[routing]
strategy = "adaptive"
[routing.cost_optimized]
max_acceptable_cost = 0.02
quality_threshold = 0.6
[routing.speed_optimized]
max_acceptable_latency = 500 # milliseconds
quality_threshold = 0.7
[routing.quality_optimized]
min_quality_score = 0.9
max_acceptable_cost = 0.20
[routing.balanced]
cost_weight = 0.4
speed_weight = 0.3
quality_weight = 0.3
[routing.adaptive]
learning_rate = 0.1
memory_window = 1000 # requests
exploration_rate = 0.05
Cost Management¶
Budget Controls¶
Set spending limits and alerts:
[costs]
# Absolute limits
max_cost_per_request = 0.50
hourly_budget = 10.00
daily_budget = 100.00
monthly_budget = 2000.00
# Alert thresholds (as percentage of budget)
warning_threshold = 0.75
alert_threshold = 0.90
critical_threshold = 0.95
# Cost tracking
enable_cost_tracking = true
cost_log_file = "~/.local/share/knollm/costs.json"
cost_report_interval = "daily" # daily, weekly, monthly
# Currency and formatting
currency = "USD"
decimal_places = 4
Provider Cost Modifiers¶
Adjust relative costs for decision-making:
[providers.openai]
cost_multiplier = 1.0 # Baseline
[providers.anthropic]
cost_multiplier = 1.1 # Slightly more expensive
[providers.groq]
cost_multiplier = 0.1 # Very cheap
[providers.together]
cost_multiplier = 0.3 # Budget option
Security Configuration¶
API Key Management¶
Secure API key handling:
[security]
# API key storage
encrypt_config = true
config_password_env = "KNOLLM_CONFIG_PASSWORD"
keyring_service = "knollm"
# Request security
verify_ssl = true
ca_bundle_path = "/etc/ssl/certs/ca-certificates.crt"
timeout = 30
max_redirects = 5
# Privacy
log_request_bodies = false
log_response_bodies = false
mask_api_keys_in_logs = true
Rate Limiting¶
Configure rate limiting to respect provider limits:
[rate_limiting]
enable_global_rate_limiting = true
global_rate_limit = 1000 # requests per minute
burst_limit = 100
backoff_strategy = "exponential"
max_backoff = 300 # seconds
[providers.openai]
rate_limit = 60
burst_allowance = 10
[providers.anthropic]
rate_limit = 40
burst_allowance = 5
Logging and Monitoring¶
Logging Configuration¶
[logging]
level = "INFO" # DEBUG, INFO, WARNING, ERROR, CRITICAL
format = "detailed" # simple, detailed, json
file_path = "~/.local/share/knollm/knollm.log"
max_file_size = "10MB"
backup_count = 5
# Component-specific logging
[logging.components]
routing = "DEBUG"
providers = "INFO"
costs = "INFO"
cache = "WARNING"
Monitoring¶
[monitoring]
enable_metrics = true
metrics_port = 8080
metrics_path = "/metrics"
# Performance tracking
track_latency = true
track_costs = true
track_error_rates = true
track_cache_hits = true
# Health checks
health_check_interval = 60 # seconds
provider_health_checks = true
CLI Configuration¶
Global CLI Settings¶
[cli]
default_output_format = "table" # table, json, yaml, csv
color_output = true
pager = "auto" # auto, never, always
editor = "vim"
[cli.table]
max_width = 120
show_headers = true
grid_style = "rounded"
[cli.json]
indent = 2
sort_keys = true
Command Aliases¶
[cli.aliases]
ls = "models search"
find = "models search"
cheap = "models cheapest"
compare = "models compare"
providers = "providers list"
Advanced Configuration¶
Custom Model Filters¶
Define reusable model filters:
[filters.coding]
required_capabilities = ["code_generation", "function_calling"]
max_cost_per_1k_tokens = 0.02
min_context_window = 32000
[filters.vision]
required_capabilities = ["vision", "multimodal"]
min_quality_score = 0.8
[filters.budget]
max_cost_per_1k_tokens = 0.005
exclude_providers = ["openai"]
Plugin Configuration¶
Configure third-party plugins:
[plugins]
enabled = ["cost_tracker", "performance_monitor"]
[plugins.cost_tracker]
export_format = "csv"
export_interval = "daily"
export_path = "~/.local/share/knollm/costs/"
[plugins.performance_monitor]
track_all_requests = true
alert_on_failures = true
Configuration Validation¶
Validate your configuration:
# Check configuration syntax
knollm config validate
# Test provider connections
knollm config test-providers
# Show effective configuration
knollm config show
Troubleshooting¶
Common Configuration Issues¶
Problem: "Provider not found" errors Solution: Check provider name spelling and ensure it's enabled:
Problem: API key not found Solution: Verify environment variable names and values:
Problem: Budget exceeded errors Solution: Check and adjust budget settings:
Configuration Precedence¶
Settings are applied in this order (later overrides earlier):
- Default values
- Global config file (
~/.config/knollm/config.toml
) - Project config file (
./knollm.toml
) - Environment variables
- Runtime configuration
- CLI arguments
Next Steps¶
With Knollm configured:
- Quick Start → - Build your first application
- Provider Guide → - Learn about available providers
- Cost Optimization → - Minimize expenses
- Best Practices → - Production tips
💡 Configuration Tips
- Start with the
balanced
strategy for general use - Use
cost_optimized
for development and testing - Always set budget limits to avoid unexpected charges
- Enable monitoring in production environments