Spaces:
Runtime error
Runtime error
Mark-Lasfar
commited on
Commit
·
9c77c5c
1
Parent(s):
27b3331
endpoints.py generation.py
Browse files- utils/generation.py +24 -6
utils/generation.py
CHANGED
|
@@ -60,25 +60,43 @@ PROVIDER_ENDPOINTS = {
|
|
| 60 |
}
|
| 61 |
|
| 62 |
def check_model_availability(model_name: str, api_key: str) -> tuple[bool, str, str]:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
try:
|
| 64 |
response = requests.get(
|
| 65 |
f"{ROUTER_API_URL}/v1/models/{model_name}",
|
| 66 |
headers={"Authorization": f"Bearer {api_key}"},
|
| 67 |
timeout=30
|
| 68 |
)
|
| 69 |
-
logger.debug(f"Checking model {model_name}: {response.status_code} - {response.text}")
|
| 70 |
if response.status_code == 200:
|
| 71 |
-
logger.info(f"Model {model_name} is available at {API_ENDPOINT}")
|
| 72 |
return True, api_key, API_ENDPOINT
|
| 73 |
elif response.status_code == 429 and BACKUP_HF_TOKEN and api_key != BACKUP_HF_TOKEN:
|
| 74 |
-
logger.warning(f"Rate limit reached for token {api_key}. Switching to backup token.")
|
| 75 |
return check_model_availability(model_name, BACKUP_HF_TOKEN)
|
| 76 |
-
logger.error(f"Model {model_name} not available: {response.status_code} - {response.text}")
|
| 77 |
return False, api_key, API_ENDPOINT
|
| 78 |
except Exception as e:
|
| 79 |
-
logger.error(f"Failed to check model availability for {model_name}: {e}")
|
| 80 |
if BACKUP_HF_TOKEN and api_key != BACKUP_HF_TOKEN:
|
| 81 |
-
logger.warning(f"Retrying with backup token for {model_name}")
|
| 82 |
return check_model_availability(model_name, BACKUP_HF_TOKEN)
|
| 83 |
return False, api_key, API_ENDPOINT
|
| 84 |
|
|
|
|
| 60 |
}
|
| 61 |
|
| 62 |
def check_model_availability(model_name: str, api_key: str) -> tuple[bool, str, str]:
|
| 63 |
+
"""التحقق من توفر النموذج — مع استثناء لنماذج الصور."""
|
| 64 |
+
|
| 65 |
+
# ✅ القائمة الشاملة لنماذج الصور (تحليل أو توليد)
|
| 66 |
+
IMAGE_MODELS = [
|
| 67 |
+
CLIP_BASE_MODEL,
|
| 68 |
+
CLIP_LARGE_MODEL,
|
| 69 |
+
IMAGE_GEN_MODEL,
|
| 70 |
+
SECONDARY_IMAGE_GEN_MODEL
|
| 71 |
+
]
|
| 72 |
+
|
| 73 |
+
# ✅ لو النموذج من نوع صورة — نعتبره متاح دايمًا ونرجع endpoint الصور
|
| 74 |
+
if any(img_model in model_name for img_model in IMAGE_MODELS):
|
| 75 |
+
logger.info(f"✅ Skipping availability check for image model: {model_name}")
|
| 76 |
+
# نرجع endpoint التوليد/التحليل الصحيح
|
| 77 |
+
clean_model_name = model_name.split(":")[0] # عشان نشيل أي provider مثل :novita
|
| 78 |
+
return True, api_key, f"{IMAGE_INFERENCE_API}/{clean_model_name}"
|
| 79 |
+
|
| 80 |
+
# ✅ لو مش صورة — نستخدم الطريقة العادية (للدردشة)
|
| 81 |
try:
|
| 82 |
response = requests.get(
|
| 83 |
f"{ROUTER_API_URL}/v1/models/{model_name}",
|
| 84 |
headers={"Authorization": f"Bearer {api_key}"},
|
| 85 |
timeout=30
|
| 86 |
)
|
| 87 |
+
logger.debug(f"📡 Checking model {model_name}: {response.status_code} - {response.text}")
|
| 88 |
if response.status_code == 200:
|
| 89 |
+
logger.info(f"✅ Model {model_name} is available at {API_ENDPOINT}")
|
| 90 |
return True, api_key, API_ENDPOINT
|
| 91 |
elif response.status_code == 429 and BACKUP_HF_TOKEN and api_key != BACKUP_HF_TOKEN:
|
| 92 |
+
logger.warning(f"⚠️ Rate limit reached for token {api_key}. Switching to backup token.")
|
| 93 |
return check_model_availability(model_name, BACKUP_HF_TOKEN)
|
| 94 |
+
logger.error(f"❌ Model {model_name} not available: {response.status_code} - {response.text}")
|
| 95 |
return False, api_key, API_ENDPOINT
|
| 96 |
except Exception as e:
|
| 97 |
+
logger.error(f"🔥 Failed to check model availability for {model_name}: {e}")
|
| 98 |
if BACKUP_HF_TOKEN and api_key != BACKUP_HF_TOKEN:
|
| 99 |
+
logger.warning(f"🔁 Retrying with backup token for {model_name}")
|
| 100 |
return check_model_availability(model_name, BACKUP_HF_TOKEN)
|
| 101 |
return False, api_key, API_ENDPOINT
|
| 102 |
|