Public Access
Modification openrouter image version payante
Build and Push Docker Image / build-and-push (push) Successful in 35s
Build and Push Docker Image / build-and-push (push) Successful in 35s
This commit is contained in:
1 parent
eab18d8324
commit
073c779109
1 file changed
+12
-10
+12
-10
@@ -67,21 +67,21 @@ def generer_image_huggingface(prompt: str) -> tuple:
|
||||
log_event("WARNING", "MEDIA", f"Échec HF : {e}")
|
||||
return None, f"Exception système : {str(e)}"
|
||||
|
||||
def generer_les_images(prompt: str, fichiers: list) -> tuple:
|
||||
def generer_les_images(prompt: str, fichiers: list, premium: bool) -> tuple:
|
||||
trace = []
|
||||
if fichiers:
|
||||
trace.append("🟢 Mode Image-to-Image")
|
||||
return f"*(BETA)* Le mode Image-to-Image est désactivé temporairement. \n\nFichiers : {', '.join(fichiers)}", "#ff9800", "Système", "En dev", trace
|
||||
|
||||
trace.append("🟢 Lancement Text-to-Image (OR + CF + HF)")
|
||||
trace.append(f"🟢 Lancement Text-to-Image (Premium: {premium})")
|
||||
|
||||
# Exécution des TROIS API en parallèle
|
||||
# Exécution en parallèle (OpenRouter n'est lancé QUE si premium est True)
|
||||
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||
future_or = executor.submit(generer_image_openrouter, prompt)
|
||||
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()
|
||||
img_or, nom_modele_or = future_or.result() if future_or else (None, None)
|
||||
img_cf = future_cf.result()
|
||||
img_hf, msg_hf = future_hf.result()
|
||||
|
||||
@@ -92,7 +92,9 @@ def generer_les_images(prompt: str, fichiers: list) -> tuple:
|
||||
fournisseurs_actifs = []
|
||||
|
||||
# Traitement OpenRouter
|
||||
if img_or:
|
||||
if future_or is None:
|
||||
trace.append("⚪ OR : Ignoré (Mode Gratuit)")
|
||||
elif img_or:
|
||||
nom_or = f"img_or_{int(time.time())}.png"
|
||||
with open(os.path.join(dossier_media, nom_or), 'wb') as f: f.write(img_or)
|
||||
reponse_md += f"### 🌐 OpenRouter ({nom_modele_or})\n\n"
|
||||
@@ -113,7 +115,7 @@ def generer_les_images(prompt: str, fichiers: list) -> tuple:
|
||||
else:
|
||||
trace.append("🔴 CF : Échec")
|
||||
|
||||
# Traitement HuggingFace (Avec diagnostic intégré)
|
||||
# Traitement HuggingFace
|
||||
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)
|
||||
@@ -127,14 +129,14 @@ def generer_les_images(prompt: str, fichiers: list) -> tuple:
|
||||
reponse_md += f"### 🤗 HuggingFace (SDXL)\n*⚠️ Échec de la génération : {msg_hf}*\n\n"
|
||||
|
||||
if not img_or and not img_cf and not img_hf:
|
||||
return "*Échec critique : Aucune des 3 API n'a pu générer d'image.*", "#ff4444", "Système", "Erreur", trace
|
||||
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), "Moteur Triple-IA", trace
|
||||
return reponse_md, "#00e5ff", " + ".join(fournisseurs_actifs) if fournisseurs_actifs else "Aucun", "Moteur Média", trace
|
||||
|
||||
def router_media(prompt: str, type_media: str, premium: bool, fichiers: list) -> tuple:
|
||||
trace = [f"🟢 Routage Média : {type_media.upper()}"]
|
||||
if type_media == "image":
|
||||
return generer_les_images(prompt, fichiers)
|
||||
return generer_les_images(prompt, fichiers, premium)
|
||||
elif type_media == "video":
|
||||
return "*La génération vidéo nécessite une API payante.* \n\nPrompt : " + prompt, "#ff4444", "Système", "En attente API", trace
|
||||
return "Type de média non reconnu.", "#333", "Erreur", "Aucun", trace
|
||||
Reference in new issue
Block a user