mirror of
https://github.com/Ladebeze66/projetcbaollm.git
synced 2025-12-15 20:06:53 +01:00
69 lines
2.8 KiB
Python
69 lines
2.8 KiB
Python
import requests
|
||
import subprocess
|
||
|
||
# Serveur OVH Ollama
|
||
OLLAMA_SERVER = "http://217.182.105.173:11434/api"
|
||
|
||
def list_models():
|
||
"""Récupère la liste des modèles disponibles sur Ollama."""
|
||
try:
|
||
response = requests.get(f"{OLLAMA_SERVER}/tags")
|
||
if response.status_code == 200:
|
||
models = response.json().get("models", [])
|
||
model_names = [m["name"] for m in models]
|
||
print(f"✅ Modèles disponibles : {model_names}")
|
||
return model_names if model_names else []
|
||
return []
|
||
except requests.exceptions.RequestException as e:
|
||
print(f"❌ Erreur récupération des modèles : {str(e)}")
|
||
return []
|
||
|
||
def start_model(model_name):
|
||
"""Démarre un modèle Ollama uniquement si aucun autre modèle n'est actif."""
|
||
if not model_name:
|
||
return "⚠️ Veuillez sélectionner un modèle."
|
||
|
||
active_model = get_active_model()
|
||
if active_model and active_model != "Aucun modèle actif":
|
||
return f"⚠️ Un modèle est déjà actif : {active_model}. Arrêtez-le avant d’en lancer un autre."
|
||
|
||
try:
|
||
data = {"model": model_name, "prompt": "Test", "stream": False}
|
||
response = requests.post(f"{OLLAMA_SERVER}/generate", json=data)
|
||
|
||
if response.status_code == 200:
|
||
print(f"🚀 Modèle {model_name} lancé avec succès !")
|
||
return f"✅ Modèle {model_name} lancé avec succès !"
|
||
else:
|
||
print(f"❌ Erreur lancement modèle {model_name} : {response.text}")
|
||
return f"❌ Erreur lancement modèle {model_name} : {response.text}"
|
||
|
||
except requests.exceptions.RequestException as e:
|
||
print(f"❌ Erreur connexion OVH : {str(e)}")
|
||
return f"❌ Erreur connexion OVH : {str(e)}"
|
||
|
||
def stop_ollama():
|
||
"""Arrête tous les processus Ollama sur le serveur OVH."""
|
||
try:
|
||
result = subprocess.run(["ssh", "ubuntu@217.182.105.173", "pkill -f ollama"], capture_output=True, text=True)
|
||
if result.returncode == 0:
|
||
return "🛑 Ollama arrêté avec succès."
|
||
else:
|
||
return f"❌ Erreur lors de l'arrêt d'Ollama : {result.stderr}"
|
||
except Exception as e:
|
||
return f"❌ Erreur arrêt Ollama : {str(e)}"
|
||
|
||
def get_active_model():
|
||
"""Récupère le dernier modèle utilisé sur Ollama."""
|
||
try:
|
||
response = requests.get(f"{OLLAMA_SERVER}/tags")
|
||
if response.status_code == 200:
|
||
models = response.json().get("models", [])
|
||
active_model = models[0]["name"] if models else "Aucun modèle actif"
|
||
print(f"📌 Modèle actif : {active_model}")
|
||
return active_model
|
||
return "Aucun modèle actif"
|
||
except requests.exceptions.RequestException as e:
|
||
print(f"❌ Erreur récupération modèle actif : {str(e)}")
|
||
return "❌ Erreur récupération modèle actif"
|