Spaces:
Running
Running
File size: 1,922 Bytes
e974ca7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
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." |