Ragnar / src /amodel.py
Eric Marchand
Refactoring
3afd61a
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
'''
# HF_ACTIVE est une variable d'environnement créée dans les spaces HuggingFace
# Elle sert à savoir que l'appli tourne dans un space
if not os.getenv("HF_ACTIVE"): # Utilisation ailleurs que dans un space
# load_dotenv ne passe pas dans un space HuggingFace
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