Module 7: Production Patterns

Cost Optimization

Budget Tracking

class BudgetTracker:
    """Track daily spending"""
    
    def __init__(self, daily_budget=100):
        self.daily_budget = daily_budget
        self.spent_today = 0
        self.date = datetime.now().date()
    
    def add_cost(self, cost):
        """Add a cost"""
        # Reset if it's a new day
        if datetime.now().date() > self.date:
            self.spent_today = 0
            self.date = datetime.now().date()
        
        self.spent_today += cost
        
        # Alert if it's exceeded
        if self.spent_today > self.daily_budget:
            send_alert(f"Budget exceeded: ${self.spent_today:.2f}")
    
    def can_spend(self, estimated_cost):
        """Check whether it can spend"""
        return (self.spent_today + estimated_cost) <= self.daily_budget

# Usage
budget = BudgetTracker(daily_budget=100)

if budget.can_spend(estimated_cost):
    embedding = get_embedding(text)
    budget.add_cost(actual_cost)
else:
    # Fallback to a local model
    embedding = local_model.encode(text)

Cost-Aware Caching

# Cache EVERYTHING (80% savings typical)
cache_hit_rate = 0.80

# Monthly cost:
# Without cache: $1000
# With cache: $200 (80% cache hit)

# Redis ROI: $800/month savings vs $20/month Redis cost

Model Selection

def get_embedding_cost_aware(text, priority='low'):
    """Select the model based on priority"""
    if priority == 'high':
        # OpenAI 3-large (better but expensive)
        return get_embedding_openai_large(text)
    
    elif priority == 'medium':
        # OpenAI 3-small (balanced)
        return get_embedding_openai_small(text)
    
    else:  # low
        # Local SBERT (free)
        return get_embedding_sbert(text)

Summary

  • Budget tracking: Daily limits
  • Caching: 80% cost reduction
  • Model selection: Cost-aware routing
  • Monitoring: Real-time cost alerts

Module 7 - Capsule 06