import gradio as gr import requests import json import os from datetime import datetime from ollama_manager import list_models, start_model, stop_ollama, get_active_model from chat_manager import save_conversation, load_conversation # 📂 Import gestion des conversations # 📌 Configuration serveur OVH Ollama OLLAMA_SERVER = "http://217.182.105.173:11434/api" MODEL_NAME = get_active_model() # Modèle par défaut def chat_with_ollama(user, prompt): """Envoie le prompt à Ollama, récupère la réponse et sauvegarde la conversation.""" if not user: return "⚠️ Veuillez entrer un identifiant utilisateur avant de chatter." if not prompt.strip(): return "⚠️ Veuillez entrer un message avant d’envoyer." data = { "model": MODEL_NAME, "prompt": prompt, "stream": False } headers = {"Content-Type": "application/json"} try: response = requests.post(f"{OLLAMA_SERVER}/generate", json=data, headers=headers) if response.status_code != 200: return f"❌ Erreur HTTP {response.status_code}: {response.text}" response_json = response.json() bot_response = response_json.get("response", "").strip() if bot_response: save_conversation(user, prompt, bot_response) # ✅ Enregistrement de la conversation return bot_response if bot_response else "🤖 Ollama n’a pas généré de réponse." except requests.exceptions.RequestException as e: return f"❌ Erreur de connexion à Ollama : {str(e)}" def update_model(selected_model): """Met à jour le modèle actif après arrêt du précédent.""" global MODEL_NAME stop_ollama() # ✅ On arrête le modèle actif avant d’en lancer un autre result = start_model(selected_model) if "✅" in result: MODEL_NAME = selected_model return result # 🎨 Interface Gradio with gr.Blocks(css="body {background-color: #f8f9fa; font-family: Arial, sans-serif;}") as iface: with gr.Tab("🔧 Configuration Modèles"): gr.Markdown("