import os from functools import lru_cache import logging # Configuration d'un logger simple pour ce module logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') @lru_cache(maxsize=32) def load_prompt(filename: str) -> str: """ Charge le contenu d'un fichier de prompt depuis le dossier 'prompts'. Cette fonction met en cache les résultats pour éviter de lire le même fichier plusieurs fois, ce qui améliore les performances. Args: filename (str): Le nom du fichier à charger (ex: 'philo_type1.txt'). Returns: str: Le contenu du fichier de prompt, ou un message d'erreur si le fichier est introuvable ou si une autre erreur de lecture se produit. """ try: # Construit le chemin vers le dossier 'prompts' en supposant qu'il se # trouve au même niveau que le répertoire contenant ce fichier utils.py # Structure attendue : # /votre-projet/ # |- app.py # |- utils.py # |- prompts/ # |- philo_type1.txt # |- ... base_dir = os.path.dirname(os.path.abspath(__file__)) prompt_path = os.path.join(base_dir, 'prompts', filename) with open(prompt_path, 'r', encoding='utf-8') as f: return f.read() except FileNotFoundError: # Erreur très importante à logger car elle empêche l'app de fonctionner logging.error(f"FICHIER DE PROMPT MANQUANT: Impossible de trouver '{prompt_path}'") return f"Erreur critique du serveur: Le fichier de prompt '{filename}' est manquant." except Exception as e: # Capture toute autre erreur potentielle (ex: droits de lecture) logging.error(f"Erreur inattendue lors du chargement du prompt '{filename}': {e}") return "Erreur critique du serveur lors de la lecture d'un fichier de configuration."