Public Access
Mise a jour media: suppression de la gestion dynamique HF et securisation payant OpenRouter
Build and Push Docker Image / build-and-push (push) Successful in 36s
Build and Push Docker Image / build-and-push (push) Successful in 36s
This commit is contained in:
1 parent
a6d09f9baf
commit
6be6a71264
1 file changed
+3
-49
+3
-49
@@ -37,7 +37,6 @@ def generer_image_openrouter(prompt: str) -> tuple:
|
||||
"X-Title": "Aethas38"
|
||||
}
|
||||
|
||||
# LISTE DE REPLI (Fallback) : Maîtrise des coûts tout en évitant les crashs
|
||||
modeles_payants = ["bytedance-seed/seedream-4.5", "openai/dall-e-3"]
|
||||
|
||||
for modele in modeles_payants:
|
||||
@@ -51,38 +50,9 @@ def generer_image_openrouter(prompt: str) -> tuple:
|
||||
return img_bytes, modele
|
||||
except Exception as e:
|
||||
log_event("WARNING", "MEDIA", f"Échec OpenRouter ({modele}) : {e}")
|
||||
continue # Passe au modèle de secours suivant
|
||||
|
||||
return None, None
|
||||
|
||||
def generer_image_huggingface(prompt: str) -> tuple:
|
||||
api_key = os.getenv("HUGGINGFACE_API_KEY")
|
||||
if not api_key: return None, "Clé API manquante", None
|
||||
|
||||
# LISTE DE REPLI HF : Modèles garantis sur le tier 100% gratuit
|
||||
modeles_gratuits = [
|
||||
"runwayml/stable-diffusion-v1-5", # L'indestructible par défaut
|
||||
"prompthero/openjourney", # Excellent pour un style Midjourney
|
||||
"stabilityai/stable-diffusion-2-1"
|
||||
]
|
||||
|
||||
for modele_cible in modeles_gratuits:
|
||||
url = f"https://router.huggingface.co/hf-inference/models/{modele_cible}"
|
||||
headers = {"Authorization": f"Bearer {api_key}"}
|
||||
|
||||
try:
|
||||
resp = requests.post(url, headers=headers, json={"inputs": prompt}, timeout=60)
|
||||
if resp.status_code == 200:
|
||||
return resp.content, "Succès", modele_cible
|
||||
else:
|
||||
log_event("WARNING", "MEDIA", f"Échec HF ({modele_cible}) : {resp.status_code} - {resp.text}")
|
||||
continue # Le modèle a été rejeté, on tente immédiatement le suivant
|
||||
except Exception as e:
|
||||
log_event("WARNING", "MEDIA", f"Exception HF ({modele_cible}) : {str(e)}")
|
||||
continue
|
||||
|
||||
# Si la boucle se termine sans aucun succès
|
||||
return None, "Tous les modèles gratuits ont été rejetés (410) ou sont indisponibles", "Inconnu"
|
||||
return None, None
|
||||
|
||||
def generer_les_images(prompt: str, fichiers: list, premium: bool) -> tuple:
|
||||
trace = []
|
||||
@@ -95,11 +65,9 @@ def generer_les_images(prompt: str, fichiers: list, premium: bool) -> tuple:
|
||||
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||
future_or = executor.submit(generer_image_openrouter, prompt) if premium else None
|
||||
future_cf = executor.submit(generer_image_cloudflare, prompt)
|
||||
future_hf = executor.submit(generer_image_huggingface, prompt)
|
||||
|
||||
img_or, nom_modele_or = future_or.result() if future_or else (None, None)
|
||||
img_cf = future_cf.result()
|
||||
img_hf, msg_hf, nom_modele_hf = future_hf.result() if future_hf else (None, None, None)
|
||||
|
||||
dossier_media = "/DATA/AppData/MULTI-IA-AETHAS38/RAG/Media"
|
||||
os.makedirs(dossier_media, exist_ok=True)
|
||||
@@ -125,27 +93,13 @@ def generer_les_images(prompt: str, fichiers: list, premium: bool) -> tuple:
|
||||
nom_cf = f"img_cf_{int(time.time())}.png"
|
||||
with open(os.path.join(dossier_media, nom_cf), 'wb') as f: f.write(img_cf)
|
||||
reponse_md += f"### ☁️ Cloudflare Workers AI\n\n"
|
||||
reponse_md += f"**[📥 Télécharger l'image CF](/Media/{nom_cf})**\n\n---\n\n"
|
||||
reponse_md += f"**[📥 Télécharger l'image CF](/Media/{nom_cf})**\n\n"
|
||||
fournisseurs_actifs.append("Cloudflare")
|
||||
trace.append("🟢 CF : Succès")
|
||||
else:
|
||||
trace.append("🔴 CF : Échec")
|
||||
|
||||
# --- Rendu HuggingFace Dynamique ---
|
||||
if img_hf:
|
||||
nom_hf = f"img_hf_{int(time.time())}.png"
|
||||
with open(os.path.join(dossier_media, nom_hf), 'wb') as f: f.write(img_hf)
|
||||
nom_propre = nom_modele_hf.split('/')[-1] if nom_modele_hf else "Générateur"
|
||||
reponse_md += f"### 🤗 HuggingFace ({nom_propre})\n\n"
|
||||
reponse_md += f"**[📥 Télécharger l'image HF](/Media/{nom_hf})**\n\n"
|
||||
fournisseurs_actifs.append("HuggingFace")
|
||||
trace.append(f"🟢 HF ({nom_propre}) : Succès")
|
||||
else:
|
||||
erreur_courte = str(msg_hf)[:50] + "..." if len(str(msg_hf)) > 50 else str(msg_hf)
|
||||
trace.append(f"🔴 HF : Échec ({erreur_courte})")
|
||||
reponse_md += f"### 🤗 HuggingFace\n*⚠️ Échec de la génération : {msg_hf}*\n\n"
|
||||
|
||||
if not img_or and not img_cf and not img_hf:
|
||||
if not img_or and not img_cf:
|
||||
return "*Échec critique : Aucune API n'a pu générer d'image.*", "#ff4444", "Système", "Erreur", trace
|
||||
|
||||
return reponse_md, "#00e5ff", " + ".join(fournisseurs_actifs) if fournisseurs_actifs else "Aucun", "Moteur Média", trace
|
||||
|
||||
Reference in new issue
Block a user