| from abc import ABC, abstractmethod |
| import os |
|
|
| class AModel(ABC): |
| ''' |
| Classe abstraite de base pour tous les models : |
| Ollama en local |
| OpenAI distant |
| HuggingFace distant |
| HuggingFace dans une app |
| ... |
| ''' |
|
|
| @classmethod |
| def load_env_variables(cls): |
| ''' |
| Gestion des tokens par variables d'environnement |
| On utilise dotenv, sauf si la platforme est un space HuggingFace |
| Dans ce cas les variables d'env sont déjà chargées |
| ''' |
| |
| |
| if not os.getenv("HF_ACTIVE"): |
| |
| from dotenv import load_dotenv |
| load_dotenv() |
|
|
|
|
| @abstractmethod |
| def ask_llm(self, question:str)->str: |
| pass |
|
|
| @abstractmethod |
| def create_vector(self, chunk:str)->list[float]: |
| pass |
|
|
| @abstractmethod |
| def create_vectors(self, chunks:list[str])->list[list[float]]: |
| pass |
|
|
| def get_llm_name(self): |
| return self.llm_name |
|
|
| def set_llm_name(self, llm_name:str): |
| self.llm_name = llm_name |
|
|
| def get_feature_name(self): |
| return self.feature_name |
|
|
| def set_feature_name(self, feature_name:str): |
| self.feature_name = feature_name |
|
|
| def get_temperature(self): |
| return self.temperature |
|
|
| def set_temperature(self, temperature:float): |
| self.temperature = temperature |
|
|