|
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 |
|
|