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 37s
Build and Push Docker Image / build-and-push (push) Successful in 37s
This commit is contained in:
1 parent
c2c35542d7
commit
a6d09f9baf
1 file changed
+16
-26
+16
-26
@@ -5,26 +5,6 @@ import concurrent.futures
|
|||||||
import base64
|
import base64
|
||||||
from modules.logger import log_event
|
from modules.logger import log_event
|
||||||
|
|
||||||
def obtenir_modele_image_hf_dynamique(api_key: str) -> str:
|
|
||||||
"""Interroge le Hub HF pour trouver le modèle image gratuit le plus populaire ET actif (warm)."""
|
|
||||||
url = "https://huggingface.co/api/models"
|
|
||||||
params = {
|
|
||||||
"pipeline_tag": "text-to-image",
|
|
||||||
"sort": "downloads",
|
|
||||||
"direction": -1,
|
|
||||||
"inference": "warm", # GARANTIT que le modèle est gratuit et en ligne
|
|
||||||
"limit": 3
|
|
||||||
}
|
|
||||||
headers = {"Authorization": f"Bearer {api_key}"} if api_key else {}
|
|
||||||
try:
|
|
||||||
resp = requests.get(url, headers=headers, params=params, timeout=5)
|
|
||||||
if resp.status_code == 200 and len(resp.json()) > 0:
|
|
||||||
return resp.json()[0]["id"]
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
# Secours absolu si l'API de liste ne répond pas
|
|
||||||
return "runwayml/stable-diffusion-v1-5"
|
|
||||||
|
|
||||||
def generer_image_cloudflare(prompt: str) -> bytes:
|
def generer_image_cloudflare(prompt: str) -> bytes:
|
||||||
account_id = os.getenv("CLOUDFLARE_ACCOUNT_ID")
|
account_id = os.getenv("CLOUDFLARE_ACCOUNT_ID")
|
||||||
api_token = os.getenv("CLOUDFLARE_API_TOKEN")
|
api_token = os.getenv("CLOUDFLARE_API_TOKEN")
|
||||||
@@ -79,20 +59,30 @@ def generer_image_huggingface(prompt: str) -> tuple:
|
|||||||
api_key = os.getenv("HUGGINGFACE_API_KEY")
|
api_key = os.getenv("HUGGINGFACE_API_KEY")
|
||||||
if not api_key: return None, "Clé API manquante", None
|
if not api_key: return None, "Clé API manquante", None
|
||||||
|
|
||||||
# Sélection dynamique HF + Utilisation de la passerelle de secours réseau (router)
|
# LISTE DE REPLI HF : Modèles garantis sur le tier 100% gratuit
|
||||||
modele_cible = obtenir_modele_image_hf_dynamique(api_key)
|
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}"
|
url = f"https://router.huggingface.co/hf-inference/models/{modele_cible}"
|
||||||
headers = {"Authorization": f"Bearer {api_key}"}
|
headers = {"Authorization": f"Bearer {api_key}"}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
resp = requests.post(url, headers=headers, json={"inputs": prompt}, timeout=120)
|
resp = requests.post(url, headers=headers, json={"inputs": prompt}, timeout=60)
|
||||||
if resp.status_code == 200:
|
if resp.status_code == 200:
|
||||||
return resp.content, "Succès", modele_cible
|
return resp.content, "Succès", modele_cible
|
||||||
else:
|
else:
|
||||||
return None, f"Erreur HTTP {resp.status_code} : {resp.text}", modele_cible
|
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:
|
except Exception as e:
|
||||||
log_event("WARNING", "MEDIA", f"Échec HF : {e}")
|
log_event("WARNING", "MEDIA", f"Exception HF ({modele_cible}) : {str(e)}")
|
||||||
return None, f"Exception système : {str(e)}", "Inconnu"
|
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"
|
||||||
|
|
||||||
def generer_les_images(prompt: str, fichiers: list, premium: bool) -> tuple:
|
def generer_les_images(prompt: str, fichiers: list, premium: bool) -> tuple:
|
||||||
trace = []
|
trace = []
|
||||||
|
|||||||
Reference in new issue
Block a user