Skip to content

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

pants test src/python/config:: -- -s --no-header

Issues & Improvements

Current Issues

  1. No configuration validation: Invalid configs not caught early
  2. Limited hot-reload: Config changes require restart
  3. No secrets management: Sensitive values in plain text

Suggested Improvements

  1. Schema validation: Add Pydantic models for config validation
  2. Hot reload: Support runtime configuration updates
  3. Secrets integration: Support HashiCorp Vault, AWS Secrets Manager
  4. Configuration versioning: Track config changes over time
  5. 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