bast-ai-config¶
Version: 0.6.3
Module: bast_ai_config
Path: src/python/config
Overview¶
Configuration management library for Bast AI services using Hydra. Provides centralized configuration loading, CAT (Client Application Template) management, and environment-based overrides.
Features¶
Configuration Loading¶
- YAML-based configuration files
- Environment variable overrides
- Configuration composition
- Runtime configuration updates
CAT Management¶
CAT (Client Application Template) configurations define client-specific settings:
from bast_ai_config import get_bast_config
config = get_bast_config()
cat = config.get_cat("mycat")
# Access CAT properties
print(cat.name)
print(cat.mongodb_uri)
print(cat.openai_model)
Configuration Structure¶
Directory Layout¶
resources/config/
├── bast.yaml # Global defaults
├── mycat.yaml # Client-specific config
├── testcat.yaml # Test configuration
└── ...
Configuration Schema¶
# resources/config/{catname}.yaml
name: mycat
description: "My Application"
# Database settings
mongodb:
uri: ${MONGODB_URI:mongodb://localhost:27017}
database: mycat_db
# OpenAI settings
openai:
model: gpt-4o
temperature: 0.7
max_tokens: 1000
# Milvus settings
milvus:
host: ${MILVUS_HOST:localhost}
port: ${MILVUS_PORT:19530}
collection: mycat_vectors
# Agent settings
agent:
type: agno
instructions: "You are a helpful assistant."
# Feature flags
features:
enable_web_search: true
enable_memory: true
Dependencies¶
Internal Dependencies¶
| Package | Purpose |
|---|---|
| bast-ai-base | Core utilities |
External Dependencies¶
| Package | Version | Purpose |
|---|---|---|
| hydra-core | >=1.3 | Configuration management |
Usage Examples¶
Basic Configuration Access¶
from bast_ai_config import get_bast_config
# Get global config
config = get_bast_config()
# Get specific CAT
cat = config.get_cat("mycat")
# Access nested configuration
mongo_uri = cat.mongodb.uri
openai_model = cat.openai.model
Environment Overrides¶
# Override via environment variables
export MONGODB_URI="mongodb://prod-server:27017"
export MILVUS_HOST="prod-milvus"
Configuration in Services¶
from bast_ai.base import BastObject
from bast_ai_config import get_bast_config
class MyService(BastObject):
def __init__(self, catname: str):
BastObject.__init__(self, __name__)
self._cat = get_bast_config().get_cat(catname)
@property
def mongo_uri(self) -> str:
return self._cat.mongodb.uri
Dynamic Configuration¶
from bast_ai_config import get_bast_config
config = get_bast_config()
# Check if feature is enabled
if config.get_cat("mycat").features.enable_web_search:
# Enable web search functionality
pass
# Get configuration with default
timeout = getattr(cat.api, 'timeout', 30)
Testing¶
Unit Tests (1 file)¶
- Basic configuration loading tests
- CAT retrieval tests
- Environment override tests
Running Tests¶
Issues & Improvements¶
Current Issues¶
- No configuration validation: Invalid configs not caught early
- Limited hot-reload: Config changes require restart
- No secrets management: Sensitive values in plain text
Suggested Improvements¶
- Schema validation: Add Pydantic models for config validation
- Hot reload: Support runtime configuration updates
- Secrets integration: Support HashiCorp Vault, AWS Secrets Manager
- Configuration versioning: Track config changes over time
- Environment profiles: Support dev/staging/prod profiles
Best Practices¶
Configuration Organization¶
# Separate concerns
database:
# All database settings
api:
# All API settings
models:
# All model settings
features:
# All feature flags
Environment Variables¶
# Use defaults for local development
mongodb:
uri: ${MONGODB_URI:mongodb://localhost:27017}
# Required in production (no default)
openai:
api_key: ${OPENAI_API_KEY}
Feature Flags¶
features:
# Boolean flags
enable_caching: true
enable_metrics: false
# Percentage rollout
new_feature_percentage: 50
Changelog¶
v0.6.3 (Current)¶
- Updated Hydra to >=1.3
- Improved error messages for missing configs
v0.6.2¶
- Added configuration composition support
- Better environment variable handling