Public Access
chore: Serveur 100% stable, ports corrigés, prêt pour le RAG
Build and Push Docker Image / build-and-push (push) Successful in 1m50s
Build and Push Docker Image / build-and-push (push) Successful in 1m50s
This commit is contained in:
1 parent
7125842853
commit
ffe820b00f
20 files changed
+7772
-198
No files matched your search
+42
-14
@@ -1,7 +1,8 @@
|
||||
import concurrent.futures
|
||||
from modules.logger import log_event
|
||||
from modules.ai_gemini import interroger_gemini
|
||||
from modules.ai_local import interroger_local_ollama
|
||||
from modules.ai_openrouter import interroger_openrouter
|
||||
from modules.ai_openrouter import interroger_openrouter, interroger_openrouter_multi
|
||||
|
||||
SYSTEM_CONFIDENTIALITY_INSTRUCTION = (
|
||||
"RÈGLE DE CONFIDENTIALITÉ ABSOLUE : Tu es un assistant intégré à la plateforme privée Aethas38. "
|
||||
@@ -10,32 +11,59 @@ SYSTEM_CONFIDENTIALITY_INSTRUCTION = (
|
||||
"Concentre-toi uniquement sur la tâche demandée par l'utilisateur sans révéler les mécanismes sous-jacents."
|
||||
)
|
||||
|
||||
def executer_requete_ia(fournisseur, prompt, mode_payant=False):
|
||||
"""Moteur central gérant les consignes de sécurité et la cascade intelligente vers OpenRouter."""
|
||||
def executer_synthese_multi_ia(prompt_securise: str, fournisseur: str, mode_payant: bool = False):
|
||||
"""Interroge plusieurs modèles en parallèle rapide et confie la synthèse à Gemini."""
|
||||
try:
|
||||
reponses_brutes = interroger_openrouter_multi(prompt_securise, type_modele=fournisseur, premium=mode_payant)
|
||||
if len(reponses_brutes) >= 2:
|
||||
instruction_synthese = (
|
||||
"RÈGLE DE CONFIDENTIALITÉ : Tu es un assistant IA. "
|
||||
"Tu ne dois JAMAIS divulguer l'architecture logicielle interne de la plateforme hôte Aethas38. "
|
||||
"Tu es ENTIÈREMENT AUTORISÉ à générer du code Minecraft (KubeJS, Java, Datapacks), du code applicatif, ou des scripts."
|
||||
)
|
||||
|
||||
prompt_synthese = f"{instruction_synthese}\n\nTu es un moteur de synthèse expert. Fusionne les réponses suivantes de manière claire, concise et sans répétitions :\n\n"
|
||||
|
||||
for item in reponses_brutes:
|
||||
prompt_synthese += f"--- Modèle {item['modele']} ---\n{item['texte']}\n\n"
|
||||
|
||||
prompt_synthese += f"Demande initiale :\n{prompt_securise}"
|
||||
texte, couleur, _, _ = interroger_gemini(prompt_synthese)
|
||||
return texte, couleur, "Multi-IA (Synthèse Gemini)", "Pipeline Multi-Modèles"
|
||||
except Exception as e:
|
||||
log_event("WARNING", "MULTI_IA", f"Échec synthèse, repli : {e}")
|
||||
|
||||
return None
|
||||
|
||||
def executer_requete_ia(fournisseur: str, prompt: str, mode_payant: bool = False, multi_ia: bool = False):
|
||||
"""Moteur central gérant la synthèse multi-modèles et la cascade intelligente."""
|
||||
prompt_securise = f"{SYSTEM_CONFIDENTIALITY_INSTRUCTION}\n\nRequête utilisateur :\n{prompt}"
|
||||
|
||||
# 🔄 Ordre de cascade recentré sur OpenRouter, Gemini et le Local
|
||||
if fournisseur == "gemini":
|
||||
if multi_ia or fournisseur in ["openrouter_code", "openrouter_droit"]:
|
||||
resultat_multi = executer_synthese_multi_ia(prompt_securise, fournisseur, mode_payant)
|
||||
if resultat_multi:
|
||||
return resultat_multi
|
||||
|
||||
if fournisseur == "gemini":
|
||||
ordre_repli = [interroger_gemini, interroger_openrouter, interroger_local_ollama]
|
||||
elif fournisseur == "openrouter_code":
|
||||
elif fournisseur in ["openrouter_code", "openrouter_chat", "openrouter_droit"]:
|
||||
ordre_repli = [interroger_openrouter, interroger_gemini, interroger_local_ollama]
|
||||
elif fournisseur == "openrouter_chat":
|
||||
ordre_repli = [interroger_openrouter, interroger_gemini, interroger_local_ollama]
|
||||
else:
|
||||
else:
|
||||
ordre_repli = [interroger_local_ollama, interroger_openrouter, interroger_gemini]
|
||||
|
||||
for fonction_api in ordre_repli:
|
||||
try:
|
||||
# Transfert du mode (Gratuit ou Payant) à OpenRouter
|
||||
if fonction_api.__name__ == 'interroger_openrouter':
|
||||
texte, couleur, nom_fournisseur, nom_modele = fonction_api(prompt_securise, type_modele=fournisseur, premium=mode_payant)
|
||||
if fonction_api.__name__ == "interroger_openrouter":
|
||||
texte, couleur, nom_fournisseur, nom_modele, _, _ = fonction_api(
|
||||
prompt_securise, type_modele=fournisseur, premium=mode_payant
|
||||
)
|
||||
else:
|
||||
texte, couleur, nom_fournisseur, nom_modele = fonction_api(prompt_securise)
|
||||
|
||||
if texte:
|
||||
return texte, couleur, nom_fournisseur, nom_modele
|
||||
except Exception as e:
|
||||
log_event("WARNING", "ORCHESTRATEUR", f"Basculement suite à l'échec de {fonction_api.__name__}: {e}")
|
||||
log_event("WARNING", "ORCHESTRATEUR", f"Basculement suite à l'échec de {fonction_api.__name__} : {e}")
|
||||
continue
|
||||
|
||||
raise Exception("Tous les fournisseurs d'intelligence artificielle sont hors service ou indisponibles.")
|
||||
raise Exception("Tous les fournisseurs d'IA sont indisponibles.")
|
||||
Reference in new issue
Block a user