diff --git a/open_notebook/domain/base.py b/open_notebook/domain/base.py index 48280e0..2813e8c 100644 --- a/open_notebook/domain/base.py +++ b/open_notebook/domain/base.py @@ -253,19 +253,19 @@ class RecordModel(BaseModel): # Load data from DB first result = repo_query(f"SELECT * FROM {self.record_id};") - # Initialize empty object with None for all non-ClassVar fields - db_data = { - field_name: None - for field_name, field_info in self.model_fields.items() - if not str(field_info.annotation).startswith("typing.ClassVar") - } - - # Update with DB data if it exists - if result: - db_data.update(result[0]) - # Initialize with DB data and any overrides - super().__init__(**{**db_data, **kwargs}) + init_data = {} + if result and result[0]: + init_data.update(result[0]) + + # Override with any provided kwargs + if kwargs: + init_data.update(kwargs) + + # Initialize base model first + super().__init__(**init_data) + + # Mark as initialized object.__setattr__(self, "_initialized", True) @classmethod diff --git a/open_notebook/domain/models.py b/open_notebook/domain/models.py index 918b5e7..645aa94 100644 --- a/open_notebook/domain/models.py +++ b/open_notebook/domain/models.py @@ -28,14 +28,14 @@ class Model(ObjectModel): class DefaultModels(RecordModel): record_id: ClassVar[str] = "open_notebook:default_models" - default_chat_model: Optional[str] - default_transformation_model: Optional[str] - large_context_model: Optional[str] - default_text_to_speech_model: Optional[str] - default_speech_to_text_model: Optional[str] + default_chat_model: Optional[str] = None + default_transformation_model: Optional[str] = None + large_context_model: Optional[str] = None + default_text_to_speech_model: Optional[str] = None + default_speech_to_text_model: Optional[str] = None # default_vision_model: Optional[str] - default_embedding_model: Optional[str] - default_tools_model: Optional[str] + default_embedding_model: Optional[str] = None + default_tools_model: Optional[str] = None class ModelManager: