2025-04-30 17:45:17 +02:00

109 lines
4.9 KiB
Python

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é
"stop_sequence": [], # 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
"repeat_penalty": 1.1, # Pénalité de répétition
"num_ctx": 4096, # Longueur du contexte
"num_batch": 512, # Taille du batch
"mmap": True, # Utiliser mmap
"mlock": False, # Utiliser mlock
"num_thread": 4, # Nombre de threads
"num_gpu": 1 # 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()