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}")
|
log_event("WARNING", "MEDIA", f"Échec HF : {e}")
|
||||||
return None, f"Exception système : {str(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 = []
|
trace = []
|
||||||
if fichiers:
|
if fichiers:
|
||||||
trace.append("🟢 Mode Image-to-Image")
|
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
|
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:
|
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_cf = executor.submit(generer_image_cloudflare, prompt)
|
||||||
future_hf = executor.submit(generer_image_huggingface, 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_cf = future_cf.result()
|
||||||
img_hf, msg_hf = future_hf.result()
|
img_hf, msg_hf = future_hf.result()
|
||||||
|
|
||||||
@@ -92,7 +92,9 @@ def generer_les_images(prompt: str, fichiers: list) -> tuple:
|
|||||||
fournisseurs_actifs = []
|
fournisseurs_actifs = []
|
||||||
|
|
||||||
# Traitement OpenRouter
|
# 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"
|
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)
|
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"
|
reponse_md += f"### 🌐 OpenRouter ({nom_modele_or})\n\n"
|
||||||
@@ -113,7 +115,7 @@ def generer_les_images(prompt: str, fichiers: list) -> tuple:
|
|||||||
else:
|
else:
|
||||||
trace.append("🔴 CF : Échec")
|
trace.append("🔴 CF : Échec")
|
||||||
|
|
||||||
# Traitement HuggingFace (Avec diagnostic intégré)
|
# Traitement HuggingFace
|
||||||
if img_hf:
|
if img_hf:
|
||||||
nom_hf = f"img_hf_{int(time.time())}.png"
|
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)
|
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"
|
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:
|
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:
|
def router_media(prompt: str, type_media: str, premium: bool, fichiers: list) -> tuple:
|
||||||
trace = [f"🟢 Routage Média : {type_media.upper()}"]
|
trace = [f"🟢 Routage Média : {type_media.upper()}"]
|
||||||
if type_media == "image":
|
if type_media == "image":
|
||||||
return generer_les_images(prompt, fichiers)
|
return generer_les_images(prompt, fichiers, premium)
|
||||||
elif type_media == "video":
|
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 "*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
|
return "Type de média non reconnu.", "#333", "Erreur", "Aucun", trace
|
||||||
Reference in new issue
Block a user