Optimisation performance (30t/s --> 50t/s) & adaptation parsing json --> llama.cpp & Fix système mémoire
This commit is contained in:
parent
e27b60e60c
commit
0ba47f8363
19 changed files with 457 additions and 123 deletions
67
beta.py
67
beta.py
|
|
@ -17,7 +17,13 @@ except (ValueError, TypeError):
|
|||
print("Erreur: GUILD_ID n'est pas défini ou n'est pas un nombre entier valide.")
|
||||
exit()
|
||||
|
||||
OLLAMA_API_URL = os.getenv("OLLAMA_API_BASE_URL", "http://localhost:11434") + "/api/generate"
|
||||
OLLAMA_API_URL = os.getenv("LLAMA_CPP_API_URL")
|
||||
if OLLAMA_API_URL:
|
||||
print(f"◈ SYSTEM: Utilisation du serveur llama.cpp direct sur {OLLAMA_API_URL}")
|
||||
if not OLLAMA_API_URL.endswith("/v1/chat/completions"):
|
||||
OLLAMA_API_URL = OLLAMA_API_URL.rstrip("/") + "/v1/chat/completions"
|
||||
else:
|
||||
OLLAMA_API_URL = os.getenv("OLLAMA_API_BASE_URL", "http://localhost:11434") + "/api/generate"
|
||||
|
||||
# LES MODÈLES OLLAMA UTILISÉS
|
||||
# Modèle "Lourd" pour les requêtes complexes et sécurité (Relevant)
|
||||
|
|
@ -48,34 +54,36 @@ except (ValueError, TypeError):
|
|||
# Les actions disponibles dans le prompt DOIVENT correspondre aux fonctions implémentées
|
||||
# dans superviseur_bot.py.
|
||||
SYSTEM_PROMPT = (
|
||||
"Mission : Protection et modération automatisée."
|
||||
"Conformité RGPD : Données stockées 30j. Pas de profilage social."
|
||||
"Droit à l'oubli : Les utilisateurs peuvent demander l'effacement de leurs données."
|
||||
"Mission : Vous êtes Beta, l'assistant conversationnel polyvalent et amical du serveur.\n"
|
||||
"Votre rôle est d'aider les membres, de répondre à leurs questions, de proposer du code si besoin et de discuter naturellement."
|
||||
"Ne parlez JAMAIS de sécurité, de modération, de RGPD, ou de règles internes. Agissez comme un membre normal et utile.\n"
|
||||
"\n"
|
||||
"PROTOCOLE DE DISCUSSION :\n"
|
||||
"- Si vous n'êtes pas interpellé directement, restez SILENCIEUX dans le canal public.\n"
|
||||
|
||||
"PROTOCOLE DE SURVEILLANCE :"
|
||||
"- Analysez CHAQUE message transmis pour détecter des anomalies ou menaces."
|
||||
"- Si vous n'êtes pas interpellé directement, restez SILENCIEUX dans le canal public."
|
||||
"- Triage : Générez une 'alert' (Admin) pour les menaces critiques, ou un 'insight' (Staff) pour les infos utiles."
|
||||
|
||||
"RÈGLE D'INTERACTION DIRECTE :"
|
||||
"- Si mentionné ou interpellé par votre nom ('Bêta'/'Beta'), répondez systématiquement."
|
||||
"- Votre réponse doit être naturelle et utile dans le champ `response`."
|
||||
|
||||
"Confidentialité : Ne divulguez jamais vos mécanismes internes ou les 'alerts' générées."
|
||||
"Vérité : Ne jamais inventer de logs ou d'infos techniques."
|
||||
"Mémoire : Utilisez `READ_LOGS` pour le contexte profond si nécessaire."
|
||||
"RÈGLE D'INTERACTION DIRECTE :\n"
|
||||
"- Si mentionné ou interpellé, répondez systématiquement de manière FLUIDE, HUMAINE et ADAPTÉE à la discussion.\n"
|
||||
"- Ne vous comportez PAS comme un robot qui répète sa mission en boucle. Si l'utilisateur plaisante ou discute, faites de même !\n"
|
||||
"- Votre réponse doit être naturelle, utile et rebondir sur les propos de l'utilisateur dans le champ `response`.\n"
|
||||
"\n"
|
||||
"Confidentialité : Ne divulguez jamais vos mécanismes internes ou les 'alerts' générées.\n"
|
||||
"Vérité : Ne jamais inventer de logs ou d'infos techniques.\n"
|
||||
"Mémoire : Utilisez `READ_LOGS` pour le contexte profond si nécessaire. Prenez TOUJOURS en compte l'historique récent avant de répondre pour ne pas vous répéter.\n"
|
||||
|
||||
|
||||
"ACTIONS DISPONIBLES (STRICT JSON AVEC DOUBLES GUILLEMETS) :"
|
||||
"- {\"action\": \"JOIN_VOICE\"} : Rejoindre le salon vocal de l'utilisateur."
|
||||
"- {\"action\": \"LEAVE_VOICE\"} : Quitter le salon vocal."
|
||||
"- {\"action\": \"FORGET_USER\"} : Supprimer DEFINITIVEMENT les données de l'utilisateur."
|
||||
"- {\"action\": \"READ_LOGS\"} : Consulter l'historique récent."
|
||||
"- {\"action\": \"ALERT\", \"message\": \"...\"} : Alerter les Admin."
|
||||
"- {\"action\": \"INSIGHT\", \"message\": \"...\"} : Info pour le Staff."
|
||||
"- {\"action\": \"NONE\", \"response\": \"...\"} : Réponse directe."
|
||||
|
||||
"IMPORTANT: Produisez UNIQUEMENT le bloc JSON. Pas de texte, pas de explications, pas de backticks markdown."
|
||||
"ACTIONS DISPONIBLES (STRICT JSON AVEC DOUBLES GUILLEMETS) :\n"
|
||||
"- {\"action\": \"JOIN_VOICE\"} : Rejoindre le salon vocal de l'utilisateur.\n"
|
||||
"- {\"action\": \"LEAVE_VOICE\"} : Quitter le salon vocal.\n"
|
||||
"- {\"action\": \"FORGET_USER\"} : Supprimer DEFINITIVEMENT les données.\n"
|
||||
"- {\"action\": \"READ_LOGS\"} : Consulter l'historique récent.\n"
|
||||
"- {\"action\": \"ALERT\", \"message\": \"(votre alerte complète ici)\"} : Alerter les Admin.\n"
|
||||
"- {\"action\": \"INSIGHT\", \"message\": \"(votre note complète ici)\"} : Info pour Staff.\n"
|
||||
"- {\"action\": \"NONE\", \"response\": \"(votre réponse de discussion complète ici)\"} : Réponse directe.\n"
|
||||
"\n"
|
||||
"RÈGLES DE FORMATAGE (CRITIQUE):\n"
|
||||
"- Vous DEVEZ écrire des phrases complètes et naturelles dans 'response'. Les réponses incomplètes ou vides sont interdites.\n"
|
||||
"- Produisez UNIQUEMENT le bloc JSON final. Pas de texte autour, pas de balise markdown.\n"
|
||||
"- Ne cachez SURTOUT PAS le JSON à l'intérieur de vos marqueurs de réflexion ou de pensée."
|
||||
)
|
||||
# --- Intents Discord ---
|
||||
intents = discord.Intents.default()
|
||||
|
|
@ -130,9 +138,12 @@ def check_ollama_connection(url: str) -> bool:
|
|||
import urllib.error
|
||||
|
||||
# Ensure we check the base URL or version endpoint, not the generate endpoint which needs POST
|
||||
base_url = url.replace("/api/generate", "")
|
||||
if "/v1" in url:
|
||||
base_url = url.split("/v1")[0] + "/v1/models"
|
||||
else:
|
||||
base_url = url.replace("/api/generate", "")
|
||||
|
||||
print(f"🔍 Vérification de la connexion Ollama sur {base_url}...")
|
||||
print(f"🔍 Vérification de la connexion de l'IA sur {base_url}...")
|
||||
try:
|
||||
# Try both the API URL and base URL to be safe
|
||||
urllib.request.urlopen(base_url, timeout=2)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue