LLM Configuration

Le module LLMConfigManager gère la configuration des modèles de langage (LLM). Sa principale caractéristique est la détection automatique du fournisseur de services (OpenAI, Mistral, ou un modèle local) en fonction des variables d’environnement disponibles.

Usage

LLMConfigManager est instancié par le ConfigManager central. L’application accède à la configuration via ConfigManager.llm, qui contient une instance du dataclass LLMConfig.

Fonctionnalités

  • Détection du fournisseurle gestionnaire sélectionne le fournisseur à utiliser selon la présence des clés d’API dans l’environnement, avec la priorité suivante :
    1. OpenAI (ou compatible) si LLM_API_KEY_OPENAI est définie.

    2. Mistral si LLM_API_KEY_MISTRAL est définie.

    3. Modèle Local si EMBED_MODELE_LOCAL est défini.

  • Configuration : permet de définir le modèle et le timeout des requêtes via des variables d’environnement.

  • Configuration de secours : en cas d’échec de l’initialisation, une configuration par défaut utilisant un modèle local est chargée pour garantir la résilience du système.

  • Validation : la méthode validate adapte ses vérifications au fournisseur sélectionné. Par exemple, une clé d’API n’est requise que pour les fournisseurs distants. Elle valide également la plage des valeurs pour la température et le timeout.

Modules

class src.smart_watch.config.llm_config.LLMConfig(fournisseur: str, modele: str, api_key: str | None = None, base_url: str | None = None, temperature: float = 0, timeout: int = 30)[source]

Bases : object

Représente la configuration pour un client LLM.

fournisseur

le nom du fournisseur de LLM (« OPENAI », « MISTRAL », « LOCAL »).

Type:

str

modele

le nom du modèle de LLM à utiliser.

Type:

str

api_key

la clé API pour accéder au service du LLM.

Type:

Optional[str]

base_url

l’URL de base pour les appels API, principalement pour les fournisseurs compatibles OpenAI.

Type:

Optional[str]

temperature

la température pour la génération de texte, contrôle le caractère aléatoire.

Type:

float

timeout

le délai d’attente en secondes pour les requêtes API.

Type:

int

fournisseur: str
modele: str
api_key: str | None = None
base_url: str | None = None
temperature: float = 0
timeout: int = 30
__init__(fournisseur: str, modele: str, api_key: str | None = None, base_url: str | None = None, temperature: float = 0, timeout: int = 30) None
class src.smart_watch.config.llm_config.LLMConfigManager(env_file: Path | None = None)[source]

Bases : BaseConfig

Gère la configuration du client LLM à partir des variables d’environnement.

Cette classe lit les variables d’environnement pour configurer le client LLM, en détectant automatiquement le fournisseur (OpenAI, Mistral, ou local) en fonction des clés API disponibles.

config

l’objet de configuration LLM initialisé.

Type:

LLMConfig

__init__(env_file: Path | None = None) None[source]

Initialise le gestionnaire de configuration LLM.

Paramètres:

env_file (Optional[Path], optional) – Le chemin vers un fichier .env personnalisé. Si non fourni, utilise les variables d’environnement système.

_init_llm_config() LLMConfig[source]

Initialise la configuration LLM en détectant le fournisseur.

La méthode recherche les clés API pour OpenAI, puis Mistral, et enfin un modèle local. Le premier trouvé est utilisé pour la configuration.

Renvoie:

l’objet de configuration LLM initialisé.

Type renvoyé:

LLMConfig

Lève:

ValueError – si aucune configuration de LLM (OpenAI, Mistral) ou de modèle d’embedding local n’est trouvée.

_get_default_config() LLMConfig[source]

Retourne une configuration LLM par défaut.

Cette configuration est utilisée comme solution de repli en cas d’échec de l’initialisation pour permettre au système de démarrer sans planter.

Renvoie:

une configuration LLM locale par défaut.

Type renvoyé:

LLMConfig

validate() bool[source]

Valide la configuration LLM chargée.

Vérifie que les paramètres essentiels sont présents et valides, comme la clé API pour les fournisseurs distants, le nom du modèle, et les valeurs de température et de timeout.

Renvoie:

True si la configuration est valide.

Type renvoyé:

bool

Lève:

ValueError – si la validation échoue, avec un message détaillant les erreurs.

_load_environment()

Charge les variables d’environnement depuis le fichier .env.

Réinitialise d’abord les variables (sauf en environnement conteneurisé) puis charge celles du fichier .env. Si le fichier n’existe pas, utilise les variables système existantes.

_reset_environment()

Réinitialise les variables d’environnement du fichier .env.

Supprime les variables chargées depuis le fichier .env pour éviter les conflits avec les variables système ou conteneurisées. Ne s’exécute pas dans un environnement conteneurisé.

get_env_var(key: str, default: str | None = None, required: bool = False) str | None

Récupère une variable d’environnement de manière sécurisée.

Paramètres:
  • key (str) – la clé de la variable d’environnement à récupérer.

  • default (Optional[str], optional) – la valeur par défaut si la variable n’est pas trouvée.

  • required (bool) – si True, lèvera une exception si la valeur est manquante.

Renvoie:

la valeur de la variable d’environnement, ou None.

Type renvoyé:

Optional[str]

Lève:

ValueError – si la variable est requise mais non définie.