Public Access
maj auto 8
This commit is contained in:
1 parent
b68f475241
commit
1b37ffe94a
2 files changed
+605
-3
No files matched your search
+16
-2
@@ -9,6 +9,7 @@ from modules.ai_local import interroger_local_ollama
|
||||
from modules.ai_engine import executer_requete_ia
|
||||
from modules.ui_components import render_user_msg, render_ai_msg, render_sidebar
|
||||
from modules.logger import log_event
|
||||
from modules.billing_manager import verifier_et_valider_budget
|
||||
|
||||
async def handle_chat_request(request, session):
|
||||
start_time = time.time()
|
||||
@@ -21,6 +22,10 @@ async def handle_chat_request(request, session):
|
||||
|
||||
history = load_history()
|
||||
|
||||
# Identification temporaire de l'utilisateur (en attendant le module de connexion complet)
|
||||
utilisateur_nom = session.get('user', 'xavier')
|
||||
utilisateur_vip = utilisateur_nom.lower() in ["xavier", "céline", "anaëlle", "renan", "audric"]
|
||||
|
||||
# Extraction éphémère en RAM
|
||||
file_summary = []
|
||||
file_names = []
|
||||
@@ -43,7 +48,6 @@ async def handle_chat_request(request, session):
|
||||
Requête : {prompt}"""
|
||||
|
||||
try:
|
||||
# Qwen 2.5 3B reste le meilleur compromis VRAM/Efficience pour votre GTX 1650
|
||||
texte_routeur, _, _, _ = interroger_local_ollama(sec_prompt, "qwen2.5:3b")
|
||||
decision = nettoyer_decision_router(texte_routeur)
|
||||
except Exception:
|
||||
@@ -52,7 +56,7 @@ async def handle_chat_request(request, session):
|
||||
intention = decision.get('intention', 'Analyse')
|
||||
fournisseur = decision.get('fournisseur', 'openrouter_chat').lower()
|
||||
|
||||
# Sécurité Absolue Fichiers -> Gemini (Fenêtre de contexte maximale)
|
||||
# Sécurité Absolue Fichiers -> Gemini
|
||||
if file_names:
|
||||
fournisseur = "gemini"
|
||||
intention += " (Forcé Gemini via Sécurité Fichiers)"
|
||||
@@ -68,6 +72,12 @@ async def handle_chat_request(request, session):
|
||||
if web_text:
|
||||
full_prompt += f"\n\n[Contexte web extrait :\n{web_text}\nUtilise ces informations pour répondre.]"
|
||||
|
||||
# --- VÉRIFICATION FINANCIÈRE PRÉALABLE ---
|
||||
if "openrouter" in fournisseur:
|
||||
modele_estime = "qwen/qwen-2.5-coder-32b-instruct:free" if fournisseur == "openrouter_code" else "meta-llama/llama-3.1-8b-instruct:free"
|
||||
# Déclenche une exception bloquante si le solde est insuffisant ou nécessite une validation
|
||||
verifier_et_valider_budget(full_prompt, modele_estime, utilisateur_vip)
|
||||
|
||||
# Délégation de l'exécution au Moteur d'IA (Cascade)
|
||||
reponse, couleur, fournisseur_nom, modele = executer_requete_ia(fournisseur, full_prompt)
|
||||
|
||||
@@ -90,4 +100,8 @@ async def handle_chat_request(request, session):
|
||||
|
||||
except Exception as e:
|
||||
log_event("CRITICAL", "SYSTEM", f"Erreur critique dans handle_chat_request: {e}")
|
||||
# Capture l'erreur de paiement pour avertir l'utilisateur dans l'UI
|
||||
msg_erreur = str(e)
|
||||
if "VALIDATION_PAIEMENT_REQUISE" in msg_erreur or "SOLDE_INSUFFISANT" in msg_erreur:
|
||||
return Div(f"⚠️ Alerte Financière : {msg_erreur.split('|')[0]}", style="color:orange; background:#331a00; padding:15px; border-radius:10px;")
|
||||
return Div(f"Erreur système : {e}", style="color:red; background:#300; padding:15px; border-radius:10px;")
|
||||
Reference in new issue
Block a user