from typing import ClassVar, Optional from open_notebook.database.repository import repo_query from open_notebook.domain.base import ObjectModel, RecordModel class Model(ObjectModel): table_name: ClassVar[str] = "model" name: str provider: str type: str @classmethod def get_models_by_type(cls, model_type): models = repo_query( "SELECT * FROM model WHERE type=$model_type;", {"model_type": model_type} ) return [Model(**model) for model in models] # todo: future: colocar um cache aqui class DefaultModels(RecordModel): record_id: ClassVar[str] = "open_notebook:default_models" 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] = None default_embedding_model: Optional[str] = None # def load_default_models(): # default_models = DefaultModels.load() # embedding_model = ( # get_model(default_models.default_embedding_model, model_type="embedding") # if default_models.default_embedding_model # else None # ) # speech_to_text_model = ( # get_model( # default_models.default_speech_to_text_model, model_type="speech_to_text" # ) # if default_models.default_speech_to_text_model # else None # ) # return default_models, embedding_model, speech_to_text_model