projetcbaollm/ollama_manager.py
2025-03-20 11:25:56 +01:00

69 lines
2.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 den 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"