Orchestrator / core /config.py
ZENLLC's picture
Create core/config.py
876ef78 verified
from dataclasses import dataclass
from typing import Dict
@dataclass
class ModelRate:
# Price per 1M tokens (USD). Keep provider-agnostic.
input_per_1m: float
output_per_1m: float
cached_input_per_1m: float = 0.0
reasoning_per_1m: float = 0.0 # optional
@dataclass
class SimConfig:
# Time model
minutes_per_tick: int = 30
# Budgeting
budget_usd_soft: float = 5.00
budget_usd_hard: float = 10.00
# Task system
initial_tasks: int = 24
new_tasks_per_day: int = 6
rework_probability_base: float = 0.08 # baseline chance a "completed" task needs rework
# Incident injection
incident_probability_per_day: float = 0.12 # creates urgent tasks
outage_probability_per_day: float = 0.05 # increases latency + failure chance
# Token simulation knobs (when not calling real LLMs)
est_prompt_tokens_per_task: int = 900
est_completion_tokens_per_task: int = 250
est_reasoning_tokens_per_task: int = 0
DEFAULT_MODEL_RATES: Dict[str, ModelRate] = {
# These are placeholders. You can swap with your exact rate cards.
"economy": ModelRate(input_per_1m=0.20, output_per_1m=0.80, cached_input_per_1m=0.05),
"balanced": ModelRate(input_per_1m=1.50, output_per_1m=6.00, cached_input_per_1m=0.50),
"premium": ModelRate(input_per_1m=5.00, output_per_1m=15.00, cached_input_per_1m=1.25),
}