Mark-Lasfar commited on
Commit
9c77c5c
·
1 Parent(s): 27b3331

endpoints.py generation.py

Browse files
Files changed (1) hide show
  1. 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