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 :
OpenAI (ou compatible) si
LLM_API_KEY_OPENAI
est définie.Mistral si
LLM_API_KEY_MISTRAL
est définie.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.
- 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:
- 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.
- __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é:
- 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é:
- 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é:
- 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:
- 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.