import json import os from datetime import datetime def create_default_settings(): """ Crée un fichier de configuration avec les paramètres par défaut organisés selon l'interface OpenUI """ default_settings = { # Paramètres avancés "stream": True, # Streamer la réponse de la conversation "function_calling": None, # Function Calling "seed": 0, # Seed pour la reproductibilité # Séquence d'arrêt "temperature": 0.6, # Température (valeur Ollama) "reasoning_effort": 0.5, # Effort de raisonnement "logit_bias": {}, # Logit Bias # Paramètres Mirostat "mirostat": 0, # 0 = désactivé, 1 = v1, 2 = v2 "mirostat_eta": 0.1, # Taux d'apprentissage "mirostat_tau": 5.0, # Cible de surprise # Paramètres de sampling "top_k": 40, # Limite de tokens considérés "top_p": 0.9, # Valeur Ollama "min_p": 0.05, # Probabilité minimale # Paramètres de pénalité "frequency_penalty": 0.0, # Pénalité de fréquence "presence_penalty": 0.0, # Pénalité de présence "repeat_last_n": 64, # Répéter les N derniers "tfs_z": 1.0, # TFS-Z # Paramètres de contexte "num_keep": 0, # Tokens à conserver "num_predict": 1024, # Nombre max de tokens # Paramètres Ollama spécifiques # Pénalité de répétition "num_ctx": 4096, # Longueur du contexte "num_batch": 512, # Taille du batch # Nombre de GPUs } # Créer le dossier settings s'il n'existe pas os.makedirs('settings', exist_ok=True) # Sauvegarder en format JSON timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"settings/default_parameters_{timestamp}.json" with open(filename, 'w', encoding='utf-8') as f: json.dump(default_settings, f, indent=2, ensure_ascii=False) print(f"✅ Paramètres par défaut sauvegardés dans: {filename}") # Créer aussi une version Python pour import facile py_filename = "settings/default_parameters.py" with open(py_filename, 'w', encoding='utf-8') as f: f.write("# Configuration par défaut pour les modèles\n") f.write(f"# Généré le {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n") f.write("DEFAULT_PARAMETERS = {\n") for key, value in default_settings.items(): f.write(f" '{key}': {repr(value)}, # {get_parameter_description(key)}\n") f.write("}\n") print(f"✅ Module Python créé dans: {py_filename}") def get_parameter_description(key): """ Retourne une description pour chaque paramètre """ descriptions = { "stream": "Activation du streaming des réponses", "function_calling": "Support des appels de fonction", "seed": "Graine pour la reproductibilité", "stop_sequence": "Séquences pour arrêter la génération", "temperature": "Créativité du modèle (0.0-1.0)", "reasoning_effort": "Niveau de détail du raisonnement", "logit_bias": "Biais pour certains tokens", "mirostat": "Algorithme de sampling adaptatif", "mirostat_eta": "Taux d'apprentissage Mirostat", "mirostat_tau": "Cible de surprise Mirostat", "top_k": "Nombre de tokens considérés", "top_p": "Sampling avec noyau dynamique", "min_p": "Probabilité minimale des tokens", "frequency_penalty": "Pénalité pour les répétitions fréquentes", "presence_penalty": "Pénalité pour les tokens déjà utilisés", "repeat_last_n": "Contexte pour la pénalité de répétition", "tfs_z": "Paramètre Z du Tail Free Sampling", "num_keep": "Tokens conservés lors du rafraîchissement", "num_predict": "Limite de tokens générés", "repeat_penalty": "Force de la pénalité de répétition", "num_ctx": "Taille du contexte", "num_batch": "Taille du traitement par lots", "mmap": "Utilisation de la mémoire mappée", "mlock": "Verrouillage en mémoire", "num_thread": "Threads CPU utilisés", "num_gpu": "Nombre de GPUs utilisés" } return descriptions.get(key, "") if __name__ == "__main__": create_default_settings()