from pydantic import BaseSettings class Settings(BaseSettings): # Default values for the processor and model processor: str = "senga-ml/donut-v16" model: str = "senga-ml/donut-v16" dataset: str = "senga-ml/dnotes-data-v6" base_config: str = "naver-clova-ix/donut-base" base_processor: str = "naver-clova-ix/donut-base" base_model: str = "naver-clova-ix/donut-base" inference_stats_file: str = "data/donut_inference_stats.json" training_stats_file: str = "data/donut_training_stats.json" evaluate_stats_file: str = "data/donut_evaluate_stats.json" # The shipper_id to dynamically select model and processor shipper_id: str = "default_shipper" # Function to dynamically select model and processor based on shipper_id def set_model(self): if self.shipper_id == "61": self.model = "senga-ml/donut-16" self.processor = "senga-ml/donut-16" elif self.shipper_id == "81": self.model = "senga-ml/donut-16" self.processor = "senga-ml/donut-16" elif self.shipper_id == "139": self.model = "senga-ml/donut-16" self.processor = "senga-ml/donut-16" elif self.shipper_id == "165": self.model = "senga-ml/donut-17" self.processor = "senga-ml/donut-17" elif self.shipper_id == "127": self.model = "senga-ml/donut-17" self.processor = "senga-ml/donut-17" elif self.shipper_id == "145": self.model = "senga-ml/donut-17" self.processor = "senga-ml/donut-17" else: self.model = self.base_model # Default to base model self.processor = self.base_processor # Default to base processor # Initialize dynamic model selection when settings are loaded def __init__(self, **kwargs): super().__init__(**kwargs) self.set_model() # Set the model based on shipper_id settings = Settings()